【CV】三維空間的旋轉問題(Rotation in 3D space)
Yaw, Pitch, Roll 角
以飛機的動作為例,
- 左右擺動是 Yaw 角 – 偏航角
- 上下襬動是 Pitch 角 – 俯仰角
- 繞軸擺動是 Roll 角 – 翻滾角
對於相機座標系和世界座標系的轉換來看,
, 可以認為 roll axis 是 x-axis, pitch axis 是 y -axis, yaw 是 z-axis. roll-pitch-yaw 角可以按照繞 x-y-z 軸的旋轉大小依次確定.
旋轉矩陣
[ x ′ y ′ z ′ 1 ] = R ⋅ [ x y z 1 ] \begin{bmatrix}x'\\ y'\\ z'\\ 1\end{bmatrix}=R\cdot \begin{bmatrix}x\\ y\\ z\\ 1\end{bmatrix} ⎣⎢⎢⎡x′y′z′1⎦⎥⎥⎤=R⋅⎣⎢⎢⎡xyz1⎦⎥⎥⎤
繞x,y,或z軸旋轉θ的矩陣為:
R x ( θ ) = [ 1 0 0 0 cos θ − sin θ 0 sin θ cos θ ] R_{x}(\theta)=\begin{bmatrix}1 & 0 & 0\\ 0 & \cos\theta & -\sin\theta\\ 0 & \sin\theta & \cos\theta\end{bmatrix} Rx(θ)=⎣⎡1000cosθsinθ0−sinθcosθ⎦⎤
R y ( θ ) = [ cos θ 0 − sin θ 0 1 0 sin θ 0 cos θ ] R_{y}(\theta)=\begin{bmatrix}\cos\theta & 0 & -\sin\theta\\ 0 & 1 & 0\\ \sin\theta & 0 & \cos\theta\end{bmatrix} Ry(θ)=⎣⎡cosθ0sinθ010−sinθ0cosθ⎦⎤
R z ( θ ) = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] R_{z}(\theta)=\begin{bmatrix}\cos\theta & -\sin\theta & 0\\ \sin\theta & \cos\theta & 0\\ 0 & 0 & 1\end{bmatrix} Rz(θ)=⎣⎡cosθsinθ0−sinθcosθ0001⎦⎤
而對於繞任意軸旋轉,則需要先把這個軸旋轉至與一條座標軸重合,再繞座標軸旋轉,最後再把軸按原路旋轉回去,即
R x ( − p ) ⋅ R y ( − q ) ⋅ R z ( θ ) ⋅ R y ( q ) ⋅ R x ( p ) R_{x}(-p)\cdot R_{y}(-q)\cdot R_{z}(\theta)\cdot R_{y}(q)\cdot R_{x}(p) Rx(−p)⋅Ry(−q)⋅Rz(θ)⋅Ry(q)⋅Rx(p),其中
- 繞x軸旋轉角度p使指定的旋轉軸在xz平面上
- 繞y軸旋轉角度q使指定的旋轉軸與z軸重合
- 繞z軸旋轉角度θ
- 繞y軸旋轉角度-q
- 繞x軸旋轉角度-p
其中,p和q的值需要用i,j,k計算出來。
注意,右邊的旋轉先與齊次座標運算。
尤拉角(Euler angles)
旋轉矩陣乘以點P的齊次座標,得到旋轉後的點P’:
上圖中
- xyz 座標系是固定的參考座標系,圖中藍線
- XYZ 座標系是依附在剛體上的運動座標系。圖中紅線
- xy 平面與 XY 平面的交線,叫做交軌線,記作 N,這條線穿過兩個座標系的原點並且垂直於 zZ 平面。圖中綠線
尤拉角由以上元素給出
- α ( o r   φ ) \alpha (or \, \varphi) α(orφ) x 軸與 N 軸的角度,代表繞z 軸旋轉
- β ( o r   θ ) \beta (or \, \theta) β(orθ) z 軸與 Z 軸的角度,代表繞 x 軸旋轉
- γ ( o r   ψ ) \gamma (or \, \psi) γ(orψ) N軸與X軸的角度,代表繞 Z 軸的旋轉
如果 β \beta β是0, 就沒有繞N軸的旋轉. 因此Z軸與z軸重合, α \alpha α 和 γ \gamma γ 代表繞同一個軸(z)的旋轉, 最終的方向可以通過一個單一的繞z軸的旋轉獲得,這個旋轉角度等於 α + γ \alpha + \gamma α+γ.
三個尤拉角的定義是明確的固定的,但是順序卻是依個人喜好定的。
若按照上面的 zxZ 的順序,
- 繞z軸旋轉α,使x軸與N軸重合,N軸是旋轉前後兩個座標系x-y平面的交線
- 繞x軸(也就是N軸)旋轉β,使z軸與旋轉後的z軸重合
- 繞z軸旋轉γ,使座標系與旋轉後的完全重合
R z ( α ) ⋅ R x ( β ) ⋅ R z ( γ ) R_{z}(α)\cdot R_{x}(β)\cdot R_{z}(γ) Rz(α)⋅Rx(β)⋅Rz(γ)
注意與旋轉矩陣不同,在尤拉角中最先進行的旋轉在最左邊。因為旋轉矩陣我們始終基於絕對參考系,而對於尤拉角,我們每一次旋轉都是基於剛體座標系。
Ref
相關文章
- 三維空間的旋轉
- 三維空間中物體兩次旋轉之間的連續旋轉矩陣計算矩陣
- 三維空間座標系變換-旋轉矩陣矩陣
- 剛體在三維空間的旋轉-幾種表達方式
- 三維座標系旋轉——旋轉矩陣到旋轉角之間的換算矩陣
- 三維空間變換中旋轉矩陣左乘與右乘的區別矩陣
- 32.qt quick-模仿QQ登入介面實現3D旋轉(Rotation、Flipable)QTUI3D
- 空間旋轉矩陣怎麼表示矩陣
- 三維旋轉矩陣推導矩陣
- 沒有磁碟空間 No space left on devicedev
- 大角度非迭代的空間座標旋轉C#實現C#
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- 小程式視訊旋轉的相關問題
- 3D旋轉矩陣的推導3D矩陣
- 單像空間後方交會計算旋轉矩陣矩陣
- 三維旋轉矩陣 左乘和右乘分析矩陣
- dbms_space(分析段增長和空間的需求)
- Matlab三維空間座標圖繪製Matlab
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- 3D遊戲-作業三-空間與運動3D遊戲
- RDSforSQLserver空間問題排查彙總SQLServer
- Space Capital:地理空間情報手冊報告API
- 二維旋轉矩陣推導矩陣
- 快影app怎麼旋轉影片?快影影片瞬間旋轉的方法教程APP
- 實景三維賦能國土空間智慧治理
- Numpy 高維空間中的軸
- 尤拉角和旋轉矩陣之間的轉換矩陣
- Jtti:如何解決空間ping值低的問題?Jtti
- 為什麼問題空間與解決方案空間如此重要? - Nikhil Gupta
- 三維旋轉矩陣的推導過程(以右手座標系為例)矩陣
- Space Capital:2024年Q2空間投資報告API
- Linux磁碟空間佔滿問題快速排雷Linux
- webgl濾鏡--旋轉的三原色Web
- CSS3立方體3D旋轉效果CSSS33D
- 基於人工智慧的三維感測網空間定位技術人工智慧
- 作用域(scope), 定義空間(declaration space) 和 生存期(lifetime)
- ASM磁碟空間假裝耗盡,ORA-15041: diskgroup space exhaustedASM
- WebGIS 利用 WebGL 在 MapboxGL 上渲染 DEM 三維空間資料Web