计算围绕点执行的旋转

时间:2010-11-03 13:37:20

标签: math geometry

我在2D空间中有两个点,以原点(0,0)为中心。第一个点代表起始位置,第二个代表结束位置。我需要计算两点之间的旋转角度,我的问题是从每个点到(0,0)的hypoteneuse不相等。

有人可以告诉我如何计算两点之间的角度,记住它们可以是相对于(0,0)的任何位置。

非常感谢,

2 个答案:

答案 0 :(得分:1)

假设点1是(x1,y1),点2是(x2,y2)

从X轴到点1的角度相对于(0,0)的切线为y1 / x1

从X轴到点2的角度相对于(0,0)的切线为y2 / x2

取圆弧切线(是计算器上正确的术语?Tan-1)得到每个的实际角度,然后减去得到你正在寻找的答案

答案 1 :(得分:1)

这很容易通过两个向量的归​​一化 inner product 的反余弦来完成。也就是说,给定 u =(u x ,u y )和 v =(v x ,v y ),两者之间的角度由θ= acos( u · v / | 给出你 || v |),其中· v =你 x v x + u y v y 是两者的点积和| | operator是由| u |给出的l 2 法线= sqrt(u x 2 + u y 2 )。这将导致可以应用于其中一个向量的最小旋转,这将使它们成为彼此的线性倍数。因此,您可能需要摆弄θ的符号,以确保如果您有想要开始的方向,那么您将朝着正确的方向前进。