1

私が抱えている問題は次のとおりです。宇宙船を上(ピッチ)に回転させ、ピッチ内で完全に90度回転させると、まっすぐに立ち、y軸を中心にもう一度回転させてみると、モデルはロールインと同じように回転します。開始位置。

さて、私の質問ですが、どうすればこれを修正できますか?モデルを回転させたいときに常に回転させたり、ピッチングさせたいときに常にピッチングしたりするようにするにはどうすればよいですか。現在のモデルではなく、

私はc++とopenglを使用しています。

4

1 に答える 1

1

すでに指摘したように、オイラー角を使用して回転を実行する方法の結果として、ジンバル ロックが表示されます。

ただし、クォータニオンだけが解決策ではありません。代わりに、オブジェクトの現在の向きを表す 4x4 マトリックスを作成し、向きを変えるたびに相対回転を適用することができます。クォータニオンの場合は 4 つではなく、オブジェクトごとに 16 の値を追跡する必要があるため、完全ではありません。また、浮動小数点の丸め誤差に対処するには、定期的に正規化する必要があるため、方向行列が次のようにならないようにする必要があります。スキュー変換。一方、概念的にはシンプルで、すぐに組み立てることができます。

于 2012-08-24T19:05:49.023 に答える