您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 计算机图形学结课论文
2017届结课论文《计算机图形学基础教程》—小球的弹跳运动学生姓名学号所属学院专业计算机科学与技术班级塔里木大学教务处制目录摘要...........................................................................................................11.背景.........................................................................................................11.1计算机图形学概述........................................................................11.2计算机图形画面的分类................................................................22.OpenGL概述...........................................................................................22.1程序的基本结构............................................................................32.2状态机制........................................................................................43.方案论述.................................................................................................43.1小球运动过程................................................................................43.2简单光照模型原理........................................................................44.程序模块分析.........................................................................................54.1小球的生成模块..........................................................................54.2小球的运动时间模块....................................................................64.3主程序运行模块............................................................................64.4材质定义........................................................................................74.5双缓冲技术....................................................................................75.总结..........................................................................................................7附录A:程序清单....................................................................................8附录B:程序运行结果............................................................................136.致谢........................................................................................................14参考文献:...............................................................................................14第1页,共14页小球的弹跳运动摘要计算机图形学(ComputerGraphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形是客观物质世界在人大脑中的反映、图形蕴含信息密度大、易于理解接受,是当今信息社会中人们用于传递信息的重要手段。计算机技术和图形的结合使得图形在深度、广度和形式上都发生了深刻的变化,其应用也波及社会的各个领域。本次课程论文主要阐述通过计算机图形学中动画的实现,来实现简单的小球运动动画过程。关键词:计算机图形学、计算机动画、计算机技术1.背景1.1计算机图形学概述图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。第2页,共14页1.2计算机图形画面的分类计算机动画是计算机图形学和艺术相结合的产物,它是伴随着计算机硬件和图形算法高速发展起来的一门高新技术。动画是运动中的艺术,运动是动画的要素。计算机动画以其制作方法和特征通常分为二维动画和三维动画两种形式。(1)二维图形传统的图形画面的实现是连续播放多帧画面,每幅画面表述的是运动物体若干个瞬间,利用观看者的瞬间视觉残留而得到运动的视觉感受。二维图形画面显示的主要是平面图形,制作时就像在纸上作画,通过对象的移动、变形、变色等手法表现其运动的效果;计算机动画原理也是一样,计算机图形画面的每一帧画面都是一幅数字化的图像。(2)三维立体图形三维画面则显示立体图形,其制作就像是在摄影棚中拍电影:首先在三维视图中布置摄影对象的位置、规定其运动、安排好各种灯光,然后在特定位置架设好“摄影机”,可设定摄影机的推拉摇移,最后计算机计算出在这一立体空间下“摄影机所见的”动态图像效果。尽管在常见的二维画面中也可以模拟三维的立体空间,但其图像的精确度等远不及三维图像画面。2.OpenGL概述OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与VisualC++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu作为函数名的前缀,如gluSphere()。OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。一些函数如glColor*()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式。如glColor3b(...)、glColor3d(...)、glColor3f(...)和glColor3bv(...)等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和第3页,共14页单精度浮点型,v则表示这些参数是以向量形式出现的。OpenGL定义了一些特殊标识符,如GLfloat,GLvoid。它们其实就是C中的float和void。在gl.h文件中可以看到以下定义:……typedeffloatGLfloat;typedefvoidGLvoid;……一些基本的数据类型都有类似的定义项。2.1程序的基本结构OpenGL程序的基本结构可分为三个部分:第一部分是初始化部分。主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。这些状态一般都用函数glEnable(...),glDisable(…)来设置,…表示特定的状态。第二部分设置观察坐标系的取景模式和取景框位置大小。利用了三个函数:函数voidglViewport(left,top,right,bottom):设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示);函数voidglOrtho(left,right,bottom,top,near,far):设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;函数voidgluPerspective(fovy,aspect,zNear,zFar):设置投影方式为透视投影。第三部分是OpenGL的主要部分,使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系、几何变换、光照处理等等。以上三个部分是OpenGL程序的基本框架,即使移植到使用MFC的Windows程序中,也是如此。只是由于Windows自身有一套显示方式,需要进行一些必要的改动以协调这两种不同显示方式。第4页,共14页2.2状态机制OpenGL的工作方式是一种状态机制,它可以进行各种状态或模式设置,这些状态或模式在重新改变它们之前一直有效。例如,当前颜色就是一个状态变量,在这个状态改变之前,绘制的每个象素都将使用该颜色,直到当前颜色被设置为其它颜色为止。OpenGL中大量地使用了这种状态机制,如颜色模式、投影模式、单双显示缓存区的设置、背景色的设置、光源的位置和特性等等。许多状态变量可以通过glEnable()、glDisable()这两个函数来设置成有效或无效状态,如是否设置光照、是否进行深度检测等;在被设置成有效状态之后,绝大部分状态变量都有一个缺省值。通常情况下,可以用下列四个函数来获取某个状态变量的值:glGetBooleanv()、glGetDouble()、glGetFloatv()和glGetIntegerv()。究竟选择哪个函数应该根据所要获得的返回值的数据类型来决定。还有些状态变量有特殊的查询函数,如glGetLight*()、glGetError()和glPolygonStipple()等。另外,使用glPushAttrib()和glPopAttrib()函数,可以存储和恢复最近的状态变量的值。只要有可能,都应该使用这些函数,因为它们比其它查询函数的效率更高。3.方案论述3.1小球运动过程小球从某一高度处水平抛出,落地后立即弹起,弹起的最大高度为上一次高度的5/6。经过N次以后皮球不再弹起,保持静止。通过小球的轨迹可以实现小球通过其他静止的小球(障碍物)的画面。整个
本文标题:计算机图形学结课论文
链接地址:https://www.777doc.com/doc-6103323 .html