将物体旋转到另一个物体的一般方法是什么?

时间:2016-09-22 21:12:05

标签: algorithm user-interface language-agnostic

在2D平面中,我有2个具有2个坐标的对象(A和B)。它们的中心是A(xA,yA)和B(xB,yB)(和C(xC,yC)= C(xB,yA),其中AC平行于OX线,BC垂直于AC)。我可以操纵对象的旋转,我可以访问所有常用的数学运算,并且可以使用度和弧度。

我研究过,但我找不到任何详细的解释。

我还尝试使用arccos公式的数学公式如下:

我尝试使用毕达哥拉斯定理计算从A到B(AB)的距离,然后计算A到C(AC),然后计算cos(角度)= AC / AB,所以我需要的最终角度将对象A朝向B旋转是arccos(AC / AB)。

问题是这听起来很疯狂,因为你可能会得到很多数字并毁掉一切。

那我该怎么做呢?请以数学方式解释。谢谢!

2 个答案:

答案 0 :(得分:0)

找到两点之间角度的最简单方法是采用它们的反正切(a.k.a。反正切)。您使用余弦处于正确的轨道上,但切线通过不要求点之间的距离来简化过程。

因此,您需要在您选择的语言中使用atan2函数。 C#Math.Atan2,例如:

double angle = Math.Atan2(B.Y - A.Y, B.X - A.X);

注意:此特定函数以弧度为单位返回角度。

答案 1 :(得分:0)

是否要将对象A朝向B旋转,C像旋转中心一样?

如果是这样的话,你只需要以90度的角度旋转,因为你的三角形是特殊的。但是,如果要在特定中心周围应用特定角度的旋转,则必须使用变换TRT。

您会找到更多解释here