3

我有一个具有 x、y、宽度、高度、X 和 Y 旋转中心(originX,originY)的对象,并且已经成功地计算了这个中心点和触摸点之间的角度

touchAngle = Math.toDegrees(Math.atan2(deltaY, deltaX));

这很好用。

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

什么是使它旋转到触摸点的最短距离的优雅解决方案?

(使用 Java,特别是 Libgdx)

谢谢

4

1 回答 1

3

我以前做过很多这样的计算(非常不同的应用程序,tho)。只需取差值,如果为负数,则加 2pi,如果大于 2pi,则减去 2pi。对 ab 执行此操作,然后对 ba 执行此操作。较小的价值将是要走的路。

于 2012-11-05T02:14:16.180 回答