计算机图形学课程设计报告

上传人:biao****biao 文档编号:99233633 上传时间:2022-05-31 格式:DOC 页数:11 大小:83.50KB
收藏 版权申诉 举报 下载
计算机图形学课程设计报告_第1页
第1页 / 共11页
计算机图形学课程设计报告_第2页
第2页 / 共11页
计算机图形学课程设计报告_第3页
第3页 / 共11页
资源描述:

《计算机图形学课程设计报告》由会员分享,可在线阅读,更多相关《计算机图形学课程设计报告(11页珍藏版)》请在装配图网上搜索。

1、 课 程 设 计 报告题 目 旋转四面体 系 (部) 土木工程系 专 业 地理信息系统 班 级 地信081 学生姓名 刘自龙 学 号 080716114 8 月 30 日至 9 月 3 日 共 1 周指导教师(签字) 系 主 任(签字) 2010 年 8 月 27 日目录摘要本文主要描述了计算机图形学中,运用C+和OpenGL来实现的绘制一个实体四面体。其中简单的用glutTimerFunc,glutSpecialFunc等函数实现了用光标键控制其旋转和用键盘上的F1、F2键实现自动旋转功能,并加设两个光源,一个为点光源,一个为聚光源。关键字:旋转球体 OpenGL glutTimerFunc

2、 glutMouseFunc glutMotionFunc(1)设计内容运用 C/C+、OpenGL实现。绘制四面体,并用光标键、鼠标控制其旋转或自动旋转。实现添加光源、纹理等真实感图形绘制的功能。界面友好,源程序代码清晰有层次。(2)将OPENGL中的glut中的文件进行配置(3)打开C+开发软件 首先打开C+,选择新建工程当中的,然后选择存储路径进行备份,之后选择,最后进入编写程序界面。二:需求分析 绘制四面体,明确绘制四面体的函数体是glutWireTetrahedron();(绘制线框四面体)glutSolidTetrahedron();(绘制实体四面体), 键盘控制自动旋转的开始和停

3、止,添加一个BOOR变量。 其他功能实现需编程实现 三:详细设计初始化:首先定义定态变量设置菜单项的默认参数是1,即线框四面体(下文介绍),另外设置默认绕X轴,Y轴的旋转参数然后进行光源初始化,设置背景颜色等代码如下:void Initial(void)glClearColor(0.0f,1.0f,1.0f,1.0f);glColor3f(0.0f,0.0f,0.0f); GLfloat mat_ambient=0.2f,0.2f,0.2f,1.0f;GLfloat mat_diffuse=0.8f,0.8f,0.8f,1.0f;GLfloat mat_specular=1.0f,1.0f,1

4、.0f,1.0f;GLfloat mat_shininess=50.0f;GLfloat light0_diffuse=0.0f,0.0f,1.0f,1.0f;GLfloat light0_position=1.0f,1.0f,1.0f,0.0f;GLfloat light1_ambient=0.2f,0.2f,0.2f,1.0f;GLfloat light1_diffuse=1.0f,0.0f,0.0f,1.0f;GLfloat light1_specular=1.0f,0.6f,0.6f,1.0f;GLfloat light1_position=-3.0f,-3.0f,3.0f,1.0f;

5、GLfloat spot_direction=1.0f,1.0f,-1.0f;/定义材质属性glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient); /指定材质的环境反射光反射系数glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse); /指定材质的漫反射光反射系数glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); /指定材质的镜面反射光反射系数glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); /指定材质的镜面反射指数值/li

6、ght0 为漫反射的蓝色点光源glLightfv(GL_LIGHT0,GL_DIFFUSE,light0_diffuse); /指定漫反射光成分glLightfv(GL_LIGHT0,GL_POSITION,light0_position); /指定光源的位置/light1 为红色聚光光源 glLightfv(GL_LIGHT1,GL_AMBIENT,light1_ambient); /指定环境光成分glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse); /指定漫反射光成分glLightfv(GL_LIGHT1,GL_SPECULAR,light1_sp

7、ecular); /指定镜面光成分glLightfv(GL_LIGHT1,GL_POSITION,light1_position); /指定光源位置glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,30.0); /指定聚光截止角glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,spot_direction); /指定聚光灯的方向glEnable(GL_LIGHTING); /启用光源 glEnable(GL_LIGHT0); /启用光源glEnable(GL_LIGHT1); /启用光源设置坐标系参数:运用ChangeSize()函数进行设置代码如下

8、:void ChangeSize(int w,int h)glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(-1.5f,1.5f,-1.5f,1.5f); 绘制正四面体:实体四面体代码是。添加菜单项:菜单函数编写绘制实体四面体glutSolidTetrahedron(); 编写Display函数,运行时执行该函数void Display(void)glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW

9、); /指定设置模型视图变换参数glLoadIdentity(); /消除以前的变换glRotatef(xRot,1.0f,0.0f,0.0f); /绕x轴旋转图形glRotatef(yRot,0.0f,1.0f,0.0f); /绕y轴旋转图形glutSolidTetrahedron(); /绘制实体正四面体glPushMatrix(); /保存当前的模型视图矩阵glFlush();键盘F1,F2实现自动旋转的开始和停止:光标键控制旋转:当程序运行时,四面体为静止的,当按下F1键后,四面体开始自动旋转,当按下F2键后四面体停止自动旋转,变为静止状态。在程序开始时先定义一个布尔变量控制自动旋转的

10、开始和停止:函数的作用下进行有时间间隔的自动旋转另外当按下键盘的上下左右键时,图形就会旋转,否则不旋转,函数代码如下:bool tm=false; /定义一个布尔函数,实现自动旋转的开始和停止 再顶义一个Timer函数,实现四面体按每100毫秒转动一次void TimerFunc(int value)glutPostRedisplay();xRot-=5.0f;yRot+=5.0f;glutPostRedisplay(); /窗口执行重绘操作if(tm)glutTimerFunc(100,TimerFunc,1);以下的代码就是键盘光标和自动旋转的代码:void SpecialKeys(int

11、 key,int x,int y)/光标键控制图形的选转if(key=GLUT_KEY_UP) xRot-=5.0f;if(key=GLUT_KEY_DOWN) xRot+=5.0f;if(key=GLUT_KEY_LEFT) yRot-=5.0f;if(key=GLUT_KEY_RIGHT) yRot+=5.0f;if(xRot355.0f)xRot=0.0f;if(xRot356.0f)yRot=0.0f;if(yRot-1.0f)yRot=355.0f; switch(key)case GLUT_KEY_F1: /按F1键实现自动旋转tm=true;glutTimerFunc(100,T

12、imerFunc,1); /指定定时器回调函数break;case GLUT_KEY_F2: /按F2键停止自动旋转tm=false;glutPostRedisplay(); /窗口执行重绘操作Main函数的调用编写:当对图形的绘制,功能的代码编写完之后,然后进行最后的main函数的编写,调用所有编写的函数即可完成编写工作,代码如下:int main(int argc, char* argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); /窗口使用RGB颜色和单缓存glutInitWindowSize(400,4

13、00);glutInitWindowPosition(100,100);glutCreateWindow(OpenGL四面体绘制函数示例,多光源四面体);glutDisplayFunc(Display);glutReshapeFunc(ChangeSize);glutSpecialFunc(SpecialKeys);Initial();glutMainLoop();return 0;编写到现在已经完成,接下来进行程序的调试,运行阶段系统测试:最后根据题目要求对系统进行调试运行实体四面体运行结果如下:总结: 经过不断的对系统进行修补,测试,图形所需要的基本功能已经基本实现,已经达到预期所需要的结果,能够假设光源,用关标键控制图形的旋转,按下F1、F2键实现自动旋转的开始和停止等功能,但是纹理功能没有实现,以后注意参考资料,达到此项功能。 参考资料计算机图形学基础(第二版) 陆枫 电子工业出版社数据结构 严蔚敏 高等教育出版社

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!