突然发现自己被旋转矩阵的左乘右乘给搞糊涂了,查了不少博客还是有点晕,这里自己总结一下:
本文所讨论均是基于右手座标系,旋转也是以正方向旋转,如图所示:
左乘: 座标系不动,点动,则左乘。【若绕静座标系(世界座标系)旋转,则左乘,也是变换矩阵乘座标矩阵;】
右乘: 点不动,座标系动,则右乘。【若是绕动座标系旋转(自身建立一个座标系),则右乘,也就是座标矩阵乘变换矩阵】
由于三维旋转可以分解成分别绕三个轴旋转,然后其实就是二维旋转了。为了方便,这里就使用二维旋转举例。
比如绕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