上一篇文章,我们通过齐次坐标,很方便的表示出了二维图形的基础变换形式。对于三维,我们可以将平移和缩放的结论直接推论过来
2、缩放:
对于中心点在原点的缩放,有
对于中心点不在原点的缩放,假设中心点为(x0,y0,z0),则需要先将中心点平移到原点,缩放之后再将其平移回去,综合下来其矩阵形式为:
3、旋转:
对于三维旋转,则不能简单从二维旋转进行推论,先看一种特殊的旋转:绕轴旋转。对于绕z轴旋转,z轴坐标不变,x和y轴的旋转规律与二维情况一致,其矩阵形式为:
对于绕其它轴的旋转,则可以根据右手系转换相关的原则,由z轴变换过去
对于一般的旋转,则需要将其通过一些变换,转化为绕坐标轴的旋转。对于三维坐标系中的不与坐标轴平行的直线方程,可以表示为以下形式
该直线经过点(x0,y0,z0),且方向向量为(u,v,p)
以下就三维图形绕该直线逆时针旋转为例,求其变换矩阵
1> 将(x0,y0,z0)点平移到坐标原点,平移矩阵为T,有
2> 以平移后旋转轴作为新坐标系的z'轴,建立新的x'y'z'坐标系,将z'轴旋转至其与原坐标系z轴重合。这个问题相当于共原点的三维坐标系变换问题,可以直接引用一个定理。
共原点三维坐标系变换定理:已知三维正交坐标系xyz和x'y'z',其中x'y'z'的单位方向向量在xyz坐标中分别为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),那么xyz到x'y'z'的坐标系变换矩阵为:
这个证明的过程也相当简单,假设变换矩阵为A,则满足条件:
很容易求得:
有了这个结论,我们将该问题做一下转化。新坐标系的z’轴的方向向量已经确定,为(u,v,p),原点为xyz的原点,还需要确定x轴和y轴的方向向量。
由于z'轴方向向量(u,v,p)不平行于xyz的任意一个轴,因此垂直于其且通过原点的平面可以表示为:
在这个平面上,取两个点,分别记为(x4,y4,z4)和(x5,y5,z5),使得这两个点与原点所形成的向量为x'轴、y'轴的方向向量,于是有以下关系:
另外,x'与y'垂直,有
这组方程,有无数组解,圆周上任意一对互相垂直的向量都可以成为其一组解。这里我们人为选定一个,令x4=1/2,则其解限制为四组,我们选取其中的一组:
这里令x4=a,y4=b,z4=c,去求解x5,y5,z5,有:
这里取其中一个值,再代入所有已知量(a,b,c和u,v,p),即可求得新坐标系x'y'z'的三个新坐标轴的方向向量,其中z'轴方向向量经过单位化后为:(,,),因此这一步的变换矩阵可以表示为:
因此,变换的矩阵M可以写成一下形式:
其中,旋转角和u,v,p为给定常量,a为选定常量, b,c,z5等为可用uvp表示的常量,如下:
这里a是选定常量,选择a=1/2情况下的一种变换,其实a可以选为0<a<1的任意量,都可以计算出四组变换矩阵,对于任意0<a<1的情况,有:
令a=1/2,c和z5的正负号均取为正,即得到上述一组特殊解。
由于变换矩阵是无穷种,但是变换的结果是唯一的,因此,无论以上a的取值如何,c和z5的正负号如何确定,最终求得的变换矩阵变换出的结果都是唯一的,这个结论,可以用来反证上述推导过程的正确性。
对于旋转轴平行于某个轴的情况,直线方程无法这样表示为,就可以通过坐标轴平移来构造一个绕轴变换,会省去坐标轴变换这个比较复杂的步骤,推导比较简单,这里不再讨论。





































苏公安网备 32011402010933号