Java 向接触点旋转对象

Java 向接触点旋转对象,java,rotation,libgdx,Java,Rotation,Libgdx,我有一个具有x,y,宽度,高度,x和y旋转中心(originX,originY)的对象,并使用 touchAngle = Math.toDegrees(Math.atan2(deltaY, deltaX)); 这很有效 我现在试图通过简单地检查角度是否大于其当前角度,添加一些旋转,如果较小,则删除一些旋转,从而将对象旋转到此接触点。我知道这是错误的,因为当接触点穿过0/360边界时,对象开始以错误的方式旋转,即使这意味着进行非常大的旋转 什么是一个优雅的解决方案,使其旋转到接触点的距离最短 (

我有一个具有x,y,宽度,高度,x和y旋转中心(originX,originY)的对象,并使用

touchAngle = Math.toDegrees(Math.atan2(deltaY, deltaX));
这很有效

我现在试图通过简单地检查角度是否大于其当前角度,添加一些旋转,如果较小,则删除一些旋转,从而将对象旋转到此接触点。我知道这是错误的,因为当接触点穿过0/360边界时,对象开始以错误的方式旋转,即使这意味着进行非常大的旋转

什么是一个优雅的解决方案,使其旋转到接触点的距离最短

(使用Java,特别是Libgdx)


谢谢

我以前做过很多这样的计算(非常不同的应用,tho)。取差,如果是负数,加上2pi,然后如果大于2pi,减去2pi。为a-b这样做,然后为b-a这样做。“接触点”是什么?这是一个好的触摸还是一个坏的触摸?这只是鼠标/手指被点击/触摸的点。这始终是一个很好的触球,这一点和物体中心之间的角度都是正确的,检查过了-我玩得很开心。;)希望你能得到一个好答案。:)这是2π线交叉的原因,我对此有异议。我想如果我检查两个角度之间的差值是否小于π,就不会有问题,只需沿最短的方向移动。但是,当计算出的差值大于π时,可能会更麻烦。克里斯,谢谢你的回答。有道理