我在前面博客中提到,当三维坐标点发生旋转时,如果采用矩阵运算就会需要考虑“左乘”和“右乘”。若绕静坐标系(世界坐标系)旋转,则左乘,也是变换矩阵*坐标矩阵;若是绕动坐标系旋转(自身建立一个坐标系),则右乘,也就是坐标矩阵*变换矩阵。
但现实中,我们只是对一个图像、点云进行旋转,则均是左乘实现
举例
对坐标点进行三维绕z轴逆时针旋转60度
如果以逆时针旋转为正,则
左乘
T_Unclockwise =
cos(60°)
-sin(60°)
0
sin(60°)
cos(60°)
0
0
0
1.0000
A
= [10;20;30]
如果以顺时针旋转为正,则
左乘
T_Clockwise =
注意上述旋转
矩阵正负号不同,有些书上坐标变换是右乘,其实质是
A'*inv(T_Unclockwise
(60°)),还是逆时针为正,这里不建议写成右乘
T_Clockwise(-60°)
*A =
T_Unclockwise
(60°)
*A %%逆时针旋转60度
T_Clockwise(60°)=
inv(T_Unclockwise
(60°)),互逆的,仅限旋转
矩阵,加入平移和缩放参数后的变换
矩阵不适用。
二维也是如上所述!!
二维逆时针为正
T_Unclockwise =
T_Unclockwise =
二维顺时针为正
T_Clockwise =
cos()
sin()
-sin()
cos()
建议取逆时针方向正(符号右手定则,与其它理论一致),如果遇到中心不在原点处,则先将方程移至原点,再进行旋转,然后移回原中心。右乘用于不同坐标系的变换,如串联机器人,DH模型。
建议取逆时针方向正(符号右手定则,与其它理论一致),如果遇到中心不在原点处,则先将方程移至原点,再进行旋转,然后移回原中心。右乘用于不同坐标系的变换,如串联机器人,DH模型。