3

XとY(originX、originY)の回転の中心がx、y、幅、高さのオブジェクトがあり、この中心点とタッチポイントの間の角度を次のように計算できました。

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

これは非常にうまく機能します。

現在、角度が現在の角度よりも大きいかどうかを確認し、回転を追加し、小さい場合は回転を削除することで、オブジェクトをこのタッチポイントに向かって回転させようとしています。タッチポイントが0/360の境界を越えると、非常に大きな回転を行うことを意味する場合でも、オブジェクトが間違った方向に回転し始めるため、これは間違っていることを私は知っています。

タッチポイントまで最短距離で回転させるためのエレガントなソリューションは何でしょうか?

(Java、特にLibgdxを使用)

ありがとう

4

1 に答える 1

3

私は以前にこれらの計算をたくさん行ったことがあります(非常に異なるアプリケーションです)。差を取り、それが負の場合は 2pi を追加し、2pi より大きい場合は 2pi を引きます。それを ab に対して行い、次に ba に対して行います。値が小さいほど、進むべき道になります。

于 2012-11-05T02:14:16.180 に答える