2

OpenGLでGlobeオブジェクトを描いて指タッチで回転できるのですが、xとyの差を利用して回転しているのでうまく動かない場合があります

    Rotation3D rot = sphere.currentRotation;
rot.x += diffX ;
rot.y += diffY ;
rot.z += 10 ;
sphere.currentRotation = rot; 

指を右上から左下に移動すると、うまく機能しません。

何か案は ?

ありがとうピーター・ガブラ

4

2 に答える 2

0

オイラー角を使用している場合:オイラー角を使用して回転をモデル化しないことをお勧めします。代わりにクォータニオンを使用してください。コードが複雑になるように思えるかもしれませんが、クォータニオンを使用すると回転がうまく機能します。ここにいくつかの利点があります:

  • ユーザーの操作を現在の回転状態に適用するのは非常に簡単です
  • ジンバルロック問題なし
  • 回転を繰り返した後のマトリックスドリフト調整は不要
  • 回転を簡単に補間できます

Apple が使用する Quaternion タイプを提供していることに注意してください: GLKQuaternion。独自の Quaternion クラスを記述する必要はありません。

以下も参照してください。

于 2013-06-05T10:49:33.860 に答える
0
于 2013-06-05T09:49:56.320 に答える