计算机图形学曲线曲面_第1页
计算机图形学曲线曲面_第2页
计算机图形学曲线曲面_第3页
计算机图形学曲线曲面_第4页
计算机图形学曲线曲面_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北方工业大学 计算机图形学课程实验报告题 目:实验五 曲线曲面学 院:计算机学院专 业:数字媒体技术指导教师:蔡兴泉学生班级:学生学号:学生姓名:教师评定:实验报告5 曲线曲面一实验目的1熟悉OpenGL图形库;2掌握曲线曲面实现算法。二实验环境1软件环境:操作系统:WinXp应用软件:VC6.0,OpenGL2硬件环境(查看自己的机子)CPU: Intel PIV 2.80GHz内存RAM: 1GB 显卡:NVIDIA GeForce7650,256M显存三实验内容1. 写程序实现Bezier曲线2. 写程序实现绘制3个半径不同、颜色不同的小球3. 写程序实现一个场景,绘制1个立方体、1个圆

2、锥、1个圆柱、1个茶壶四程序及结果1. Bezier曲线实现关键程序及注释void RenderScene(void) int i; glClear(GL_COLOR_BUFFER_BIT) /设置贝塞尔曲线 glMap1f(GL_MAP1_VERTEX_3, /生成的数据类型 0.0f,/u值的下界 100.0f,/ /u值的上界 3,/顶点在数据中的间隔,x,y,z所以间隔是3 nNumPoints,/u方向上的阶,即控制点的个数 &ctrlPoints00);/指向控制点数据的指针 glEnable(GL_MAP1_VERTEX_3);/ /必须在绘制顶点之前开启glBegin(GL_L

3、INE_STRIP); /使用画线的方式来连接点for(i = 0; i = 100; i+)glEvalCoord1f(GLfloat) i); /求的点坐标 glEnd(); DrawPoints();/画点 glutSwapBuffers();/ /交换两个缓冲区指针 2. 小球绘制实现关键程序及注释void RenderScene(void) GLUquadricObj *pObj;/ 定义Quadric Object glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/清屏 glPushMatrix();/矩阵状态 glTransl

4、atef(0.0f, -1.0f, -5.0f); glRotatef(xRot, 1.0f, 0.0f, 0.0f);/ glRotatef(yRot, 0.0f, 1.0f, 0.0f); pObj = gluNewQuadric();/创建一个新的二次曲面状态对象 gluQuadricNormals(pObj, GLU_SMOOTH);/ glPushMatrix(); glColor3f(1.0f, 1.0f, 1.0f); /定义颜色为白 glTranslatef(0.0f, 1.0f, 0.0f);/圆心坐标gluSphere(pObj, .3f, 26, 13); / 绘制小球半

5、径为0.3 glPopMatrix();glPushMatrix(); glColor3f(1.0f, 0.0f, 0.0f);/定义颜色为红glTranslatef(0.0f, 0.0f, 0.0f); / 圆心坐标 gluSphere(pObj, .5f, 26, 13);/绘制小球半径为0.5 glPopMatrix();/glPushMatrix();/ glColor3f(0.0f, 0.0f, 0.0f);/ 定义颜色为黑glTranslatef(0.0f, 2.0f, 0.0f); / 圆心坐标 gluSphere(pObj, 0.2f, 26, 13);/ 绘制小球半径为0.2

6、 glPopMatrix(); glPopMatrix();/恢复矩阵状态 glutSwapBuffers();/交换缓冲3. 场景绘制实现关键程序及注释void RenderScene(void) GLUquadricObj *pObj;/ 定义Quadric Object glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/清屏 glPushMatrix();/保存矩阵 glTranslatef(0.0f, -1.0f, -5.0f); glRotatef(xRot, 1.0f, 0.0f, 0.0f); glRotatef(yRot,

7、0.0f, 1.0f, 0.0f); pObj = gluNewQuadric();/创建一个新的二次曲面状态对象 gluQuadricNormals(pObj, GLU_SMOOTH); /绘制正方体 glBegin(GL_QUADS); /顶面 glNormal3f(0.0f,1.0f,0.0f); glVertex3f(0.5f,0.5f,0.5f); glVertex3f(0.5f,0.5f,-0.5f); glVertex3f(-0.5f,0.5f,-0.5f); glVertex3f(-0.5f,0.5f,0.5f); glEnd(); glBegin(GL_QUADS); /底面

8、 glNormal3f(0.0f,-1.0f,0.0f); glVertex3f(0.5f,-0.5f,0.5f); glVertex3f(-0.5f,-0.5f,0.5f); glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(0.5f,-0.5f,-0.5f); glEnd(); glBegin(GL_QUADS); /前面 glNormal3f(0.0f,0.0f,1.0f); glVertex3f(0.5f,0.5f,0.5f); glVertex3f(-0.5f,0.5f,0.5f); glVertex3f(-0.5f,-0.5f,0.5f); glV

9、ertex3f(0.5f,-0.5f,0.5f); glEnd(); glBegin(GL_QUADS); /背面 glNormal3f(0.0f,0.0f,-1.0f); glVertex3f(0.5f,0.5f,-0.5f); glVertex3f(0.5f,-0.5f,-0.5f); glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f,0.5f,-0.5f); glEnd(); glBegin(GL_QUADS); /左面 glNormal3f(-1.0f,0.0f,0.0f); glVertex3f(-0.5f,0.5f,0.5f); glV

10、ertex3f(-0.5f,0.5f,-0.5f); glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f,-0.5f,0.5f); glEnd(); glBegin(GL_QUADS); /右面 glNormal3f(1.0f,0.0f,0.0f); glVertex3f(0.5f,0.5f,0.5f); glVertex3f(0.5f,-0.5f,0.5f); glVertex3f(0.5f,-0.5f,-0.5f); glVertex3f(0.5f,0.5f,-0.5f); glEnd(); /绘制圆锥 glPushMatrix(); glCol

11、or3f(1.0f, 0.6f, 0.3f); glTranslatef(0.0f, 0.5f, 0.0f);glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); gluCylinder(pObj, 0.18f, 0.0f, 0.3f, 26, 13); glPopMatrix(); / 绘制圆柱 glPushMatrix(); glColor3f(0.0f, 0.0f, 0.0f); glTranslatef(0.0f, 1.3f, 0.0f); glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); gluCylinder(pObj, 0.17f, 0

12、.17f, 0.4f, 26, 13); glDisable(GL_CULL_FACE); gluDisk(pObj, 0.28f, 0.28f, 26, 13); glTranslatef(0.0f, 0.0f, 0.40f); gluDisk(pObj, 0.0f, 0.17f, 26, 13); glPopMatrix();/绘制/茶壶 glPushMatrix();glColor3f(0.0f, 1.0f, 1.0f); glTranslatef(0.0f, 1.0f, 0.0f); glutSolidTeapot(0.25f); glPopMatrix(); glPopMatrix();/ glutSwapBuffers();/交换缓冲 五实验收获通过这次实验,我熟悉了OpenGL图形库,掌握了曲线曲面的算法,.掌握了了 Bezie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论