确定距离点的特定距离和角度的对象的坐标

时间:2012-12-15 19:05:19

标签: math rotation geometry 2d 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. 

这应该澄清yrot是什么。此外,对象可以旋转尽可能多的旋转(&gt; 2 PI),它可以顺时针和逆时针旋转。

Charles Bretana的答案看起来几乎是正确的,我不确定它是否覆盖过度旋转(旋转> 360度)并向不同方向旋转。

1 个答案:

答案 0 :(得分:7)

给定点A(ax,ay),点B的坐标(bx,by),其是在角度t(其中t: - pi < t < + pi表示的方向上距离A的距离d并且是逆时针测量的从正x方向),将是:

 bx = ax + d*cos(t)
 by = ay + d*sin(t)

我不确定这种方法是否符合您的问题,因为您的问题不清楚yrot代表什么角度。但是如果你将yrot简单地确定为观察者的视线与B点与正X轴之间的角度,则上述情况应该有效。

要覆盖过度旋转,只需取yRot并减去2 * Pi,直到结果介于 - Pi和+ Pi

之间