《图形变换与图形观察.ppt》由会员分享,可在线阅读,更多相关《图形变换与图形观察.ppt(40页珍藏版)》请在三一办公上搜索。
1、计算机辅助设计及图形学第9讲 图形变换与观察,华中科技大学机械学院CAD中心吴义忠,主要内容,二维几何变换二维齐次变换二维观察三维几何变换投影变换三维观察OpenGL图形变换与观察功能,9.1 二维几何变换,二维图形几何变换可通过矩阵运算实现,令:,称T为变换矩阵,有:,这里x,y为变换后点的坐标,x,y为变换前点的坐标,变换矩阵中a,b,c,d的不同取值,可以实现各种不同变换,从而达到对图形进行变换的目的。,二维图形的基本几何变换包括:比例变换、对称变换、错切变换、旋转变换、平移变换等,在变换矩阵 中,令 b=c=0,则比例变换为:,式中a,d分别为x,y方向上的比例因子,二维对称变换,对坐
2、标轴的对称变换:,1)对y轴对称:,2)对X轴对称:,对坐标原点的对称变换:,对原点对称:,二维比例变换,二维旋转变换,在二维空间里,我们规定:图形的旋转是指绕坐标系原点旋转角,且逆时针为正,顺时针为负,变换矩阵为:,由式 可知:,对右图字母 T 绕坐标原点进行旋转变换(旋转60),则变换后的坐标为:,二维平移变换,来实现,但是,若实现平移变换,变换前后的坐标必须满足下面的关系:,上述四种变换都可以通过变换矩阵,式中x,y是平移量,应为常数,但是应用前述变换矩阵对点进行变换,则有:,上式中的cy,bx均非常量,因此用原来的22的变换矩阵是无法实现平移变换。,解决方法:将变换矩阵增加一行一列,则
3、可对点进行平移变换,9.2 齐次变换,在平移变换中,我们将x y扩充为x y 1 实际上是由二维向量变为三维向量。这种用三维向量表示二维向量的方法叫做齐次坐标法。进一步推广,用n+1维向量表示n维向量的方法称之为齐次坐标法。所谓齐次坐标就是用n+1维向量表示n维向量得到的坐标。对齐次坐标进行坐标变换称为齐次变换,相应的变换矩阵称为齐次变换矩阵。设三维空间点P的坐标为(x,y,z),它是唯一的。若用齐次坐标表示时,则为(hx,hy,hz,h),且不唯一。,齐次变换定义,齐次变换几何意义,将Oxy坐标系增加一与x轴和y轴正交的w轴。在 w=1 的平面上有点 P1(x,y,1),则当w由0变化到无穷
4、时,齐次坐标 Pw(xw,yw,w)将处在由OP1定义的射线OQ上。二维坐标则是该射线在w1平面上的交点,则任意(xw yw,w)的座标为:,二维齐次变换表示了在 w=1 平面上点的坐标变换,即 P1 到 P1*的坐标变换。,二维齐次变换,二维齐次变换矩阵为:,其中22阶矩阵 可以实现图形的比例、对称、错切、旋转等基本变换;12阶矩阵 可以实现图形的平移变换;21阶矩阵 可以实现图形的透视变换,而s可以实现图形的全比例变换。,二维几何变换汇总表,二维齐次变换实现,对话框设计二维点Position2D对象矩阵CMatrix3D对象,二维组合变换,前面介绍的几种变换可用统一的变换矩阵来实现,称之基
5、本变换。但有些变换仅用一次基本变换是不够的,必须由两次或多次基本变换组合才能实现。这种由多种基本变换组合而成的变换称之为组合变换,相应的变换矩阵叫做组合变换矩阵。,设坐标P经过n次变换T1,T2,Tn到P*,则变换结果为:P*=PT1T2Tn=PT 式中,T=T1T2Tn 为总的变换矩阵,组合变换的目的是将一个变换序列表示为一个变换矩阵。,绕任意点旋转变换?,绕任意点旋转变换,平面图形绕任意点C(x,y)旋转角需要通过组合变换实现,步骤如下:(1)将旋转中心平移到原点;(2)将图形绕坐标系原点旋转角;(3)将旋转中心平移回到原来位置。,组合变换矩阵的顺序不能颠倒,顺序不同,则变换的结果亦不同,
6、如右图:,9.3 二维观察变换,在实际应用中,通常把在用户坐标系中选定的需要显示图形的区域称为窗口,并能控制在显示屏上显示图形的位置和大小,把在显示坐标系中规定的显示图形区域称为视口。观察变换就是把用户坐标系中选定窗口的图形变换到显示器视口中进行显示。设用户选定的窗口范围为(wxl,wyl)和(wxr,wyr),视口范围为(vxl,vyl)和(vxr,vyr),将窗口中的图形转为视口中图形的过程为:(1)先平移窗口使其左下角与坐标原点重合;(2)再比例变换使其大小与视口相等;(3)最后再通过平移使其移到视口位置,如下图所示:,由此可得观察变换矩阵为:,9.4 三维几何变换,三维几何形体可采用实
7、体模型来表达,也就是说:(1)三维几何形体由一系列点集和这些点集之间的连接关系表达,通常用点表、边表、环表、面表等信息表达。,(2)当一个形体在坐标系中平移、旋转时,只是改变点集的坐标位置,而不改变各点、边、面之间的任何连接关系。(3)几何形体的三维变换只需对形体的点表信息进行变换即可。(注:在CAD系统中,三维形体中的边的方程及面的方程都是由点集信息推导出来的,不需直接对边的方程和面的方程进行变换),三维几何变换是二维几何变换的扩展,用三维齐次变换矩阵(44矩阵)表示,可表示包括平移变换、比例变换、错切变换、对称变换、绕坐标轴的旋转变换、绕空间任意轴的旋转变换等。三维齐次变换矩阵如下:,比例
8、、对称变换矩阵,三维齐次变换矩阵,sx,sy,sz0,沿坐标轴方向作放缩变换;当sx=1,sy=sz=-1时,相对于x轴中心对称;当sx-1,sy=sz=1时,相对于yOz平面对称当sx=sy=sz=-1时,相对于原点中心对称。,平移变换矩阵,式中tx、ty、tz 为平移分量,绕坐标轴的旋转变换,绕任意轴的旋转变换?,三维组合变换,与二维组合变换一样,通过对三维基本变换矩阵的组合,可以实现对三维物体的复杂变换。设坐标P经过n次变换T1,T2,Tn到P*,则变换结果为:P*=PT1T2Tn=P T与二维相同,组合变换时,同样需要注意乘法的顺序。,绕任意轴的旋转变换,绕任意轴旋转变换是组合变换,变
9、换过程比较复杂。首先,对物体作平移和绕轴旋转变换,使得所绕之轴与某一根标准坐标轴重合;然后,绕该标准坐标轴作所需角度的旋转;最后,通过逆变换使所绕之轴恢复到原来位置。这个过程须由7个基本变换的级联才能完成。,如右图,设旋转任意轴为p1(x1,y1,z1),p2(x2,y2,z2)两点定义的单位矢量(a,b,c),绕轴旋转角度为。,可用7个步骤实现:步骤 1:平移T(x1,y1,z1)使p1点与原点重合,变化矩阵为:,变化矩阵为:,其中:,步骤2:Rx(),绕X轴旋转 角,使得轴p1p2落入平面xoz内,其中:,步骤3:Ry(),绕Y轴旋转()角,使p1p2与z轴重合;,x,z,y,u,a,v,
10、o,步骤4:Rz(),绕Z轴(即P1P2 轴)旋转角度,其变化矩阵为:,步骤5:Ry(),作步骤3的逆变换T3-1;步骤6:Rx(),作步骤2的逆变换T2-1;步骤7:T(x1,y1,z1),作步骤1的逆变换 T1-1。,其组合变换矩阵为:T T1 T2 T3 T4 T3-1 T2-1 T1-1,变化矩阵为:,绕任意轴旋转的程序实现,对话框设计三维点Position3D对象矩阵CMatrix4D对象,三维形体几何变换示例,假定一六面体ABCDEFGH各点的坐标分别为(x 1,y 1,z 1),.,(x 8,y 8,z 8),则经过图形变换后的坐标为:,式中:T为所要进行的图形变换矩阵,注意灵活
11、应用复合变换!,9.5 形体的投影变换,将三维图形向二维平面上投影生成二维图形表示的过程称为投影变换。根据视点的远近,投影分为平行投影和透视投影。当投影中心(观察点)与投影平面之间的距离为无穷远时,为平行投影,否则为透视投影。,投影变换定义,透视投影的图形与眼睛观察景物的原理及效果是一致的,常用于图形的真实效果显示。平行投影后直线间的平行关系不变,常用于三维图形交互和生成工程图的视图。,(a)平行投影变换示意图,(b)透视投影变换示意图,投影变换分类,正交投影(正投影)x,y,z的调换,投影方向垂直于投影平面时称为正平行投影,正交投影(也称正投影)是正平行投影的特殊形式,其投影平面相互垂直,常
12、用于生成工程图的三视图,三视图变换矩阵,主视图 俯视图 左视图,只显示XY前二维的值,Z值忽略,轴测投影,将三维图形绕其模型坐标系的x轴和y铀分别旋转一定的角度后,再垂直于xOy平面向该平面投影,可获得具有立体感的轴测图。正轴测投影:使得Z轴指向视点(视线为立方体主对角线),将坐标系作两次旋转变换TRx()和TRy(),TRx(),TRx()使新坐标系的z轴指向视点。,按绕任意轴旋转计算。,同样,显示XY前二维的值,Z值忽略,透视投影,透视投影的视线(投影线)是从视点(观察点)出发,视线是不平行的。不平行于投影平面的视线汇聚的一点称为灭点,在坐标轴上的灭点叫做主灭点。主灭点数和投影平面切割坐标
13、轴的数量相对应。按照主灭点的个数,透视投影可分为一点透视、二点透视和三点透视。,一点透视投影,h为视点到显示平面距离;zvp为显示平面z坐标;zprp为视点的z坐标,9.6 三维观察变换及显示流程,在 CG 和 CAD 软件系统中,涉及许多坐标系和坐标变换.,方便于物体模型定义的坐标系,又称局部坐标系、或工作坐标系。因为物体模型在某一任意坐标系下定义可能是非常困难。通过模型变换再实现其任意位置。,图(a),图(b),模型坐标系,世界坐标系(也有称用户坐标系)是用户用于定义所有物体的统一参考坐标系,它在计算过程中始终保持唯一性,无论物体在何位置,在什么模型坐标系,一般应变换到统一的世界坐标系(即
14、统一的参照坐标系),然后进行其它计算,避免坐标系的混乱,引起不必要的错误。物体从模型坐标下经几何变换到世界坐标系称模型变换,通过坐标变换实现。,世界坐标系(WC),观察坐标系(VRC),通常取物体所在的坐标系为世界坐标系(WC),投影平面与投影中心也在世界坐标系中指定。依赖于投影平面和投影中心(为照相机底片)建立一个uvn坐标系,称之为观察坐标系(VRC)。,坐标系变换(如世界坐标 向 观察坐标系转换),假定有两个坐标系Oxyz 和Ouvn,如上图:,在坐标系Oxyz中,O的坐标为(Ox,Oy,Oz),Ou、Ov 和On分别为三个单位矢量(ux,uy,uz)、(vx,vy,vz)和(nx,ny
15、,nz),要将坐标系Oxyz 中的图形变换到坐标系Ouvn中去,称该坐标变换为T xyzuvn,其变换为:,则点的坐标计算:,x y z 1=x y z 1 T,x y z 1 T-1=x y z 1,三维观察变换,三维观察变换所起的作用是完成从用户空间选取的一部分物体描述变换到显示屏上指定的视口中的图形描述,类似于照相机成像模型。从用户的图象描述产生显示器上的图形描述的处理过程如图所示:,三维图形显示流程,9.7 OpenGL图形变换,4个矩阵堆栈Matrix stack:模型视、投影视图(二维工程图)、纹理和颜色位于栈顶的矩阵为当前矩阵,为了记住当前矩阵,常用glPushMatrix()和
16、glPopMatrix()函数;若自定义矩阵用glLoadMatrix(m),矩阵相乘用glMultMatrix(m);MODELVIEW下的图形变换:glTranslatef(deltaX,deltaY,deltaZ);glRotatef(angle,axisX,axisY,axisZ);glScalef(Sx,Sy,Sz);,OpenGL观察功能,二维观察函数:投影模式glMatrixMode(GL_PROJECTION);glLoadIdentity();裁剪窗口gluOrtho2D(xmin,xmax,ymin,ymax);视口函数 glViewport(xvmin,yvmin,wid
17、th,height),OpenGL三维观察函数,三维一般观察glMatrixLoad(GL_MODELVIEW);gluLookat(x0,y0,z0,xr,yr,zref,Vx,VyVz);glOrtho(xmin,xmax,ymin,ymax,dnear,dfar);正交投影glMatrixLoad(GL_PROJECTION);glOrtho2D(xmin,xmax,ymin,ymax);透视观察glFrustrum(xmin,xmax,ymin,ymax,dnear,dfar);对称透视 gluPerspective(theta,aspect,dnear,dfar);剖视观察glCli
18、pPlane(id,planeParameters);glEnable(id);,实例代码,见 TransparentTeapot三维观察 工程,思考题:,2、掌握投影变换基本原理及方法,了解计算机图形的基本显示流程。,1、掌握图形变换的基本方法,重点掌握平移变换、旋转变换。以立方体为例,绕立方体对角线(不通过坐标原点)旋转90度,求变换后的坐标。,1、编程实现基本图形元素(直线、圆)的绕任意点旋转一个角度得到新的图形:1)画原始图形;2)对话框给定点和角度;3)对图形的关键点进行变换,得到新的点;4)利用新的关键点建立新的图形。2、参考已有程序,给定一3D点,设计对话框,并实现各种变换(平移、绕轴旋转、比例、错切、透视、投影)的新点座标计算。3.熟悉OpenGL观察函数,上机练习:,3、对二维、三维齐次变换,分析哪些组合变换可以同时进行,即一个齐次变换矩阵的元素设定能同时实现多个变换?T=T1*T2=T2*T1?,