首页 > 编程知识 正文

向量坐标与旋转矩阵的关系,向量坐标与旋转矩阵的区别

时间:2023-05-03 19:30:58 阅读:191847 作者:301

        在3d世界中,我们需要不停的在各个空间里面转换坐标,比如把物体由模型空间转化到世界空间,把世界空间中的点转换到模型空间。我们知道,坐标转换可以用向量与一个转换矩阵相乘来达到转换目的。但要注意的是如果选择的是行向量,则是矩阵放在右边相乘,如果是列向量,则需要把矩阵放在向量左边相乘。如果不考虑位移,则我们可以用一个3X3矩阵来表示旋转操作。

    如果我们用行向量来表示某个模型空间中的某个点p( px  py pz ),假设模型经过旋转后,新的轴在世界空间中表示为 r(表示左右轴),u(表示向上的轴)f(表示向前的轴),r、u、f均为单位向量,则旋转矩阵为  

           rx  ry  rz

           ux  uy uz

           fx  fy fz

        p与矩阵相乘后我们得到新的x点为 px*rx+py*ux+pz*fx,也就是p与旋转矩阵的列向量的点积。向量的点积也可以理解为一个向量在一个向量上面的投影。如果我们从列的角度来观察刚才的旋转矩阵,其实我们可以发现第一列其实是原来的r轴向相反的方向旋转后的新的r轴。同理第二列第三列相同。这样我们就不难理解了。一个模型旋转一个角度,我们可以让模型不动,让坐标轴沿着相反的方向旋转相同的角度。旋转后,每列就是坐标轴新的向量表示。点与旋转矩阵相乘,其实就是原来的点在新的坐标轴上面的投影。

    在把所有的模型都转换到世界坐标空间后,我们如果要转到模型空间,就需要上面矩阵的逆,正交矩阵的逆可以用该矩阵的转置矩阵来表示。所以变换矩阵变为 

rx  ux  fx

ry  Uy  fy

rz  uz  fz

        世界空间中的某点p与该矩阵相乘,则得到(p*r  ,p*u  ,p*f),从这里可以看到世界空间的点转换到模型空间,其实就是点在模型各个坐标轴上面的投影。这里没有考虑位置转换,只考虑3X3矩阵是为了简化思考。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。