三維旋轉矩陣 左乘和右乘分析

狼逍豪發表於2019-10-02

突然發現自己被旋轉矩陣的左乘右乘給搞糊塗了,查了不少部落格還是有點暈,這裡自己總結一下:
本文所討論均是基於右手座標系,旋轉也是以正方向旋轉,如圖所示:
右手座標系及旋轉正方向
左乘: 座標系不動,點動,則左乘。【若繞靜座標系(世界座標系)旋轉,則左乘,也是變換矩陣乘座標矩陣;】
右乘: 點不動,座標系動,則右乘。【若是繞動座標系旋轉(自身建立一個座標系),則右乘,也就是座標矩陣乘變換矩陣】

由於三維旋轉可以分解成分別繞三個軸旋轉,然後其實就是二維旋轉了。為了方便,這裡就使用二維旋轉舉例。
比如繞z軸旋轉 theta 角度;
左乘分析如圖所示:
在這裡插入圖片描述
而右乘分析:
則是旋轉座標系;點逆時針旋轉了theta角,其實也就是相當於座標軸也逆時針旋轉theta角。如圖所示:
在這裡插入圖片描述
設點原座標為 [ x , y , z ] [x,y,z] [x,y,z],旋轉後的座標為 [ x ′ , y ′ , z ′ ] [x',y',z'] [x,y,z], 設左乘旋轉矩陣為 R l e f t R_{left} Rleft,右乘旋轉矩陣為 R r i g h t R_{right} Rright
則:
[ x ′ y ′ z ′ ] = R l e f t ∗ [ x y z ] \begin{bmatrix}x'\\y'\\z'\end{bmatrix}={R_{left}}*\begin{bmatrix}x\\y\\z\end{bmatrix} xyz=Rleftxyz
[ x ′ y ′ z ′ ] = [ x y z ] ∗ R r i g h t \begin{bmatrix}x'&y'&z'\end{bmatrix}=\begin{bmatrix}x&y&z\end{bmatrix}*{R_{right}} [xyz]=[xyz]Rright

觀察上面兩圖計算出來的旋轉矩陣還可以得出結論, R l e f t ∗ R r i g h t = I R_{left}*{R_{right}} = I RleftRright=I,這意味這這兩個矩陣是互為逆。
另外, R l e f t ( θ ) = R r i g h t ( − θ ) R_{left}(\theta) = {R_{right}} (-\theta) Rleft(θ)=Rright(θ)
【可以說,如果一個旋轉矩陣左乘表示逆時針旋轉 theta 角,那麼將此矩陣右乘的話則表示順時針旋轉 theta 角】
左乘與右乘是可以變換的。也即是說:

R l e f t 3 ( θ ) ∗ R l e f t 2 ( θ ) ∗ R l e f t 1 ( θ ) ∗ [ x y z ] = R r i g h t 3 ( − θ ) ∗ R r i g h t 2 ( − θ ) ∗ R r i g h t 1 ( − θ ) ∗ [ x y z ] {R_{left_3}}(\theta)*{R_{left_2}}(\theta)*{R_{left_1}}(\theta)*\begin{bmatrix}x\\y\\z\end{bmatrix} = {R_{right_3}}(-\theta)*{R_{right_2}}(-\theta)*{R_{right_1}}(-\theta)*\begin{bmatrix}x\\y\\z\end{bmatrix} Rleft3(θ)Rleft2(θ)Rleft1(θ)xyz=Rright3(θ)Rright2(θ)Rright1(θ)xyz

不過建議只是用一種方法來計算旋轉矩陣,以免混淆。

【如有錯誤,歡迎各位批評指正。】

參考部落格:https://blog.csdn.net/csxiaoshui/article/details/65446125

相關文章