pAn*_*rei 1 math geometry 2d rotation coordinates
在二维空间中,我有一个坐标为x1和y1的物体,它面向一个特定的方向,我们称之为"观察者".在开始时,测量对象旋转的角度为0,因此对象始终面向相同的方向.角度由称为yrot的变量测量.
设D是由sqrt((x1-x2)^ 2 +(y1-y2)^ 2)确定的距离,考虑该距离已知.
现在,知道观察者坐标,D距离和yrot角度我想要确定距观察者对象的脸部距离D的物体的坐标x2,y2.
为了澄清这一点,我将添加一个简单的矩阵来解释我想要的东西:
Z 0 0
0 0 0
0 0 V
V是观察者,V面向Z.我只对V前面的物体(特定距离)感兴趣.换句话说,假设Z与V的距离为D(已知),我只对Z是一个对象感兴趣,而不是其他任何东西.
我相信所需的坐标是x2 = x1(+/-)d*sin yrot; y2 = y1(+/-)d*cos yrot; 我不确定这是否是正确的公式,它似乎不起作用.我也不确定第二个操作数的符号.
如果有任何不清楚的地方,请留下评论,我会尽快回答.
谢谢!
稍后编辑:|| < - 面向观众,yrot = 0; [] < - viewer
= [] <- viewer yrot = 90 degrees.
Run Code Online (Sandbox Code Playgroud)
这应该澄清yrot是什么.此外,对象可以旋转我想要的(> 2 PI),它可以顺时针和逆时针旋转.
Charles Bretana的回答几乎是正确的,我不确定它是否覆盖过度旋转(旋转> 360度)并向不同方向旋转.
给定点A(ax,ay),点B的坐标(bx,by)是在角度t表示的方向上距离A的距离d(其中t: - pi < t < + pi并且从正x方向逆时针测量),是:
bx = ax + d*cos(t)
by = ay + d*sin(t)
Run Code Online (Sandbox Code Playgroud)
我不确定这种方法是否符合您的问题,因为您的问题不清楚角度yrot代表什么.但是,如果您确定yrot观察者的视线与B点与正X轴之间的角度,则上述情况应该起作用.
要覆盖过度旋转,只需取yRot并减去2*Pi,直到结果在-Pi和+ Pi之间