突然發現自己被旋轉矩陣的左乘右乘給搞糊塗了,查了不少博客還是有點暈,這裏自己總結一下:
本文所討論均是基於右手座標系,旋轉也是以正方向旋轉,如圖所示:
左乘: 座標系不動,點動,則左乘。【若繞靜座標系(世界座標系)旋轉,則左乘,也是變換矩陣乘座標矩陣;】
右乘: 點不動,座標系動,則右乘。【若是繞動座標系旋轉(自身建立一個座標系),則右乘,也就是座標矩陣乘變換矩陣】
由於三維旋轉可以分解成分別繞三個軸旋轉,然後其實就是二維旋轉了。爲了方便,這裏就使用二維旋轉舉例。
比如繞z軸旋轉 theta 角度;
左乘分析如圖所示:
而右乘分析:
則是旋轉座標系;點逆時針旋轉了theta角,其實也就是相當於座標軸也逆時針旋轉theta角。如圖所示:
設點原座標爲[x,y,z],旋轉後的座標爲[x′,y′,z′], 設左乘旋轉矩陣爲Rleft,右乘旋轉矩陣爲Rright,
則:
⎣⎡x′y′z′⎦⎤=Rleft∗⎣⎡xyz⎦⎤
[x′y′z′]=[xyz]∗Rright
觀察上面兩圖計算出來的旋轉矩陣還可以得出結論,Rleft∗Rright=I,這意味這這兩個矩陣是互爲逆。
另外,Rleft(θ)=Rright(−θ) 。
【可以說,如果一個旋轉矩陣左乘表示逆時針旋轉 theta 角,那麼將此矩陣右乘的話則表示順時針旋轉 theta 角】
左乘與右乘是可以變換的。也即是說:
Rleft3(θ)∗Rleft2(θ)∗Rleft1(θ)∗⎣⎡xyz⎦⎤=Rright3(−θ)∗Rright2(−θ)∗Rright1(−θ)∗⎣⎡xyz⎦⎤
不過建議只是用一種方法來計算旋轉矩陣,以免混淆。
【如有錯誤,歡迎各位批評指正。】
參考博客:https://blog.csdn.net/csxiaoshui/article/details/65446125