3次元空間上で物体の姿勢を表す指標として、ロール角、ピッチ角、ヨー角(オイラー角)は広く用いられています。これらは航空機やロボットの制御、CGのアニメーションなどで重要です。ここでは、物体の3点の座標からこれらの角度を求める基本的な手法を紹介します。
基準座標系と対象座標系の定義
まず、3点から定義される物体の座標系を決めます。3点をA、B、Cとすると、原点をA、ABベクトルをx軸方向、ACベクトルをxy平面上に投影してy軸を決めます。これで物体固定座標系が設定されます。
回転行列の構築
次に、物体座標系を基準座標系に対して表す回転行列を作成します。各軸ベクトルを正規化し、行列の列ベクトルとして配置すると3×3の回転行列Rが得られます。
R = [x̂ ŷ ẑ] で、x̂, ŷ, ẑ はそれぞれ正規化された軸方向ベクトルです。
オイラー角の抽出
標準的な航空機系(ZYX順)の場合、回転行列Rから以下の式でヨー(ψ)、ピッチ(θ)、ロール(φ)を求めます。
- θ = arcsin(-R[2,0])
- ψ = arctan2(R[1,0], R[0,0])
- φ = arctan2(R[2,1], R[2,2])
arctan2関数を使用することで、角度の範囲と符号を正しく取得できます。
注意点と特異点
ピッチ角が±90°付近になると、ジンバルロックと呼ばれる特異点が発生し、ロールとヨーの角度が不定になります。この場合はクォータニオンを用いた計算が推奨されます。
まとめ
3点の座標からロール・ピッチ・ヨー角を求めるには、座標系を定義して回転行列を構築し、そこからオイラー角を抽出する手順を踏みます。特異点に注意しながら、必要に応じてクォータニオンを併用すると安定した計算が可能です。


コメント