在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)。
问题是这听起来很疯狂,因为你可能会得到很多数字并毁掉一切。
那我该怎么做呢?请以数学方式解释。谢谢!
答案 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。