(精品)计算机图形学第4章.ppt
第4章 图形变换 第4章 图形变换 4.1 二维图形变换二维图形变换 4.2 三维图形的基本变换三维图形的基本变换 4.3 平行投影变换平行投影变换 4.4 透视投影变换透视投影变换 4.5 三维裁剪三维裁剪 第4章 图形变换 4.1 二维图形变换二维图形变换 一幅二维图形可以由若干直线连接而成,或者被看作由许多小直线段逼近而成。而一条直线段可以由始、末端点相连产生。因此,我们可以把一幅二维图形看成是一个点集。在X-Y平面内,如果一个点的坐标用行向量xy或列向量表示,则一个图形的点集就可以用n2或2n的矩阵表示如下:第4章 图形变换 4.1.1 点的变换点的变换二维空间中,点P(x,y)变换到另一位置P*(x*,y*),可以用两个矩阵相乘来实现,即(4-1)(4-2)第4章 图形变换 变换前的点P(x,y)称为源,变换后的点P*(x*,y*)称为像,如图4.1.1所示。在式(4-1)中22矩阵称为变换矩阵,由式(4-2)可见,这种变换是线性变换。图4.1.1点的变第4章 图形变换 4.1.2 各种基本变换各种基本变换 1.比例变换比例变换将几何图形放大或缩小的变换称为比例变换。实际上是将图形上点的x坐标及y坐标分别乘以比例因子a和d实现的,即用矩阵运算的形式表示为(4-3)第4章 图形变换 式(4-3)中,称为比例变换矩阵。比例变换分两种情况。(1)当a=d时,点的x,y坐标等比例地放大或缩小。这种比例变换叫做等比变换,也称相似变换。从图4.1.2可见,变换前后的图形是以坐标原点为相似中心的相似形,变换后的A*B*C*成比例地放大并离开了原来的位置。因此,这种变换是以原点为中心的相似变换。第4章 图形变换 图4.1.2平面图形的等比变换第4章 图形变换 图4.1.3平面图形的不等比变换(2)当ad时,点x,y坐标不等比例地放大或缩小。这种变换称为不等比变换,如图4.1.3所示。第4章 图形变换 2.反射变换反射变换变换前的图形与变换后的图形相对于某一直线或原点为对称的变换叫做反射变换,或称为对称变换。反射变换如图4.1.4所示,有以下几种情况:1)相对于X轴的反射变换点相对于X轴反射后,y坐标改变符号,而x坐标不变,即第4章 图形变换 图4.1.4平面图形的反射变换第4章 图形变换 用矩阵运算形式表示为式(4-4)中,是相对于X轴的反射变换矩阵。(4-4)第4章 图形变换 2)相对于Y轴的反射变换点相对于Y轴反射后,x坐标改变符号,而y坐标不变,即用矩阵运算形式表示为式(4-5)中,是相对于Y轴的反射变换矩阵。(4-5)第4章 图形变换 3)相对于原点的反射变换点相对于原点反射变换后,其x、y坐标值均改变符号,即用矩阵运算形式表示为(4-6)中,是相对于原点的反射变换矩阵。(4-6)第4章 图形变换 3.错切变换错切变换所谓错切变换,就是几何图形沿着某一坐标轴的方向产生不等量的移动,使图形发生错切变形。下面分两种情况进行讨论。1)沿X轴方向的错切变换在图4.1.5中,使正方形ABCD沿X轴方向错切成平行四边形A*B*C*D*。错切后的图形与Y轴之间形成一错切角,从图中可知:第4章 图形变换 令c=tan,并写成矩阵运算的形式为(4-7)其中,为沿X方向的错切变换矩阵。图4.1.5中的正方形ABCD经变换矩阵错切而成为平行四边形A*B*C*D*,ABCD上凡是平行于Y轴的直线,经错切后均与Y轴成角,而y坐标为0的点不动。第4章 图形变换 在错切变换矩阵中,c0时,图形沿X轴的正方向错切;而当c0时,图形沿正Y方向错切;而取b0时,图形沿负Y方向错切。第4章 图形变换 图4.1.6Y方向的错切变换第4章 图形变换 4.旋转变换旋转变换如图4.1.7所示,平面上一点M(x,y)绕原点逆时针旋转角后至M*(x*,y*),则M*的坐标为第4章 图形变换 写出矩阵运算的形式为(4-9)式(4-9)中,为旋转变换矩阵。当逆时针旋转时,角取正值;顺时针旋转时,角取负值。第4章 图形变换 图4.1.7点的旋转变换第4章 图形变换 图4.1.8平面图形的旋转变换第4章 图形变换【例例】将顶点为A(2,0),B(3,1),C(4,0)的ABC绕原点逆时针旋转30变换为A*B*C*,写出变换矩阵。解解 变换后的图形如图4.1.8所示,图形绕原点转角后,其形状不变。第4章 图形变换 5.平移变换平移变换如图4.1.9所示,平移变换就是将图形沿X方向移动距离l,沿Y方向移动距离m,图形形状保持不变,图形各角点的坐标x、y分别增加了平移量l和m,即(4-10)第4章 图形变换 图4.1.9平面图形的平移变换第4章 图形变换 前面所述二维图形变换的形式为对于式(4-11),无论方阵中的几何元素如何变化,都不能获得式(4-10)的形式。也就是说,不能用式(4-11)表示平移变换。我们将T22矩阵扩展为T33矩阵,写成如下的形式(4-11)(4-12)第4章 图形变换 然而,根据矩阵乘法定义,只有当第一个矩阵的列数与第二个矩阵的行数相等时才能相乘。因此,我们再将二维点用三维向量来表示,写成13的行矩阵x y1,这样就可以与T33矩阵相乘。根据二维图形基本变换的类别,改变式(4-12)矩阵中相应的元素取值,就可以得到各种二维图形的变换矩阵。平移变换的矩阵运算形式为(4-13)第4章 图形变换 同理,将式(4-11)改写成(4-14)式(4-14)为二维图形变换矩阵运算的一般形式,其中T33矩阵是二维图形变换矩阵的一般式,根据变换矩阵的一般式,可推导出上述各种基本变换矩阵。比例变换矩阵:第4章 图形变换 旋转变换矩阵:平移变换矩阵:有关反射变换、错切变换的变换矩阵读者可自行推导。第4章 图形变换 4.1.3 齐次坐标齐次坐标前面,我们用x y1表示平面上一点,成功地解决了平移变换矩阵的表示,使各种变换矩阵统一为T33方阵的形式,而13行矩阵是二维点的齐次坐标表示形式。用三维(空间)向量表示二维(平面)向量,或者说用n+1维向量表示n维向量的方法称为齐次坐标表示法。面我们进行齐次坐标几何意义的讨论。在上述平移变换中,我们用齐次坐标来描述点的位置,如果将式(4-14)扩展,可进一步考虑更一般的变换:第4章 图形变换 矩阵中的a,b,c,d,l,m前面已经述及,现在我们只讨论p,q,s所起的作用。为简明起见,令a=d=1,c=b=0,l=m=0,以研究如下的变换:这里,X Y H表示二维空间一个点经过变换所得到的齐次坐标,我们要讨论这种齐次坐标的几何意义。第4章 图形变换 如图4.1.10所示,ABC三个顶点的齐次坐标分别是Axaya1,Bxbyb1,Cxcyc1,用矩阵进行变换,得AT=xayapxa+qya+s=XaYa Ha=ABT=xb yb pxb+qyb+s=Xb Yb Hb=BCT=xcycpxc+qyc+s=Xc Yc Hc=C第4章 图形变换 可以看出,在这种变换中,仅z坐标(即H值)发生了变化,而x坐标和y坐标保持不变。其一般表达式为(4-15)第4章 图形变换 在图4.1.10中,用齐次坐标表示的三角形并不在XOY平面上,而是在距XOY平面为H=1的平面上,但其大小和形状均没有发生变化。变换后所得到的ABC是一个一般位置的三角形。由式(4-15)可知,ABC经矩阵T变换成ABC后,其顶点的x,y坐标不变,只是z坐标,即由H=1变成了H=px+qy+s,ABC各顶点的H坐标值不同。由解析几何可知,H=px+qy+s为空间一般位置平面方程,ABC各顶点都在这个一般位置平面上。第4章 图形变换 图4.1.10齐次坐标变换的几何意义第4章 图形变换 平面H=px+qy+s与三坐标轴X,Y,H的交点坐标分别为(-s/p,0,0),(0,-s/q,0)和(0,0,s)。在此进行讨论的目的是用三维向量来研究二维向量的问题,我们所关心的是ABC在H=1的平面上的变换。为此,我们要把空间一般位置平面上的ABC收敛到H=1的平面内。在图4.1.10中,作一个三棱锥OABC,则此三棱锥与H=1的平面相交,形成的交线为A*B*C*,A*B*C*就是ABC在H=1的平面内的变换。第4章 图形变换 由图4.1.10可知,p,q,s的作用就是在H=1的平面上生成一个以坐标原点为中心的中心投影,即形成了平面图形的透视变换。这个过程叫做正常化,即(4-16)式(4-16)中,X Y H称为点(x,y)的齐次坐标,其中H0,当H=1时,x*y*1就是正常化后点(x,y)的齐次坐标。正常化后的齐次坐标中的第一、第二个数就是二维空间中的普通坐标,点的普通坐标与齐次坐标之间的关系可表示为第4章 图形变换 4.1.4 组合变换组合变换 图4.1.11组合变换的顺序比较第4章 图形变换 2.组合变换矩阵组合变换矩阵如图4.1.12所示,将ABC绕原点之外的任意点P(l,m)旋转角至A*B*C*。因为旋转中心不在原点,这种变换并非一般的单一旋转变换,而是组合变换,可由以下几种基本变换组合而成。(1)将旋转变换的旋转中心P平移至坐标原点,这时ABC也随之平移至A1B1C1,其平移变换矩阵为第4章 图形变换(2)将平移后的A1B1C1绕原点旋转角至A2B2C2,其旋转变换矩阵为第4章 图形变换 图4.1.12组合变换第4章 图形变换(3)用第一步的平移变换是因为旋转变换的旋转中心不在原点,通过第二步旋转变换后,应把旋转中心平移回原来的位置P(l,m)处,这时A2B2C2也随之平移至A*B*C*,其反向平移变换矩阵为以上三种变换的组合变换矩阵为第4章 图形变换 4.1.5 窗口到视区的变换窗口到视区的变换在一般情况下,人们在世界坐标系中描述图形,当需要将所描述的图形部分或全部地显示在屏幕上时,首先必须把世界坐标转换为显示设备的屏幕坐标。在转换时,需要在世界坐标系中确定一个平行于坐标平面XwOwYw的矩形窗口,使自己需要的图形留在窗口之内,然后映射到屏幕视区中显示。屏幕视区是一个由屏幕坐标给出的矩形区域。把窗口内的图形映射到视区显示,这实际上也是一种图形变换。图4.1.13(a)#,(b)分别表示窗口和视区及其边界坐标。下面我们讨论这种变换的算法。第4章 图形变换 根据图4.1.13(a),(b)给出的坐标及边界尺寸,有若令(4-17)第4章 图形变换 则式(4-17)可简化为(4-18)第4章 图形变换 图4.1.13窗口到视区的变换第4章 图形变换 由此可见,窗口到视区的变换实际上是比例变换与平移变换的组合变换。进行窗口到视区的变换时,视区的长宽比与窗口的长宽比应保持一致,这样才能避免由于图形的变换而引起的失真。在变换时,不断改变窗口的大小和位置,可观察被缩放后的图形及图形的不同部位。第4章 图形变换 4.2 三维图形的基本变换三维图形的基本变换 4.2.1 几何变换矩阵几何变换矩阵在工程设计中,三维空间的几何变换直接与显示和造型有关,是计算机图形学中算法内容的重要组成部分。实际上,三维图形的几何变换是二维图形几何变换的简单扩展。与二维图形变换一样,我们也采用齐次坐标来描述空间点的坐标及各种变换。显然,三维空间中的点P(x,y,z),可用齐次坐标表示为x y z 1,其相应的变换矩阵应是T44的方阵,即第4章 图形变换 将T44方阵分成四个子阵,各子阵及其作用分别是:左上角33子阵产生比例、反射、错切及旋转变换;左下角13子阵产生平移变换;右上角31子阵产生透视变换;右下角11方阵产生整体比例变换。我们只要改变T44方阵中各子阵相应元素值,便可获得各种三维变换矩阵。变换矩阵T44中,第1、2、3列元素分别为X、Y、Z方向的比例参数。第4章 图形变换 4.2.2 各种基本几何变换各种基本几何变换1.比例变换比例变换1)局部比例变换当变换矩阵时,空间点P(x,y,z)在变换矩阵T的作用下变换为(4-19)当a,e,j1时,则相对于原点放大。第4章 图形变换 2)整体比例变换当变换矩阵(4-20)时,则空间点P(x,y,z)在T的作用下变换为当s1时,P点的坐标相对于原点沿X、Y、Z轴作等比例均匀缩小;当s0。(6)窗口中心为Ow(cu,cv)。窗口沿Xe,Ye向的半长和半宽分别为su和sv。第4章 图形变换 4.5.3 规格化裁剪空间和图像空间规格化裁剪空间和图像空间常用的平行投影和透视投影的投影线均不平行于坐标轴,因此所得空间为斜四棱柱和斜四棱台。为了提高求交和裁剪处理的效率,也为了其面方程的规范化,我们可把平行和透视裁剪空间分别规格化为正四棱柱和正四棱台。1.平行投影裁剪空间规格化平行投影裁剪空间规格化将斜四棱柱裁剪空间规格化成正四棱柱裁剪空间要经过一系列的变换,其变换过程如图4.5.4所示。第4章 图形变换 图4.5.4平行投影裁剪空间规格化过程第4章 图形变换(1)将观察参考点平移到原点的变换。(2)用户坐标系到观察坐标系的变换。第4章 图形变换(3)作Ze向的比例变换,将裁剪空间的后截面变换为Ze=1的平面,其变换矩阵为第4章 图形变换(4)使投影中心到窗口中心的连线与Ze轴重合,将斜四棱柱变为正四棱柱的错切变换。第4章 图形变换(5)使裁剪平面介于xe-1,ye1之间,作比较变换,变换矩阵为:第4章 图形变换(6)沿Ze方向平移和比例变换,使裁剪空间介于0Ze1之间。所以组合变换矩阵为T平行=T1T2T3T4T5T6(4-43)第4章 图形变换 图4.5.5规格化平行投影裁剪空间第4章 图形变换 2.透视投影裁剪空间规格化透视投影裁剪空间规格化通过一系列的变换,可将斜四棱台裁剪空间变成正四棱台裁剪空间,其变换过程如图4.5.6所示。(1)投影中心平移到原点的变换。第4章 图形变换 图4.5.6透视投影裁剪空间规格化过程第4章 图形变换(2)用户坐标系到观察坐标系的变换。TWV如式(4-42)所示。(3)作Ze向的比例变换,将裁剪空间的截面变为Ze=1的平面,其变换矩阵为第4章 图形变换(4)为了使斜四棱台变成正四棱台,作错切变换,使投影中心(视点)与窗口中心的连线与Ze轴重合。第4章 图形变换(5)为使裁剪空间的后裁面介于xe-1,ye1范围之内,作比例变换。所以组合变换矩阵为T透视=T1T2T3T4T5(4-44)第4章 图形变换 图4.5.7规格化透视投影裁剪空间第4章 图形变换 3.规格化的图像空间规格化的图像空间从上述过程和结果可知,平行投影与透视投影的裁剪和投影处理还不尽相同。如果在图像空间中把投影中心移到无穷远,则裁剪空间中的透视投影就会变成图像空间中的平行投影。这样可使两种投影一致化(规格化)。规格化的图像空间中,投影线方程得到了简化,给求交计算带来了方便。透视投影规格裁剪空间变换成规格化图像空间,是以下三种变换的组合:第4章 图形变换(1)作比例变换,放大前截面。通过变换矩阵T1作用后,正四棱台前截面各顶点的坐标发生了变化,后截面上的各顶点坐标不变,投影中心由原来的Oe变成无穷远点。第4章 图形变换(2)作比例变换,将Ze方向的厚度1压缩变为(1-f)。第4章 图形变换(3)作平移变换,使前截面与XeOeYe重合,即Ze=f,后截面Ze=1。透视投影规格化空间到规格化图像空间的组合变换矩阵为Ti=T1T2T3 第4章 图形变换 空间形体经Ti作用后,在Xe,Ye方向产生了不等比变换,当ze值较大时,xe,ye的放大倍数小;而ze值较小时,xe,ye的放大倍数反而大。这种将透视投影的规格化裁剪空间转换成规格化图像空间,对形体作平行投影也会产生远小近大的效果,简化了透视图的计算工作量,但与透视图比较将会失真。第4章 图形变换 4.5.4 三维线段裁剪三维线段裁剪 1.平行投影三维线段裁剪平行投影三维线段裁剪平行投影规格化裁剪窗口是正四棱柱,其六个面的平面方程分别是y=1,y=-1(上、下两平面)x=1,x=-1(右、左两平面)z=1,z=0(后、前两平面)第4章 图形变换 空间任一直线段两端点P1,P2相对于以上六个面都可以赋一个六位的二进制代码,设最右边的是第一位,定义如下:第一位为1,端点在裁剪窗口之上,即y1,否则第一位为0;第二位为1,端点在裁剪窗口之下,即y1,否则第三位为0;第四位为1,端点在裁剪窗口之左,即x1,否则第五位为0;第六位为1,端点在裁剪窗口之前,即zz,否则第一位为0;第二位为1,端点在裁剪窗口之下,即yz,否则第三位为0;第四位为1,端点在裁剪窗口之左,即x1,否则第五位为0;第六位为1,端点在裁剪窗口之前,即zf,否则第六位为0。第4章 图形变换 三维编码裁剪法与二维编码裁剪法相类似,如果线段两端点的六位二进制编码都为零,则该线段完全落在裁剪窗口的空间之内;如果两端点的编码逐位求逻辑“与”后为非零,则该线段完全落在裁剪窗口空间之外;否则,该线段一定与裁剪空间的某个面相交。这时,需要对该线段作分段处理,进行线段与裁剪空间某个面交点的计算,并取有效交点。第4章 图形变换 3.空间线段与裁剪面的求交运算空间线段与裁剪面的求交运算裁剪空间六个平面的平面方程一般表示为ax+by+cz+d=0设三维线段L的两端点分别为P1(x1,y1,z1)和P2(x2,y2,z2),其参数方程为x=x1+(x2-x1)t=x1+pty=y1+(y2-y1)t=y1+qt t,1z=z1+(z2-z1)t=z1+rt第4章 图形变换 则L与裁剪空间六个面的交点K(x,y,z)应满足x=x1+pty=y1+qtz=z1+rtax+by+cz+d=0(4-46)由式(4-46)可解得第4章 图形变换 下面以平行裁剪空间为例,求一直线与裁剪空间右平面的交点K。右平面方程x=1,将其代入式(4-46),t=(1-x1)/p。若t0,1,则交点在裁剪空间之外。如果t0,1,则将t代入直线方程求得交点坐标为所以有效交点K的坐标为第4章 图形变换 其他五个平面与三维直线段的有效交点求法与以上类似,裁剪窗口内的有效线段为窗口平面上有效交点的连线。对于规格化的透视投影裁剪窗口,其六个面与直线有效交点的求法与上述求法类似。规格化裁剪窗口六个平面方程很简单,在生成线段端点的六位二进制编码时,仅用六个简单的比较就可以解决问题。另外,由于平面方程简单,计算t时减少了很多乘法运算,这就是将任意裁剪空间变换成规格化裁剪空间的原因。