zoukankan      html  css  js  c++  java
  • 三维变换矩阵左乘和右乘分析

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

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

    举例
    对坐标点进行三维绕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模型。
  • 相关阅读:
    socket实现一个简单的echo服务
    Netty实现丢弃服务协议(Netty4.X学习一)
    大型情感剧集Selenium:8_selenium网页截图的四种方法
    python原类、类的创建过程与方法
    Flask使用bootstrap为HttpServer添加上传文件功能
    充满含金量的一场云原生Meetup,入场券免费发送中……
    Hadoop伪分布式集群的安装部署
    从缓冲池命中率角度判断自己的MYSQL数据库是否需要扩容内存
    MySQL分区表概述
    如何防止mysql数据库被勒索
  • 原文地址:https://www.cnblogs.com/wwwbdabc/p/11677393.html
Copyright © 2011-2022 走看看