10

2 つのクォータニオンのドット (または内積) が回転間の角度 (軸回転を含む) であることを理解しています。これにより、内積は四元数超球上の 2 点間の角度に等しくなります。
ただし、実際に内積を計算する方法を見つけることはできません。

どんな助けでも大歓迎です!

現在のコード:

public static float dot(Quaternion left, Quaternion right){
    float angle;

    //compute

    return angle;
}

Quaternion.w、Quaternion.x、Quaternion.y、および Quaternion.z が定義されています。

注: クォータニオンは正規化されていると想定できます。

4

4 に答える 4

15

クォータニオンの内積は、単純に 4D の標準的なユークリッド内積です。

dot = left.x * right.x + left.y * right.y + left.z * right.z + left.w * right.w

次に、探している角度arccosは内積の です (内積は角度ではないことに注意してください) acos(dot)

ただし、2 つのクォータニオン間の相対的な回転を探している場合は、 からq1までq2、相対的なクォータニオンを計算してから、 にq = q1^-1 * q2関連付けられた回転を見つける必要がありますq

于 2014-02-02T17:25:15.883 に答える