版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华北电力大学实 验 报 告| 实验名称 基于OpenGL的综合实验 课程名称 计算机图形学 | 专业班级: 学生姓名: 学 号: 成 绩:指导教师:姜丽梅 实验日期:2013年5月 实验一:OpenGL基本图元绘制实验1、 实验目的 了解OpenGL图形软件包绘制图形的基本过程及其程序框架,本实验要求熟悉OpenGL基本图元函数的使用。通过使用OpenGL及GLUT库在Visual C+环境下编写图形绘制程序掌握图形绘制的一般框架,从而为进一步做综合性的图形绘制实验奠定基础。2、 实验要求在两个具有不同属性的窗口中分别显示一个旋转的三角形来演示单缓存和双缓存,在旋转过程中不断改变图形的颜色,利
2、用鼠标或菜单可终止/启动图形旋转。3、 实验内容程序包括哪些函数,各个函数的功能以及整个流程。 理解glut程序框架,理解窗口到视区的变换 ,理解OpenGL实现动画的原理。4、 实验过程与结果分析 1、 OpenGL 绘图工具箱1) 清理屏幕;2) 属性说明;3) 指定坐标系;4) 定义几何图元;5) 定义视点;6) 说明视口;7) 绘制物体;8) 结束运行。 2. OpenGL绘制流程 3、 实验方法与步骤 1、正确配置相关文件;对于Microsoft Visual Studio 2010 把 glut.h 放入 1. C:Program FilesMicrosoft SDKsWindow
3、sv7.0AIncludegl 文件目录下把 glut.lib 放入 2. C:Program FilesMicrosoft SDKsWindowsv7.0ALib文件目录下把 glut32.dll 放入 3. C:WindowsSysWOW64文件目录下 2、使用Win32 Console Application创建新项目; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整;通过改变各个函数参数值,观察图形变化,说明产生相应结果的原因,从而进一步了解函数的作用。 5、对运行结果进行保存; 4、实验运行截图: 当旋转的三角形停在不同的颜色变换的时候实验代码:#include &
4、lt;GL/glut.h>#include<Windows.h>#include <math.h>#define DEG_TO_RAD 0.017453static GLfloat theta = 0.0;bool Flag=true;GLfloat rtri; float x=0.0;void display(void) glClear(GL_COLOR_BUFFER_BIT); glColor3f(cos(x), sin(x), 0.0); glBegin(GL_POLYGON); glVertex2f(cos(DEG_TO_RAD*theta), sin(D
5、EG_TO_RAD*theta);glVertex2f(cos(DEG_TO_RAD*(theta+120), sin(DEG_TO_RAD*(theta+120);glVertex2f(cos(DEG_TO_RAD*(theta+240), sin(DEG_TO_RAD*(theta+240); glEnd(); glFlush();void spinDisplay (void) theta = theta + 1.0;x+; if (theta > 360.0)theta = theta - 360.0; glutPostRedisplay(); /标记当前窗口需要重新绘制 void
6、 myReshape(int w, int h) glViewport(0, 0, w, h);/指定平面上一个矩形裁剪区域, glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) gluOrtho2D(-1., 1., -1.*(GLfloat)h/(GLfloat)w, 1.*(GLfloat)h/(GLfloat)w); else gluOrtho2D(-1.*(GLfloat)w/(GLfloat)h, 1.*(GLfloat)w/(GLfloat)h, -1., 1.);void myMouse(int butto
7、n ,int state ,int x ,int y)if(Flag=true)if(button=GLUT_LEFT_BUTTON)Flag=false;Sleep(1000);else return ;else if(Flag=false)Flag=true; return ;void main(int argc, char* argv)glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(100, 100);glutInitWindowSize(500, 50
8、0);glutCreateWindow("spinning square"); glClearColor(0.0, 0.0, 0.0, 1.0);glutMouseFunc(myMouse);glutDisplayFunc(display); glutReshapeFunc(myReshape); glutIdleFunc(spinDisplay); glutMainLoop(); 实验二:OpenGL三维观察综合实验一、实验目的 了解OpenGL图形软件包绘制图形的基本过程及其程序框架,本实验要求对绘制的简单场景(可以自己拟定)综合利用几何变换或gluLookAt函数实现
9、交互式三维观察程序,从而通过本实验加深理解计算机图形学中的三维图形绘制流程的工作原理。二、实验要求对于绘制的立方体(也可以自己拟定)通过键盘移动视点,利用鼠标或键盘控制立方体的旋转方向,从不同角度观察各面颜色不同的立方体。三、实验内容程序包括哪些函数,各个函数的功能以及整个流程。 理解glut程序框架,理解窗口到视区的变换 ,理解OpenGL实现动画的原理。4、 实验过程与结果分析 1、实验分析 通过改变glOtho2D的参数来得到正确的图形。 这个函数描述了一个平行修剪空间。这种投影意味着理观察者较远的对象看上去不会变小。它创建了一个平行视景体,实际上这个函数的操作是创建了一个正射投影矩阵。
10、其中近裁剪平面是一个矩阵,矩阵左下角点的三维空间坐标是(left,bottom,near)。 对绘制的三维场景综合利用几何变换或gluLookAt函数实现交互式三维观察。 实验运行结果截图:通过按不同的鼠标键让图形从不同的方向旋转通过按不同的键盘的键让图形从不同的方向旋转而且改变大小 结果分析glLookAt()函数定义了视点矩阵,并用该矩阵乘以当前矩阵。 viewer0,viewer1,viewer2定义了视点的位置,centerx centery centerz变量指定了参考点的位置,该点通常为相机所瞄准的场景中心轴线上的点。视点转换操作在模型转换操作之后发出,以便模型转换先对物体发生作用
11、。场景中物体的顶点经过模型转换移动到所希望的位置,然后再对场景进行视点定位等操作。模型转换和视点转换共同构成模型视景矩阵。实验代码:#include <stdlib.h>#include <GL/glut.h>GLfloat vertices3 = -1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0, -1.0,1.0,-1.0, -1.0,-1.0,1.0, 1.0,-1.0,1.0, 1.0,1.0,1.0, -1.0,1.0,1.0;GLfloat normals3 = -1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.
12、0,1.0,-1.0, -1.0,1.0,-1.0, -1.0,-1.0,1.0, 1.0,-1.0,1.0, 1.0,1.0,1.0, -1.0,1.0,1.0;GLfloat colors3 = 0.0,0.0,0.0,1.0,0.0,0.0,1.0,1.0,0.0, 0.0,1.0,0.0, 0.0,0.0,1.0, 1.0,0.0,1.0, 1.0,1.0,1.0, 0.0,1.0,1.0;void polygon(int a, int b, int c , int d)glBegin(GL_POLYGON);glColor3fv(colorsa);glNormal3fv(normal
13、sa);glVertex3fv(verticesa);glColor3fv(colorsb);glNormal3fv(normalsb);glVertex3fv(verticesb);glColor3fv(colorsc);glNormal3fv(normalsc);glVertex3fv(verticesc);glColor3fv(colorsd);glNormal3fv(normalsd);glVertex3fv(verticesd);glEnd();void colorcube()polygon(0,3,2,1);polygon(2,3,7,6);polygon(0,4,7,3);pol
14、ygon(1,2,6,5);polygon(4,5,6,7);polygon(0,1,5,4);static GLfloat theta = 0.0,0.0,0.0;static GLint axis = 2;static GLdouble viewer= 0.0, 0.0, 5.0; /* initial viewer location */ void display(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/* Update viewer position in modelview matrix */glLoadId
15、entity();gluLookAt(viewer0,viewer1,viewer2, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);/* rotate cube */glRotatef(theta0, 1.0, 0.0, 0.0);glRotatef(theta1, 0.0, 1.0, 0.0);glRotatef(theta2, 0.0, 0.0, 1.0); colorcube(); glFlush();glutSwapBuffers();void mouse(int btn, int state, int x, int y)if(btn=GLUT_LEFT_BUTTON
16、&& state = GLUT_DOWN) axis = 0;if(btn=GLUT_MIDDLE_BUTTON && state = GLUT_DOWN) axis = 1;if(btn=GLUT_RIGHT_BUTTON && state = GLUT_DOWN) axis = 2;thetaaxis += 2.0;if( thetaaxis > 360.0 ) thetaaxis -= 360.0;display();void keys(unsigned char key, int x, int y)/* Use x, X, y, Y
17、, z, and Z keys to move viewer */ if(key = 'x') viewer0-= 1.0; if(key = 'X') viewer0+= 1.0; if(key = 'y') viewer1-= 1.0; if(key = 'Y') viewer1+= 1.0; if(key = 'z') viewer2-= 1.0; if(key = 'Z') viewer2+= 1.0; display();void myReshape(int w, int h) glVie
18、wport(0, 0, w, h);/* Use a perspective view */ glMatrixMode(GL_PROJECTION); glLoadIdentity();if(w<=h) glFrustum(-2.0, 2.0, -2.0 * (GLfloat) h/ (GLfloat) w, 2.0* (GLfloat) h / (GLfloat) w, 2.0, 20.0);else glFrustum(-2.0, 2.0, -2.0 * (GLfloat) w/ (GLfloat) h, 2.0* (GLfloat) w / (GLfloat) h, 2.0, 20.0);/* Or we can use gluPerspective */ /* gluPerspective(45.0, w/h, -10.0, 10.0); */ glMatrixMode(GL_MODELVIEW);voidmain(int argc, char *argv) glutInit(&argc, argv); glutInitDispla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学美容导论相关试题与答案展示
- 2026年公务员遴选笔试案例分析模拟题及答案
- 医疗翻译检验题目及答案示例
- 2026年消防应急处置考试题库及答案
- 2026年物价执法检查人员价格认定知识试题及答案
- 2026年退役军人服务中心招聘真题(附答案)
- 2026年税务师涉税服务实务考试题库及答案
- 2026年设备安装电气施工员考试(专业基础知识)仿真试题及答案
- 2026年山东职业病诊断医师资格认定考核基础理论及法律法规强化练习题及答案
- 2026年国防科技创新与产业发展模拟试卷
- 2026届济南市历下区小升初新初一分班考试语文数学英语综合仿真模拟卷含答案详解评分标准与可打印作答区
- DBJ53T 25-2010 塑料排水检查井应用技术规程
- 2026年上海市助理政工师职称考试(思想政治工作)综合试题及答案
- 2026中国电子烟行业监管政策变化对市场格局影响深度分析
- 电缆老化机理研究-深度研究
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.7-2025)
- 2026年高考地理一轮复习:湘教版必修第二册知识点考点背诵提纲
- 开启科学探索之旅 课件(内嵌视频) 2025-2026学年人教版初中物理八年级上册
- 县四大班子联席会议制度
- 运营中心管理制度模板
- OpenFOAM培训教学课件
评论
0/150
提交评论