1、1,第2章 计算机图形处理技术,2,3,2.2图形变换在计算机图形处理中,经常需要对已经生成的图形进行几何变换处理。例如,改变图形的大小、移动图形或根据需要将图形旋转一个角度,输出零件的三面视图,显示立体图,或要求一物体绕一轴线作连续的动态转动,使观察者能看到物体的各个侧面。这就要求图形的处理软件能够实现旋转、平移、缩放等几何变换。我们知道,点是构成一个几何形体的最基本的元素。一幅二维图形可以看成是一个点集。那么,我们就可以把对图形的几何变换归结对点的变换。,4,2.2.1 图形变换方法一、点的向量表示在二维空间中点的表示方法,我们通常是用它的坐标来表示,写作P(x,y)。为了以后变换的方便,
2、我们可以把它写作矩阵的形式,即用一行两列的矩阵 或一个两行一列的矩阵 表示。在三维空间里则用 表示空间一点。那么,对于一个二维空间的图形或三维空间的立体,可以用一个点的集合(简称点集)来表示,每个点对应一个行向量,则点集为n2或m3阶的矩阵:,或,5,例如:已知三角形ABC顶点的坐标分别为A(x1,y1),B(x2,y2),C(x3,y3)则三角形ABC可以记作矩阵: 然后把它以数组的形式存贮在计算机内。,6,二、齐次坐标齐次坐标是将一个n维空间的点用n十1维,即附加一个坐标来表示。如二维点x y的齐次坐标通常用三维坐标Hx Hy H表示,三维点x y z的齐次坐标通常用四维坐标Hx Hy H
3、z H表示,。在齐次坐标系中,最后一维坐标H称为比例因子。由于比例因子H的取值是任意的,所以任一点可用许多组齐次坐标表示,如二维点3 2可表示为3 2 1、6 4 2、9 6 3等。另外,可用H0的向量表示无穷远的点。例如用1 0 0 0、0 1 0 0、0 0 1 0分别表示x,y,z轴上的无穷远点。对齐次坐标进行坐标变换称为齐次变换, 相应的变换矩阵称为齐次变换矩阵,7,反过来,还可以通过矩阵变换将无穷远点变换为与之对应的有限远点。当H=1时,则称为规范齐次坐标。从齐次坐标返回到n维空间去时,只需将坐标中每个分量除以H就可以了。以后介绍的变换矩阵实际上都是奇次坐标变换。用齐次坐标方式进行变
4、换运算不但可以产生正常坐标变换的同样效果,而且可以简化正常坐标变换过程。在图形变换中引入齐次坐标表示,还能使各种基本变换,如旋转、平移和比例交换等具有统一的变换矩阵格式,并且可以将它们结合在一起进行组合变换,同时也便于计算。,8,三、变换矩阵由于图形可以用点集表示,因此要对图形进行变换,只要变换点就可以了。对点的变换可以通过相应的矩阵运算来实现,即:旧点(集)变换矩阵 新点(集)若将二维空间的点由某个位置P(x ,y)变换到一个新的位置P*(x*,y*),变换的原理是把齐次坐标点(x,y,1)通过变换矩阵变换成新的齐次坐标点(x*,y*,1)。即:,9,为基本变换矩阵:从变换功能上可把T分为四
5、个子矩阵,其中对图形进行比例、旋转、对称、错切等变换; l m 对图形进行平移变换; p q T 对图形进行投影变换,不做投影变换时取p = 0,q = 0; s 对图形进行全比例变换。通常取s=1。,10,三维图形的变换矩阵是二维图形变换矩阵的简单扩展,在三维空间中,用四维齐次坐标表示三维点,即x y z 1。三维变换矩阵则采用44阶矩阵表示,即:,11,齐次变换矩阵:,平移,缩放 旋转 错切,透视变换,整体缩放,12,2.2.2 二维图形的几何变换一、基本几何变换1、平移变换2、比例变换3、旋转变换4、对称变换5、错切变换二、组合变换,13,图中l、m分别为x、y方向的平移量。从图中可以得
6、出变 换前后点的坐标值应满足以下关系:,一、基本几何变换 1、平移变换平移变换是将图形在坐标平面内移动,只改变图形的位置,不改变图形的大小和形状。平移变换如图所示:,14,将它写成矩阵的形式为:那么即为所求平移变换矩阵。,15,例1:已知三角形顶点坐标为A(0,0),B(20,0),C(0,20),平移参数分别为l20,m10;试对此三角形进行平移变换。解:因为平移变换矩阵为所以变换后点的坐标为,16,2、比例变换比例变换指将原有图形在x、y两个方向上进行放大或缩小的变换,通过它可以改变图形的大小和方向。将平面上一点P(x,y)在x、y两个方向上分别进行放大a倍和d倍的比例变换后得到新点P*(
7、x*,y*),P和P*的关系为:写成矩阵的形式为,17,其中,T= 称为比例变换矩阵,a、d分别为沿 x、y方向上的比例因子,且a、d0。a、d的取值不同,变换效果也不同,如下所述:(1)如果a =d = 1,变换为恒等变换,即变换后点的坐标不变。(2)如果a = d1,变换为等比例变换。其中,如果a = d 1,变换为等比例放大;如果a = d 1,变换则为等比例缩小。如图(a)、(b)所示。 (3)如果a d,变换后的图形会产生畸变。如图(c)所示。,18,(a)a = d 1 (b)a = d 1 (c)a d,19,例2:a=2,d=1时,假设变换前A(1,1),B(2,1),C(1,
8、2),那么,变换后为A*(2,1), B*(4,1),C*(2,2),ABC与A*B*C*不相似。,20,3、旋转变换旋转变换一般指图形绕坐标原点旋转一个角度 ,规定为:绕原点逆时针方向旋转为正,顺时针方向为负。经过旋转变化后不改变图形自身的大小、形状等,只改变图形的方向。连续的旋转变换相当于将其旋转角度叠加之后的旋转变换。将平面上一点P(x,y)绕坐标原点逆时针旋转 角,变换后得到新点P1(x1,y1),P和P1的关系为:,21,其中: 为绕坐标原点旋转的变换矩阵。,22,4、对称变换对称变换又称为反射变换或镜像变换。(1)关于坐标原点的对称变换将平面上一点P(x,y)进行关于原点的对称变换
9、后得到新点P*(x*,y*),P和P*的关系如图(a)应为:x*=x,y*=y,写成矩阵形式为:其中: 为关于原点的对称变换矩阵。,23,(2)关于x轴的对称变换将平面上一点P(x,y)进行关于x轴的对称变换后得到新点P*(x*,y*),P和P*的关系如图(b)应为:x*=x,y*=y,写成矩阵形式为:其中: 为关于x轴的对称变换矩阵。,24,(3)关于y轴的对称变换将平面上一点P(x,y)进行关于y轴的对称变换后得到新点P*(x*,y*),P和P*的关系如图(c)应为:x*=x,y*=y,写成矩阵形式为:其中: 为变换矩阵。,25,(4)关于y=x的对称变换将平面上一点P(x,y)进行关于直
10、线y=x的对称变换后得到新点P*(x*,y*),P和P*的关系如图(d)应为:x*= y,y*= x,写成矩阵形式为:其中: 为变换矩阵。,26,(5)关于y=x的对称变换将平面上一点P(x,y)进行关于直线y= x的对称变换后得到新点P*(x*,y*),P和P*的关系如图(e)应为:x*=y,y*=x,写成矩阵形式为: 其中: 为变换矩阵。,27,5、错切变换错切变换是使图形沿错切方向的坐标发生变化,而另一方向的坐标值不变,从而达到使原图形发生特定变化的目的。错切变换分沿x轴和沿y轴错切两种形式。(1) 沿x轴方向的错切将平面上一点P(x,y)进行沿x轴方向的错切变换后得到新点P*(x*,y
11、*),变换过程如图(a)所示,从图中可以看出,沿x轴方向错切变化后,y坐标不变,x将产生一个增量x = cy,而且c当取正值时,沿x轴的正方向进行错切,反之c取负值。P和P*的关系为:x*=x+cy,y*=y。写成矩阵形式为:,28,其中: 为变换矩阵。(a)沿x轴方向的错切 (b)沿y轴方向的错切,29,(2)沿y轴方向的错切将平面上一点P(x,y)进行沿y轴方向的错切变换后得到新点P*(x*, y*),变换过程如图(b)所示,从图中可以看出,沿y轴方向错切变化后,x坐标不变,y将产生一个增量y = bx,而且当b取正值时,沿y轴的正方向进行错切,反之b取负值。P和P*的关系为:x*=x,y
12、*=bx+y。写成矩阵形式为:其中: 为变换矩阵。,30,二、组合变换 在图形的几何变换中,图形的实际变换往往不是单独采用前述的各种基本变换就可以完成,通常需要将各种基本变换组合使用,以完成最终的图形变换。这种由多种基本变换组合而成的变换称为组合变换,相应的变换矩阵叫做组合变换矩阵。假设已知点P依次经过T1、T2和T3三个几何变换,得到的结果为:P* = (PT1)T2)T3运用矩阵乘法的结合律,上式可化为:P* = P(T1T2T3)于是得到组合变换的变换矩阵为:T = T1T2T3,由于矩阵不存在交换律,因此矩阵相乘的顺序是不能随意互换的。,31,组合变换顺序对图形的影响,复杂变换是通过基
13、本变换的组合而成的,由于矩阵的乘法不适用于交换律,即:AB BA 因此,组合的顺序一般是不能颠倒的,顺序不同,则变换的结果亦不同,如图所示。,32,实例: 绕任意点的旋转变换平面图形绕任意点P(xp,yp)逆时针旋转 角,需要通过如下几个步骤来实现:(1)将旋转中心平移到坐标原点,变换矩阵为(2)将图形绕坐标原点逆时针旋转 角,变换矩阵为,33,(3)将旋转中心平移回到原来位置,变换矩阵为(4)最后得出绕任意点P的旋转矩阵为,即,当xp = 0,yp = 0 时,即为对原点的旋转变换矩阵。,34,例3:将下图所示图形绕自身对称轴上的一点P(15,12)逆时针旋转90度,放大2倍(x、y方向的放
14、大倍数相同)1、试写出各变换的变换矩阵;2、求出复合变换矩阵;3、求出各点变换后的坐标;,35,解: (1)、各变换矩阵为:先将P点平移至原点的矩阵 :,绕原点逆时针旋转 :,36,沿x、y轴放大2倍,平移回原位置:,37,(2)、组合变换矩阵:,(3)、变换后的坐标为:,38,作业:1、将下图所示图形绕自身中心点P(20,20)先缩小1/2(x、y方向的缩小倍数相同)再顺时针旋转270度, (1)试写出各变换的变换矩阵; (2)求出组合变换矩阵; (3)求出各点变换后的坐标。,39,2、如图所示平行四边形ABCD,已知图上一点G(10,6),该平行四边形先绕G点逆时针转90度,最后沿Y方向正向移动3个单位距离。 (1)试写出各变换的变换矩阵; (2)求出组合变换矩阵; (3)求出A、B、C、D各点变换后的坐标。,40,1、解: (1)、各变换矩阵为: 、先将P点平移至原点的矩阵 :,、沿x、y轴缩小1/2倍:,、绕原点顺时针旋转,41,、平移回原位置:,(2)、复合变换矩阵:,(3)、变换后的坐标为:,42,2、解:(1)1)先将G点平移到坐标原点,变换矩阵为,2)绕原点顺时针旋转90度的变换距阵为,3)沿Y正向平移3个单位的变换矩阵为,43,4)将G点移回原处的变换矩阵为,(2)组合变换矩阵为,(3),A(13,4) B(13,15) C(6,14) D(6,4),