• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
搬运工_阿壮
博客园    首页    新随笔    联系   管理    订阅  订阅

三维变换矩阵左乘和右乘分析

我在前面博客中提到,当三维坐标点发生旋转时,如果采用矩阵运算就会需要考虑“左乘”和“右乘”。若绕静坐标系(世界坐标系)旋转,则左乘,也是变换矩阵*坐标矩阵;若是绕动坐标系旋转(自身建立一个坐标系),则右乘,也就是坐标矩阵*变换矩阵。

但现实中,我们只是对一个图像、点云进行旋转,则均是左乘实现

举例
对坐标点进行三维绕z轴逆时针旋转60度
如果以逆时针旋转为正,则左乘
T_Unclockwise = 
     cos(60°)   -sin(60°)         0
     sin(60°)     cos(60°)        0
             0             0         1.0000
 
A = [10;20;30]
 
如果以顺时针旋转为正,则左乘
T_Clockwise =
     cos(-60°)   sin(-60°)          0
    -sin(-60°)    cos(-60°)         0
              0             0          1.0000
注意上述旋转矩阵正负号不同,有些书上坐标变换是右乘,其实质是A'*inv(T_Unclockwise(60°)),还是逆时针为正,这里不建议写成右乘
 
T_Clockwise(-60°) *A = T_Unclockwise(60°) *A  %%逆时针旋转60度
 
 ans =
   -12.3200
     1.3400
    30.0000
 
T_Clockwise(60°)= inv(T_Unclockwise(60°)),互逆的,仅限旋转矩阵,加入平移和缩放参数后的变换矩阵不适用。
 
二维也是如上所述!!
二维逆时针为正
T_Unclockwise =
   cos()   -sin()
   sin()    cos() 
 
二维顺时针为正 
T_Clockwise =
   cos()   sin()
   -sin()    cos() 

建议取逆时针方向正(符号右手定则,与其它理论一致),如果遇到中心不在原点处,则先将方程移至原点,再进行旋转,然后移回原中心。右乘用于不同坐标系的变换,如串联机器人,DH模型。
posted @ 2019-10-15 14:12  搬运工_阿壮  阅读(3281)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3