opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc

opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc

ID:53852142

大小:103.00 KB

页数:13页

时间:2020-04-08

opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc_第1页
opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc_第2页
opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc_第3页
opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc_第4页
opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc_第5页
资源描述:

《opengl实现--太阳、地球和月亮地运动模型及小球地自由落体运动.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验六1、实验目的和要求了解且掌握OpenGL中包含的有关三维变换的操作,并且做出模型视图变换、投影变换和视见区变换的实例。2、实验内容1)在OpenGL中绘制太阳、地球和月亮的运动模型。2)在OpenGL中创建一个球体动画,使球体在窗口内做自由落体运动,并在撞击地面(窗口的下边界)后能够弹回原来的高度。3、实验步骤1)相关算法及原理描述①矩阵堆栈在计算机图形学中,所有的变换都是通过矩阵乘法来实现的,即将三维形体顶点构成的齐次坐标矩阵乘以三维变换矩阵就得到变换后的形体顶点的其次坐标矩阵,这样只要求出形体三维变换矩阵,就可以得到变换后的形体。在OpenGL中,对象的变换也是通过矩阵来实现的。

2、在进行矩阵操作前,需要指定当前操作的矩阵对象,可以使用函数glMatrixMode(GLenummode);定义。矩阵堆栈主要用来保存和恢复矩阵的状态,主要用于具有层次结构的模型绘制中,以提高绘图效率。利用函数voidglPushMatrix(void);VoidglPopMatrix(void);实现矩阵堆栈的操作。矩阵堆栈是有深度的,如果超出了堆栈深度或当堆栈为空时试图弹出栈顶矩阵,都会发生错误。可以用下面函数获得堆栈深度的最大值:glGet(GL_MAX_MODELVIEW_STACK_DEPTH);glGet(GL_MAX_PROJECTION_STACK_DEPTH);②模型视图

3、变换模型视图矩阵是一个4*4的矩阵,用于指定场景的视图变换和几何变换。在进行模型视图矩阵操作前,必须调用函数glMatrixMode(GL_MODELVIEW)指定变换只能影响模型试图矩阵。主要有以下两种方法。1.2.1、直接定义矩阵利用函数voidglLoadMartrix{fd}(constTYPE*m);将m所指定的矩阵置为当前矩阵堆栈的栈顶矩阵。1.2.2、利用高级矩阵函数平移矩阵函数:voidglTranslate{df}(TYPEx,TYPEy,TYPEz);用当前矩阵乘以平移矩阵。旋转矩阵函数voidglRotate{df}(TYPEangle,TYPEx,TYPWy,TYP

4、Ez);缩放矩阵函数voidglScale{df}(TYPEx,TYPEy,TYPEz);如不需要效果积累可调用重置矩阵函数voidglLoadIdentity(void);该函数将单位矩阵置为当前变换矩阵。①投影变换有两种投影方式,不管调用哪种,必须调用glMAtrixMode(GL_PROJECTION);指定当前处理的矩阵是投影变换矩阵。1.3.1、正投影它的有限观察空间是一个长方体,无论物体距离相机多远,投影后的物体大小尺寸不变。正投影函数有两个:voidglOrtho(GLdoubleleft,GLdoubleright,GLdoublebotton,GLdoubletop,GL

5、doublenear,GLdoublefar);voidgluOrtho2D(GLdoubleleft,GLdoubleright,GLdoublbotton,GLdoubletop);1.3.2、透视投影特点是距离视点近的物体大,距离视点远的物体小,远到极点即为消失。透视投影函数也有两个:voidglFrustum(GLdoubleleft,GLdoubleRight,GLdoublebotton,GLdoubletop,GLdoublenear,GLdoublefar);voidgluPerspective(GLdoublefovy,GLdoubleaspect,GLdoublezNe

6、ar,GLdoublezFar);1)程序调试、测试与运行结果分析①太阳、地球和月亮的运动模型①小球的自由落体运动1、附录(1)太阳、地球和月亮的运动模型#includestaticintday=200;voiddisplay(){glEnable(GL_DEPTH_TEST);glClear(GL_COLOR_BUFFER_BIT

7、GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(75,1,1,400000);glMatrixMode(GL_MODELVI

8、EW);glLoadIdentity();gluLookAt(0,-200000,200000,0,0,0,0,0,1);glColor3f(1,0,0);//sunglutSolidSphere(69600,20,20);glColor3f(0,0,1);glRotatef(day,0,0,-1);glTranslatef(150000,0,0);//earthglutSolidSphere(15945,20,20);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。