5

3D ゲーム プログラミングでのクォータニオンの使用についてもう少し掘り下げます (はい、マトリックスについては知っていますが、問題はありませんが、常に新しいことを学ばなければなりません)。したがって、このようなオブジェクトを回転させることができますPout = q*Pin*conjug(q)。はクォータニオン、Pin は Vector3 クラスのオブジェクト (このクラスが定義されている何らかのフレームワークを使用しているとしましょう)、conjug(q)共役後の q クォータニオンであり、最後に、Pout取得した新しい Vector3 のオブジェクトです。回転後、最初の Vector3 のオブジェクトPinをある角度アルファ (またはシータ、好きなもの) で回転させます。また、次のように回転を組み合わせる方法があることも知っています。q_final = q2*q1(これは、アルファ 1 の角度で回転し、次にアルファ 2 の角度で回転することを表します)。そして最後に、内積は、たとえば球の 2 つの四元数の間の角度を表します。これは私には明らかです。私の質問は、除算、足し算、引き算などに関するものです。

私の質問は次のとおりです。誰か教えてください。3D プログラミングでそれら (除算、加算、減算 - クォータニオンの操作) は何を表しているのでしょうか? それらは 3D モデルにどのように影響しますか?

ご回答ありがとうございます。

ps ( DarenW、bensiu、Dharmendra、Uwe Keim、Jennis ) がこの質問を理解できない場合は、このトピックから離れてください。誰かが答えを持っているかもしれません。ありがとうございました。

4

1 に答える 1

11

ご存じのとおり、四元数は 4x4 の実数行列で識別できます。クォータニオンの乗算、スカラーの乗算、および加算は、この識別によって保持されます ( http://en.wikipedia.org/wiki/Quaternion#Matrix_representationsを参照)。したがって、2 つのクォータニオンを 4x4 行列に変換し、それらを加算し、元に戻すことは、単純に加算することと同じです。乗算についても同じことが言えます。

四元数 A の四元数 B による除算は、A に B の乗法逆数を掛けることに他なりません。これは、A の行列形式に B の行列形式の逆数を掛けたものと同じです。

剛体の回転 (せん断またはスケーリングなし) は、単位長の四元数で表されることに注意してください。したがって、単位四元数を乗算することで回転を累積できます。この場合の追加はあまり役に立ちません。

最後に、グラフィックでクォータリオンを使用する主な理由は、キー フレームの補間にあります ( Eberly 1999など)。つまり、 k位置での目的の回転がわかっている場合、たとえばスプラインを使用して四元数を補間すると、四元数値の曲線が得られます。各値 C(t) は単位四元数であるため、中間の回転を表します。キー フレームの補間は、すべての 4x4 行列が同種の変換を表すわけではないため、同種の行列では困難です。補間プロセスにより、スケーリング、せん断などが追加される場合があります。

于 2012-10-30T22:07:33.537 に答える