码迷,mamicode.com
首页 > 其他好文 > 详细

三维坐标变换矩阵的推导过程

时间:2016-06-18 21:15:57      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

在3D计算机图形学中,我们经常需要使用多个坐标系,因此我们需要知道如何从一个坐标系转到另一个坐标系。在3D计算机图形学中,点(Point)和向量(Vector)的变换是不同的,所以需要分别讨论。

1、向量的变换

技术分享

 

如图所示,有两个坐标系A、B和一个向量p。假设我们已经知道了p在坐标系A下的坐标为p= (x,y);现在我们要求p在坐标系B下的坐标,p= (x,y‘) 。也就是说,给定一个坐标系下的向量p,如何计算p在另一个坐标系下的坐标呢?

显然,在坐标系A下,p = x*u + y*v;其中u、v为坐标系A下沿着x轴和y轴的单位向量;而在坐标系B下,p = x*u+ y*vB ,其中uB和vB为A坐标系下的x轴和y轴在B坐标系下的向量表示。因此,如果求出u= (ux,uy),vB = (vx,vy),则可以求出p= (x‘,y‘)的值。

相应地,将二维情况推广到三维,即可得到:

如果向量pA = (x , y , z),则pB = x*uB + y*vB + z*wB;其中pA为p在A坐标系下的向量表示,pB为p在B坐标系下的向量表示,uB 、vB 、wB分别为A坐标系下的坐标轴x、y、z在B坐标系下的向量表示。

2、点的变换

技术分享

 

点是需要包含位置信息的,因此,点的变换和向量的变换稍微有些不同。

如图所示,在坐标系A下,点p可表示为:p = x*u + y*v + Q ,其中u、v为坐标系A的坐标轴,Q为坐标系A原点的坐标。而在B坐标系下,点p可表示为:p = x*u+ y*vB + Q,其中uB和vB为A坐标系下的x轴和y轴在B坐标系下的向量表示,QB为A坐标系下的原点在B坐标系下的坐标表示。因此,我们只要求出u= (ux,uy),vB = (vx,vy),QB = (Qx,Qy),则可求出点p在B坐标下的坐标表示。

同理,将上述变换推广到三维可得:

如果点pA = (x , y , z),则点pB = x*uB + y*vB + z*wB +Q;其中pA为p在A坐标系下的坐标,pB为p在B坐标系下的坐标,uB 、vB 、wB分别为A坐标系下的坐标轴x、y、z在B坐标系下的向量表示,QB为A坐标系下的原点在B坐标系下的坐标表示。

 

3、点和向量的矩阵表示

结合1和2可得,

对于向量:

(x‘, y‘, z‘) = x*uB + y*vB + z*wB;

对于点:

(x‘, y‘, z‘) = x*uB + y*vB + z*wB + QB。

使用齐次坐标,我们将以上两式统一表示为:

(x‘, y‘, z‘,w‘) = x*uB + y*vB + z*wB + w*QB。

 其中,w=0,为向量的坐标变换;w=1,为点的坐标变换。

令QB = (Qx ,Qy ,Qz ,1), uB = (ux , uy , uz ,0), vB = (vx ,vy ,vz ,0), wB = (wx , wy , wz ,0),则可得坐标系A到坐标系的变换矩阵为

技术分享

 

 

三维坐标变换矩阵的推导过程

标签:

原文地址:http://www.cnblogs.com/begodlike/p/5596815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!