オブジェクトの回転のための単純な四元数の実装があります。同じ軸に沿ったベクトル (つまり、X、Y、または Z 軸に沿った) を中心とした回転を表す 2 つのクォータニオンを作成すると、結果は、それらの大きさの合計による単一の回転と同じになります (つまり、PI/2 で回転してから PI /2 は PI による回転と同じです)。それは良い。
回転軸が軸に揃えられていないとすぐに、連結は予想から発散します (PI/2 で回転してから再び PI/2で回転するのは、PI で回転するのと同じではありません)。それは良いことではありません。
数日間コードを調べた後、何も問題は見られませんでしたので、今質問させてください: クォータニオンがどのように機能するかを根本的に誤解しているのでしょうか? 率直に言って、私は四元数を完全には理解していないので、それらが表す軸角度回転の観点から四元数について推論しています。
そうでない場合は、私のコードを見てもらえますか? :-) すべて (Java で記述されています。Android をターゲットにしています) を GitHub にプッシュしました: https://github.com/wtracy/quaternions Quaternions ディレクトリの下に Eclipse プロジェクトがあります。(何かを読むのに Eclipse は必要ありませんが、便利です。) quaternion クラスは src/ フォルダーの下にあります。test/ フォルダーには、Quaternion クラスを実行するために必要な JUnit テストとクラスのスタブがあります。
コードとテストを簡単に理解できるように最善を尽くしました。自分のコードのバグを見つけるようにインターネットに頼むのはばかげているように感じますが、アイデアはまったくありません。:-P