资源描述:
《计算机图形学三维对象的表示课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1第6章三维对象的表示多面体OpenGL多面体函数曲面OpenGl曲面函数分形几何方法粒子系统2三维对象的表示图形场景包含多种不同类型的对象和材质表面可以用多边形、二次曲面、样条曲面、实体几何构造技术、分形结构、粒子系统等方法来表示三维对象实体表示方法通常分为两大类:边界表示和空间分区表示3多面体三维图形对象中运用边界表示的最普遍方式是使用一组包围对象内部的表面多边形为了用一组多边形面片描述一个对象,为覆盖对象表面的每一个对变形给出一组顶点。这些面片的顶点坐标和边的信息以及每一个多边形的表面法向量等其他信息
2、存入一张表中4OpenGL多面体函数OpenGL多边形填充函数使用OpenGL图元常量GLUT规则多面体函数在GLUT中有10个函数用来生成规则多面体,5个生成线框图,另外5个以浓淡填充区方式显示多面体面片5OpenGL几何绘图图元GL_POINTS独立的点GL_LINES将每对顶点视为一条线段GL_LINE_STRIP一系列相连的线段GL_LINE_LOOP同上,同时在第一个和最后一个顶点之间绘制一条线段GL_TRIANGLES将每3个顶点视为一个三角形GL_TRIANGLE_STRIP三角形条带GL_T
3、RIANGLE_FAN三角形扇GL_QUADS将每4个顶点视为一个四边形GLQUAD_STRIP四边形条带GL_POLYGON简单的凸多边形6GLUT规则多面体函数函数线框描述面片描述四面体glutWireTetrahedron()glutSolidTetrahedron()六面体glutWireCube()glutSolidCube()八面体glutWireOctahedron()glutSolidOctahedron()十二面体glutWireDodecahedron()glutSolidDodecah
4、edron()二十面体glutWireIcosahedron()glutSolidIcosahedron()7GLUT规则多面体函数8程序示例-1#includeGLsizeiwinWidth=500,winHeight=500;voidinit(void){glClearColor(1.0,1.0,1.0,0.0);}9程序示例-2voiddisplayWirePolyhedra(void){glClear(GL_COLOR_BUFFER_BIT);glColor3f(0.0,0.0,1.
5、0);gluLookAt(5.0,5.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);glScalef(1.5,2.0,1.0);glutWireCube(1.0);glScalef(0.8,0.5,0.8);glTranslatef(-6.0,-5.0,0.0);glutWireDodecahedron();10程序示例-3glTranslatef(8.6,8.6,2.0);glutWireTetrahedron();glTranslatef(-3.0,-1.0,0.0);glutWireO
6、ctahedron();glScalef(0.8,0.8,1.0);glTranslatef(4.3,-2.0,0.5);glutWireIcosahedron();glFlush();}11程序示例-4voidwinReshapeFcn(GLintnewWidth,GLintnewHeight){glViewport(0,0,newWidth,newHeight);glMatrixMode(GL_PROJECTION);glFrustum(-1.0,1.0,-1.0,1.0,2.0,20.0);glMat
7、rixMode(GL_MODELVIEW);glClear(GL_COLOR_BUFFER_BIT);}12程序示例-5voidmain(intargc,char*argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE
8、GLUT_RGB);glutInitWindowPosition(100,100);glutInitWindowSize(winWidth,winHeight);glutCreatWindow("Wire-FramePolyhed
9、ra");init();glutDisplayFunc(displayWirePolyhedra);glutReshapeFunc(winReshapeFcn);glutMainLoop();}13二次曲面球面椭球面环面14OpenGL二次曲面和三次曲面函数使用OpenGL实用工具包(GLUT)和实用库(GLU)中的函数可以显示一个球面和其他一些三维的二次曲面对象。GLUT有一个函数用来显示由双三次曲面片定义的茶