web-dev-qa-db-ja.com

2つのクォータニオン間の「違い」

私はオーガで働いていますが、それは一般的なクォータニオンの問題です。

最初に回転クォータニオンQ1を適用するオブジェクトがあります。後で、最初に別のクォータニオンQ2でオブジェクトを回転させたかのように作成したいと思います。

Q1で既に回転しているオブジェクトを取得するクォータニオンを計算し、Q2を初期/デフォルトの方向に適用するだけであるかのように整列するにはどうすればよいですか?私は(s)lerpingを見ていましたが、これがrotationsではなくorientationsでのみ有効かどうかはわかりません。

20
Mr. Boy

Q1とQ2の逆数が必要なようです。 Q1の逆数で変換すると、オブジェクトが元のフレーム(あなたが言うように最初の方向)に回転して戻り、Q2で変換すると、オブジェクトが新しい方向に回転します。

クォータニオンの標準的な定義では、右から左への乗算順序で変換が適用されるため、これをQ = Q2 * Q1 ^ {-1}として計算する必要があることに注意してください。

31
Jim

このように考えてください

QInitial * QTransition = QFinal

両側にQInitial ^ {-1}を掛けてQTransitionを解きます(^ {-1}は四元数共役です)

QTransition = QFinal * QInitial^{-1}

とても簡単です。

  • @Dan Parkへのメモ-私の数学に同意できない場合は、私の答えに対する回答を投稿してください。数学を変更しないでください。私の知る限り、その通りです。
22
fbl