《计算机图形学电子教案优秀PPT.ppt》由会员分享,可在线阅读,更多相关《计算机图形学电子教案优秀PPT.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机图形学电子教案现在学习的是第1页,共47页4.1 图形变换的数学基础l矢量、点和欧氏空间l坐标系和坐标l矩阵与坐标变换l齐次坐标的引入现在学习的是第2页,共47页矢量l矢量具有确定的方向和大小(长度)l矢量是流动的,无位置概念l矢量的运算 C=A+B,B=2A现在学习的是第3页,共47页矢量l点表示空间中的一个位置l点和另一个点相减得到一个矢量 v=P-Ql矢量和点相加得到另一个点 P=Q+vl点和矢量都是客观实在现在学习的是第4页,共47页欧氏空间l点乘 a=u。v(a为实数,u、v为矢量)l0。0=0l如果u。v=0,则称u和v垂直l矢量的长度|v|,|v|2=v。v现在学习的是第5
2、页,共47页欧氏空间l投影 u。v=|u|v|cos()l矢量乘 n=uxv,|n|=|u|v|sin()由右手法则确定方向现在学习的是第6页,共47页坐标系和坐标l为了描述矢量和点引入坐标系l在3维空间,给出三个线性无关的矢量v1、v2、v3 l则任意一个矢量w可以表示为:w=a1v1+a2v2+a3v3 ,(a1a2a3为实数)因此,可以将矢量w记为a(a1,a2,a3)现在学习的是第7页,共47页坐标系和坐标l在三维空间给定一个点P0和三个线性无关的矢量v1、v2、v3 l则,空间中任何一个点P可以表示为:P=P0+a1v1+a2v2+a3v3,(a1a2a3为实数)称点P的坐标为(a1
3、,a2,a3)写成矩阵形式为:P=P0+(a1,a2,a3)(v1、v2、v3)T现在学习的是第8页,共47页坐标系之间的变换l已知坐标系I:原点Q0,坐标轴 u1,u2,u3 坐标系II:原点P0,坐标轴v1,v2,v3Q0在坐标系II的坐标为:q1,q2,q3现在学习的是第9页,共47页坐标系之间的变换l写成矩阵形式:Q0=P0+q1,q2,q3 v1,v2,v3 Tu1,u2,u3 T=M v1,v2,v3 T其中:现在学习的是第10页,共47页坐标系之间的变换l对于空间中的任一个点D,如果已知D点在坐标系II中的坐标为d1d2d3 l则:D=P0+d1d2d3 v1,v2,v3 T =
4、Q0-q1q2q3 v1,v2,v3 T +d1d2d3 v1,v2,v3 T =Q0+(d1d2d3-q1q2q3)M-1u1,u2,u3T l所以,D点在坐标系I中的坐标为(d1d2d3-q1q2q3)M-1现在学习的是第11页,共47页齐次坐标的引入l对于三维空间中的点,其坐标用三个实数表示,如:(X,Y,Z)。l还可以用四个实数来表示一个点的坐标,写为:(X,Y,Z,W),其中W不能为0。该坐标与(X/W,Y/W,Z/W)等价。l这样做有许多方面的好处:1、很容易表示无穷远点2、容易用矩阵与矢量乘的方法表示点的平移操作,以便简化计算过程。现在学习的是第12页,共47页齐次坐标的引入l例
5、一:式子P=P0+a1v1+a2v2+a3v3的简化:非齐次坐标:lP=P0+a1,a2,a3 v1,v2,v3 T齐次坐标:现在学习的是第13页,共47页齐次坐标的引入l将关系式l简化为:现在学习的是第14页,共47页齐次坐标的引入l对于空间中的任一个点D,如果已知D点在坐标系II中的坐标为d1d2d31 lD=d1d2d31 v1,v2,v3,P0 Tl =d1d2d31M-1 u1,u2,u3,Q0 Tl推导过程也变得简单了lQ=q1,q2,q2,1 u1,u2,u3,Q0 Tl =q1,q2,q2,1Mv1,v2,v3,P0 T现在学习的是第15页,共47页4.2 图形的几何变换l图形
6、几何变换的目的l平移、旋转、缩放l变换的组合现在学习的是第16页,共47页图形几何变换的目的l改变图形的l位置、l方向、l大小现在学习的是第17页,共47页平移(Translation)lP=P+D ,其中D=ax,ay,az,0lP=px,py,pz,1lP=px,py,pz,1l写成矩阵与矢量的乘法P=TP现在学习的是第18页,共47页缩放(scaling)lP=SP现在学习的是第19页,共47页旋转(rotation)lP=RP现在学习的是第20页,共47页几何变换的组合现在学习的是第21页,共47页4.3显示变换l三维图形显示的物理模型l透视投影变换l平行投影变换l视口变换l视坐标系与
7、视变换l三维图形的显示流程l视口到三维空间的反变换现在学习的是第22页,共47页三维图形显示的模型l视景体(圆台、四棱台)现在学习的是第23页,共47页三维图形显示的模型 l视景体的参数现在学习的是第24页,共47页三维图形显示的模型l上方矢量现在学习的是第25页,共47页三维图形显示的模型l前后裁剪面现在学习的是第26页,共47页三维图形显示的模型l视角的影响现在学习的是第27页,共47页三维图形显示的模型l视口长宽比例的影响现在学习的是第28页,共47页三维图形显示的模型l平行投影的显示模型现在学习的是第29页,共47页透视投影变换现在学习的是第30页,共47页透视投影变换X/X=Y/Y=
8、Z/dX=Xd/ZY=Yd/ZZ=d透视投影变换矩阵:现在学习的是第31页,共47页平行投影变换现在学习的是第32页,共47页视口变换WHX/W=(X+W/2)/W X=XW/W+W/(2W)(H-Y)/H=(Y+H/2)/H Y=-YH/H+H-H/(2H)W/W 0 0 W/(2W)M=0 -H/H 0 H-H/(2H)0 0 1 0 0 0 0 1 现在学习的是第33页,共47页视坐标系与视变换l给定视坐标系:(Ex,Ey,Ez),(Ax,Ay,Az),(px,py,pz)E 视点 A 被观察点 p向上方向矢量ln=(E-A)/|E-A|lu=(pXn)/|pXn|lv=nXu现在学习的
9、是第34页,共47页4.视坐标系与视变换u=(ux,uy,uz,0)v=(vx,vy,vz,0)n=(nx,ny,nz,0)E=(Ex,Ey,Ez,1)CN=(u,v,n,E)T ,CO=(X,Y,Z,O)T,CN=M X CO CO=M-1XCNM=ux uy uz 0vx vy vz 0nx ny ny 0Ex Ey Ez 1D=(Dx,Dy,Dz,1)XCO=(Dx,Dy,Dz,1)M-1XCN(Du,Dv,Dn,1)=(Dx,Dy,Dz,1)M-1(Du,Dv,Dn,1)T=(M-1)T(Dx,Dy,Dz,1)T 视变换矩阵视变换矩阵(M-1)T现在学习的是第35页,共47页4.4图形
10、显示的流程l设一个点的世界坐标系下坐标为:Pl设世界坐标向视坐标变换的矩阵为:T视l设投影矩阵为:T投l设视口变换矩阵为:Twl则:Pw=Tw T投T视P,令T=Tw T投T视,则:Pw=TP现在学习的是第36页,共47页4.5图形显示中的裁剪问题l视景体l三维图形显示过程中的裁剪l平面裁剪算法(自学)l三维裁剪算法(自学)现在学习的是第37页,共47页4.6OpenGL的坐标变换机制l有关的数据结构 lModelView变换机制 lModel变换的使用方法 lView的变换使用方法 lProject的使用方法 l显示流程现在学习的是第38页,共47页有关的数据结构l两个坐标变换矩阵(4X4)
11、ModelView矩阵 GL_MODELVIEWProjection矩阵GL_PROJECTIONglMatrixMode(GL_MODELVIEW);glMatrixMode(GL_PROJECTION);l两个用于存储矩阵的堆栈:ModelView矩阵堆栈Projection矩阵堆栈现在学习的是第39页,共47页ModelView变换机制lModel变换的目的是改变物体的位置和尺寸lView变换的目的是改变观察的方向l以上两个目的是用一个手段来实现的,即:操作ModelView矩阵现在学习的是第40页,共47页Model变换的使用方法l首先使以下函数,表示开始操作ModelView矩阵gl
12、MatrixMode(GL_MODELVIEW);l操作ModelView 矩阵进行Model变换的方法分两类:lglLoadIdentity();lglLoadMatrixf(*m);lglMultMatrixf(*m);lglTranslatef(dx,dy,dz);lglRotatef(angle,vx,vy,vz);lglScalef(sx,sy,sz);现在学习的是第41页,共47页View变换的使用方法l可以使用上述所有函数来设值观察方向l利用以下函数则更方便:gluLookAt(ex,ey,ez,ax,ay,az,px,py,pz);e视点a被观察点p向上方向现在学习的是第42页
13、,共47页平行投影的使用方法l投影矩阵首先必须使用下面的函数进入投影矩阵模式lglMatrixMode(GL_PROJECTION);可以直接设值投影矩阵的值来进行投影,但一般使用下面的函数设值投影矩阵:lglOrtho(xmin,xmax,ymin,ymax,near,far);lglFrustum(xmin,xmax,ymin,ymax,near,far);lgluPerspective(fovy,aspect,near,far);现在学习的是第43页,共47页lglOrtho(xmin,xmax,ymin,ymax,near,far);现在学习的是第44页,共47页lglFrustum(xmin,xmax,ymin,ymax,near,far);现在学习的是第45页,共47页lgluPerspective(fovy,aspect,near,far);现在学习的是第46页,共47页lOpenGL执行的次序lOpenGL程序编程的次序、操作投影矩阵,设置投影方式和参数(视坐标系窗口坐标)、操作ModelView矩阵,设置观察方向和参数(世界坐标视坐标)、操作ModelView矩阵,设置物体的位置(局部坐标世界坐标)、给出待绘制物体的坐标(在局部坐标系下的坐标)显示流程现在学习的是第47页,共47页
限制150内