- 前提読み物:三次元グラフィックスの基本的な幾何学的変換の行列導出
- 三次元空間内の参照系において、任意の座標系の向きは、三つのオイラー角で表現することができます。(三つのオイラー角変換は、現在のオブジェクトの姿勢を記述することができます)
- ピッチ(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° に選択すると、最初の回転と三番目の回転が等価になり、回転表現システム全体が垂直軸周りの回転しかできないように制限され、次元を表現する手段が失われます。
上記の引用は、β が ±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° 回転する姿勢と、z 軸周りに 80° 回転し、y 軸周りに 90° 回転し、x 軸周りに 0° 回転する姿勢が同じであることを表しています。つまり、万向ロックが発生すると、空間内のオブジェクトは特定の姿勢に変換するために複数の異なる回転方法を使用できます。つまり、変換とその結果は一対一の対応ではなく、これはエンジニアリング上ではアニメーションのフレーム補間が非常に奇妙になることを意味します。
