ぷろみん

プログラミング的な内容を扱ってます

オイラー角と空間座標系

概要

複数の環境間での回転のインポート、エクスポートについて調べていたのですが、全然進まないので最小限のアウトプットを目指したメモです。

オイラー

説明はWikipediaに投げます。

重要なのは単にオイラー角といっても12通りの表現方法があることです。

今回の対象環境の1つであるUnityはz-x-y系を採用しています。

Z 座標を軸に z 度、X 座標を軸に x 度、Y 座標を軸に y 度 (順番はこのとおり) 回転する回転

オイラー角については上記座標系とCW(clockwise, 時計回り)とCCW(counterclockwise, 反時計回り)を合わせる事で他空間に同じ回転を適用することができます。
90度回転させると時計回りに回転するので、UnityではCWを使っているようです。

Tait–Bryan angles

航空力学で採用されている形式、 正面にX軸、右側にY軸、下方向にZ軸にそれぞれの正の値が割り当てられます。回転方向はCW。

オイラー角と違って軸の定義まで含まれています。
そして、ここまで厳密ではないと現実世界を定義できないのでジャイロセンサ等の出力はこの形式であることが多いです。

Quaternion

Quaternion Conventions: Hamilton and JPL

QuaternionにはHamiltonとJPL形式があるけど混同したり意識せずに混ぜて使ってしまっていることが多いよって話です。

Convert from JPL to Hamilton

Quaternionからオイラー角への変換

Sensor Fusion

訳語が何になるかは分かりませんが、Sensor Fusionで検索すると参考になるものが色々出てきます。
Sensor Fusion · jherico/OculusRiftHacking Wiki · GitHub

参考

Conversion between quaternions and Euler angles - Wikipedia