![]() |
OpenCV 4.12.0
開源計算機視覺
|
#include <opencv2/core/quaternion.hpp>
公共型別 | |
| 列舉 | 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 } |
| 尤拉角型別的列舉。更多... | |
尤拉角型別的列舉。
如果不考慮使用兩種不同的轉換來定義旋轉軸的可能性,則存在十二種可能的旋轉軸序列,分為兩組
三個基本旋轉可能是外在的(繞原始座標系的軸 *xyz* 旋轉,假設原始座標系保持靜止),或內在的(繞旋轉座標系的軸 *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 角,\(\theta_2\) 的有效範圍是 [−π/2, π/2]。當將四元數轉換為尤拉角時,尤拉角的解在\( \theta_2 \in (−π/2, π/2)\) 的條件下是唯一的。如果\(\theta_2 = −π/2 \) 或 \( \theta_2 = π/2\),則存在無限個解。這種情況的通用名稱是萬向鎖。對於真尤拉角,\(\theta_2\) 的有效範圍是 [0, π]。尤拉角的解在\( \theta_2 \in (0, π)\) 的條件下是唯一的。如果\(\theta_2 =0 \) 或 \(\theta_2 =π \),則存在無限個解,並且會發生萬向鎖。