现在时间是:
当前位置:首 页 >> 教学区>> 教学区>> 文章列表

矩阵与变换

作者:niuman   发布时间:2011-06-30 20:36:39   浏览次数:2590
变换
2011年05月01日 星期日 10:52

1.2.4 变换

在图形程序的开发过程中,我们经常要对物体进行一些几何变换操作,也就是说,将一个几何图形按照一定的规则或规律变换为另一个新的几何图形。在一定程度上可以说,图形的几何变换是计算机图形学系统的核心内容。其中最基本的三种变换是平移、旋转和缩放,下面首先介绍一下在2D空间内的这三种变换,然后将其推广到3D空间中。

1.二维几何变换

二维图形由点或者直线段组成,其中直线段则由其端点坐标定义。对它进行几何变换可归结为对点或者直线段端点的变换。

(1)平移变换(translation)

对XY平面上的点P(x,y),如果在平行于X轴方向上移动dx单位,在平行于Y轴的方向上移动dy单位,则可以得到新的点P′(x′,y′),点P和P′的关系为:

x′= x+dx,y′=y+dy

这样的变换称为平移变换。

如果点用向量的形式给出,即P=[x y],P′=[ x′y′],而且X和Y方向的平移量用行向量的形式表示,即Tm=[dxdy],则平移变换可以写为:

[ x′y′]= [xy]+[dxdy]

可以更简单地表示为:P′=P+Tm

(2)旋转变换(rotation)

对于XY平面上的点P(x,y),绕原点逆时针旋转某个角度θ,得到一个新的点为P′(x′,y′),这种变换称为旋转变换,如图1-4所示,根据三角形知识有:

 
图1-4 旋转变换推导
 

(3)缩放变换(scale)

对XY平面上的点P(x,y),经过对x、y坐标分别乘以各自的比例因子Sx和Sy,得到一个新的点P′(x′,y′),即:

 

 

 

这样的变换称为缩放变换。如果令:

 

 

 

则缩放变换可用下述矩阵乘法表示:

 

 

 

 

 

 

当Sx=Sy时,变换前的图形与变换后的图形是相似的,即形状是不会变化的,只是位置或大小发生变化;当Sx≠Sy时,物体将沿平行于坐标轴方向拉长或收缩,使图形变形。

2.齐次坐标

我们在上节中介绍了平移、旋转和缩放三种几何变换,同时我们推导出了它们各自的变换矩阵为:

平移变换P′=P+Tm

旋转变换P′=P+Tr

缩放变换P′=P+Ts

我们可以看出,平移变换的处理方法与其他两种变换的形式不一样,但我们希望能够用一致的方法来处理这三种变换,使得这三种变换组合在一起完成各种复杂的组合变换。为了解决这个问题,人们引入了齐次坐标的概念。

齐次坐标的基本思想是把一个n维空间的几何问题,转移到n+1维空间中去解决,也就是说用n+1个分量的向量去表示一个有n个分量的向量的方法称为齐次坐标表示。那么对于二维空间而言,把该空间内任意点的齐次坐标记为(x,y,h),则该点的二维直角坐标为(x/h,y/h)。

齐次坐标表示不是唯一的,通常h=1时,称为规格化齐次坐标。在计算机图形里我们通常采用的是规格化齐次坐标。

使用齐次坐标的另一个好处是,能够表示n维空间中的无穷远点,即(x1,x2,…,xn,0)表示n维空间中的无穷远点,而它在n+1维空间中该点是在有限区域内的。

有了上面的齐次坐标的介绍,我们就把上面三种变换的形式统一起来。

(1)平移变换

利用齐次坐标,则顶点之间的关系为:

 

 

 

则平移变换可以表示为:P′=P× ,其中为平移矩阵。

(2)旋转变换

利用齐次坐标,则顶点之间的关系为:

 

 

 

(3)缩放变换

利用齐次坐标,则顶点之间的关系为:

 

 

 

则缩放变换可以表示为:P′=P× ,其中为缩放矩阵。

3.三维几何变换

在三维空间中,如果给定一个点的齐次坐标为(x,y,z,h),那么就可以得到该点的笛卡儿坐标为:(x/h,y/h,z/h)。当h=0时,齐次坐标(x,y,z,0)表示三维空间中的无穷远点,当h=1时即为规格化齐次坐标。

在上一节中,引入齐次坐标后,二维几何变换可以用一个3×3的矩阵来表示。同样,在三维空间中引入齐次坐标后,三维几何变换可以用一个4×4的矩阵来表示。下面我们就对这三种变换进行介绍。

(1)平移变换

设三维空间内一点P(x,y,z),沿三个坐标轴的平移量为dx,dy和dz,那么:

x′=x+dx,y′=y+dy,z′=z+dz

可以写出平移矩阵为:

 

 

(2)旋转变换

 

在三维空间内的旋转变换,有三种基本的情形,即分别X、Y和Z轴进行旋转。下面分别进行讨论:

1)绕X轴逆时针旋转α度。

当点P(x,y,z)绕X轴旋转α度时,点P的x坐标值不变,其旋转前后的坐标关系为:

 

 
则变换矩阵为:

 

 

 

 

2) 绕Y轴逆时针旋转β度。

当点P(x,y,z)绕Y轴旋转β度时,点P的y坐标值不变,其旋转前后的坐标关系为:

 

 
其变换矩阵为:

 

 

 

 

3) 绕Z轴逆时针旋转γ度。

当点P(x,y,z)绕Z轴旋转γ度时,点P的z坐标值不变,其旋转前后的坐标关系为:

 

 
则变换矩阵为:

 

 

 

 

当三维空间的物体绕X、Y或Z轴旋转时,可以认为物体是在YOZ、XOZ或XOY平面内,绕原点进行旋转,也即相应的X、Y或Z坐标值不变,只需改变其余的两个坐标值。当旋转方向是顺时针方向时,只需把相应的旋转角以负值代入变换矩阵即可。

(3)缩放变换

设三维空间内一点P(x,y,z)以原点为中心,分别在三个坐标轴上缩放Sx、Sy和Sz倍,则x′=x×Sx,y′=y×Sy,z′=z×Sz,那么缩放矩阵为:

 

 

 

http://book.51cto.com/art/201009/228286.htm







上一篇:没有了    下一篇:没有了

Copyright ©2019    计算数学达人 All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 |燕窝 版权所有 © 2005-2019 lingw.net.粤ICP备16125321号 -5