【编者按】网学网VC与C++类别频道为大家收集整理了“基于VC++MFC的OPENGL真实感图形学演示系统“提供大家参考,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
毕业设计 2.1.1 空间齐次坐标在空间直角坐标系中,任意一点可用一个三维坐标矩阵[x y z]表示。如果将该点用一个四维坐标的矩阵[Hx Hy Hz H]表示时,则称为齐次坐标表示方法。在齐次坐标中,最后一维坐标H称为比例因子。 在OpenGL中,二维坐标点全看作三维坐标点,所有的点都用齐次坐标来描述,统一作为三维齐次点来处理。每个齐次点用一个向量(x, y, z, w)表示,其中四个元素全不为零。齐次点具有下列几个性质: 1)如果实数a非零,则(x, y, x, w)和(ax, ay, az, aw)表示同一个点,类似于x/y = (ax)/( ay)。 2)三维空间点(x, y, z)的齐次点坐标为(x, y, z, 1.0),二维平面点(x,y)的齐次坐标为(x, y, 0.0, 1.0)。 3)当w不为零时,齐次点坐标(x, y, z, w)即三维空间点坐标(x/w, y/w, z/w);当w为零时,齐次点(x, y, z, 0.0)表示此点位于某方向的无穷远处。 注意:OpenGL中指定w大于或等于0.0。 2.1.2 空间顶点的定义在OpenGL中,所有几何物体最终都由有一定顺序的顶点集来描述。 函数glVertex{234}{sifd}[v](TYPE coords)可以用二维、三维或齐次坐标定义顶点。例如glVertex2s(2,3) 表示一个空间顶点(2, 3, 0)。 2.1.3 立方体模型的建立在OPENGL中立方体模型的建立有很多方法,这里我来介绍两种比较常用的。一种是调用OPENGL中的库函数void auxWireCube(GLdouble size) ,GLdouble size表示该立方体的大小参数,该函数画的是一个空心的立方体模型;void auxSolidCube(GLdouble size)则描述的是一个实心的立方体。另一种是通过OpenGL三维图形的函数库所定义的点、线、多边形等图元构建一个三维立方体模型。这里我们通常用一组相关的顶点序列以一定的方式组织起来定义正四边形,而不采用单独定义多个顶点来构造。在OpenGL中,所有被定义的顶点必须放在glBegain()和glEnd()两个函数之间才能正确表达一个几何图元或物体,否则,glVertex*()不完成任何操作。 在本次课程设计中定义的立方体结构如下: glBegin(GL_QUADS); //前侧面 glVertex3f(-50.0f, -50.0f, 50.0f); // Point 1 (Front) glVertex3f( 50.0f, 50.0f, 50.0f); // Point 3 (Front) glVertex3f(-50.0f, -50.0f, -50.0f); // Point 1 (Back) glVertex3f(-50.0f, 50.0f, -50.0f); // Point 1 (Top) glVertex3f(-50.0f, -50.0f, -50.0f); // Point 1 (Bottom) glVertex3f( 50.0f, -50.0f, -50.0f); // Point 1 (Right) 2.1.4 平移和旋转 在OPENGL中平移和旋转用到下面两个库函数: 平移变换函数如下: void glTranslate{fd}(TYPE x,TYPE y,TYPE z) 三个函数参数就是目标分别沿三个轴向平移的偏移量。这个函数表示用这三个偏移量生成的矩阵乘以当前矩阵。当参数是(0.0,0.0,0.0)时,表示对函数glTranslate*()的操作是单位矩阵,也就是对物体没有影响。 旋转变换函数如下: void glRotate{fd}(TYPE angle,TYPE x,TYPE y,TYPE z) |
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |