- 前提読み物:三次元図形の基本的な幾何学的変換の行列導出
- 三次元空間内の参照系において、どの座標系の向きも、三つのオイラー角で表現することができます。(三つのオイラー角変換は、現在のオブジェクトの姿勢を記述することができます)
- ピッチ(z 軸回りの回転)、ヨー(y 軸回りの回転)、ロール(x 軸回りの回転)については、理解しておきましょう
- 線形変換は交換法則を満たさないため、回転の順序の違いが結果に影響を与えます。以下では、ダイナミックオイラー角(z-y-x)で分析します
ダイナミックオイラー角#
[三次元図形の基本的な幾何学的変換の行列導出](https://github.com/IWSR/BLOG/issues/2) で、X、Y、Z 軸周りの回転行列が導出されました。
Rzγ=cosγsinγ00−sinγcosγ0000100001
Ryβ=cosβ0−sinβ00100sinβ0cosβ00001
Rxα=10000cosαsinα00−sinαcosα00001
したがって、ダイナミックオイラー角の変換順序に従って、変換行列 R=RxαRyβRzγ を得ることができます。
R=RxαRyβRzγ=cosβcosγcosβsinγ−sinβ0−cosαsinγ+sinαsinβcosγcosαcosγ+sinαsinβsinγsinαcosβ0sinαsinγ+cosαsinβcosγ−sinαcosγ+cosαsinβsinγcosαcosβ00001
ジンバルロック#
ピッチ角を ±90° に選択すると、最初の回転と 3 番目の回転が等価になり、回転表現システム全体が垂直軸の周りでしか回転できないように制限され、次元を表すものが 1 つ失われます。
上記の引用は、β が ±90° の場合、x 軸回りの回転と z 軸回りの回転が結果的に等価になることを意味します。
ジンバルロックの問題は、変換行列 R を使用して直感的に説明すると非常にわかりやすいです。以下のように、β = 90° を方程式に代入して簡略化します。
R=RxαRy90°Rzγ=10000cosαsinα00−sinαcosα0000100−10010010000001cosγsinγ00−sinγcosγ0000100001=0sin(α+γ)−cos(α+γ)00cos(α+γ)sin(α+γ)010000001
α + γ が変換行列 R に影響を与えることが非常に明らかであり、幾何学的には x 軸周りの回転表現が z 軸周りの回転と等価であることが示されます。例を挙げると、
Rx30°Ry90°Rz50°=Rx0°Ry90°Rz80°
ここで強調する必要がありますが、この記事では回転順序は z-y-x であり、上記の例はオブジェクトが z 軸周りに 80° 回転し、y 軸周りに 90° 回転し、x 軸周りに 0° 回転する姿勢と同じであることを表しています。つまり、万向ロックが発生すると、空間内のオブジェクトは特定の姿勢に変換するために複数の異なる回転方法を使用できます。つまり、変換とその結果は一対一ではなく、エンジニアリング上の表現では、アニメーションのフレーム間の挿入が非常に奇妙になります。
