向量坐标转换、旋转矩阵以及视图转换

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

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

           r ry  rz

           u uy uz

           f fy fz

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

    在把所有的模型都转换到世界坐标空间后,我们需要转到到视图空间,假定我们知道摄像机的从模型空间到世界空间的转换矩阵就是上面的旋转矩阵,要把物体转换到相机空间,就需要上面矩阵的逆,正交矩阵的逆可以用该矩阵的转置矩阵来表示。所以变换矩阵变为 

rux  fx

ry  Uy  fy

r uz  fz

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

转载于:https://www.cnblogs.com/qzzlw/archive/2012/09/13/2683938.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值