![]() |
OpenCV 5.0.0
Open Source Computer Vision
|
#include <opencv2/core/quaternion.hpp>
公開型 | |
| enum | EulerAnglesType { INT_XYZ , INT_XZY , INT_YXZ , INT_YZX , INT_ZXY , INT_ZYX , INT_XYX , INT_XZX , INT_YXY , INT_YZY , INT_ZXZ , INT_ZYZ , EXT_XYZ , EXT_XZY , EXT_YXZ , EXT_YZX , EXT_ZXY , EXT_ZYX , EXT_XYX , EXT_XZX , EXT_YXY , EXT_YZY , EXT_ZXZ , EXT_ZYZ } |
| オイラー角タイプの列挙型。詳細... | |
オイラー角タイプの列挙型。
回転軸の定義に2つの異なる変換を用いる可能性を考慮しない場合、回転軸の取り得る順序は12通り存在し、それらは2つのグループに分けられる:
3つの基本回転は、外因的 (extrinsic)(静止していると仮定される元の座標系の軸 xyz まわりの回転)か、内因的 (intrinsic)(移動する物体に固定され、各基本回転のたびに向きが変わる回転座標系の軸 XYZ まわりの回転)のいずれかである。
外因的回転と内因的回転が関係する。
オイラー角の定義は次のとおりである。
X-Y-Z の順序での内因的回転では、回転行列 R は次のように計算できる。
\[R =X(\theta_1) Y(\theta_2) Z(\theta_3) \]
X-Y-Z の順序での外因的回転では、回転行列 R は次のように計算できる。
\[R =Z({\theta_3}) Y({\theta_2}) X({\theta_1})\]
ここで
\[X({\theta_1})={\begin{bmatrix}1&0&0\\0&\cos {\theta_1} &-\sin {\theta_1} \\0&\sin {\theta_1} &\cos {\theta_1} \\\end{bmatrix}}, Y({\theta_2})={\begin{bmatrix}\cos \theta_{2}&0&\sin \theta_{2}\\0&1 &0 \\\ -sin \theta_2& 0&\cos \theta_{2} \\\end{bmatrix}}, Z({\theta_3})={\begin{bmatrix}\cos\theta_{3} &-\sin \theta_3&0\\\sin \theta_3 &\cos \theta_3 &0\\0&0&1\\\end{bmatrix}}. \]
この関数は、次の一連の規約に従って設計されている。
\(\theta_1\) と \(\theta_3\) については、有効範囲は (−π, π] である。
\(\theta_2\) については、有効範囲は [−π/2, π/2] または [0, π] である。
テイト・ブライアン角 (Tait–Bryan angles) では、\(\theta_2\) の有効範囲は [−π/2, π/2] である。クォータニオンをオイラー角に変換するとき、\( \theta_2 \in (−π/2, π/2)\) の条件下ではオイラー角の解は一意である。\(\theta_2 = −π/2 \) または \( \theta_2 = π/2\) の場合、解は無限に存在する。この状況の一般的な名称はジンバルロックである。固有オイラー角 (Proper Euler angles) では、\(\theta_2\) の有効範囲は [0, π] である。\( \theta_2 \in (0, π)\) の条件下ではオイラー角の解は一意である。\(\theta_2 =0 \) または \(\theta_2 =π \) の場合、解は無限に存在し、ジンバルロックが発生する。