通常は 4 つの値で記述されるように、クォータニオン回転がありますa b c d
。オブジェクトを正面から見るように x 軸を変換するとします。今度はこの回転を変更したいので、オブジェクトを後ろから見ます。基本的には視点を前から後ろに変えたいのですが、この回転を使ってそれを行います。
反対の回転はどのように計算できますか?
通常は 4 つの値で記述されるように、クォータニオン回転がありますa b c d
。オブジェクトを正面から見るように x 軸を変換するとします。今度はこの回転を変更したいので、オブジェクトを後ろから見ます。基本的には視点を前から後ろに変えたいのですが、この回転を使ってそれを行います。
反対の回転はどのように計算できますか?
ウィキペディアのページから学ぶと、 z軸を中心に 180° 回転させたい場合、対応するクォータニオン回転は次のようになります。
0 0 0 1
ここで重要なのは、(w,x,y,z) = (a,b,c,d) という数式です。
実際、cos(90°) = 0 および sin(90°) = 1 なので、alpha を 180° に、uを (0, 0, 1) に置き換えると、(0, 0, 0, 1) が得られます。
編集:クリスチャンが指摘したように、上方向はzである必要はありませんが、任意の単位ベクトルu = (x,y,z) である可能性があります(そうでない場合は、ノルムで割って正規化します)。その場合、対応する 180° クォータリオン回転は次のようになります。
0 x y z
オブジェクトの周りを移動するためにこの回転を適用するには、カメラの方向ベクトル と の位置があるとしますc_pos
。c_dir
次に、単純に (左) で共役しq = (0 x y z)
、それに応じてカメラの位置を移動します。何かのようなもの
c_dir = q * c_dir * q^-1
c_pos = 2 * o_pos - c_pos
はo_pos
オブジェクトの位置であり、c_dir
実数部が 0 の四元数に変換する必要があります。
私の場合、これを助けて..
元の quat (xyzw) 反対向きの quat (y -xw -z)