ユーザーのマウス入力から作成された小さな変更でクォータニオンを伝播しています。ここでは、X 軸で追加された回転用のクォータニオンと Y 軸用のクォータニオンを作成し、これらの回転を 1 つのクォータニオンに結合します。これらの変更をカメラのクォータニオンに追加 (追加) し続け、グリンバルロックのないカメラを作成しました (これはまだ狂ったように回転しています :S)
カメラの回転を開始した瞬間、回転行列が拡大縮小し始め、制御不能になります。フレームごとにカメラのクォータニオンを正規化するとすべてが正常に機能しますが、すべてのフレームを正規化する必要はありませんよね? これが数値のずれだとすれば、すぐには見えないのではないでしょうか?
この質問では:四元数と正規化
David Hammen は次のコメントを投稿しました。
正規化は、クォータニオンをユニット 3 球体にドラッグして戻すための手間です。四元数が多様体からずれてしまう理由は、そのオイラー ステップが数学的にある意味で無効だからです。単位四元数は群であり、代数ではありません。単位四元数を使用しないことも無効です。これで、so(3) にチャートがなくなりました。それを正しく行うと (たとえば、リー群の積分法)、四元数はほとんど多様体にとどまります。時々正規化する必要があるかもしれません
オイラー回転から 2 つのクォータニオンを作成しているため、これが劇的な回転エラーの原因である可能性がありますか?
オイラー回転から生成されたクォータニオンは、使用前に常に正規化する必要がありますか?