计算机图形学结课论文

  • 格式:doc
  • 大小:222.00 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2017届结课论文

《计算机图形学基础教程》

—小球的弹跳运动

学生姓名

学号

所属学院

专业计算机科学与技术

班级

塔里木大学教务处制

目录

摘要 (1)

1.背景 (1)

1.1计算机图形学概述 (1)

1.2计算机图形画面的分类 (2)

2.OpenGL概述 (2)

2.1程序的基本结构 (3)

2.2状态机制 (4)

3.方案论述 (4)

3.1小球运动过程 (4)

3.2简单光照模型原理 (4)

4.程序模块分析 (5)

4.1 小球的生成模块 (5)

4.2小球的运动时间模块 (6)

4.3主程序运行模块 (6)

4.4材质定义 (7)

4.5双缓冲技术 (7)

5.总结 (7)

附录A:程序清单 (8)

附录B: 程序运行结果 (13)

6.致谢 (14)

参考文献: (14)

小球的弹跳运动

摘要计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。

图形是客观物质世界在人大脑中的反映、图形蕴含信息密度大、易于理解接受,是当今信息社会中人们用于传递信息的重要手段。计算机技术和图形的结合使得图形在深度、广度和形式上都发生了深刻的变化,其应用也波及社会的各个领域。本次课程论文主要阐述通过计算机图形学中动画的实现,来实现简单的小球运动动画过程。

关键词: 计算机图形学、计算机动画、计算机技术

1.背景

1.1计算机图形学概述

图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。

计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。

1.2计算机图形画面的分类

计算机动画是计算机图形学和艺术相结合的产物,它是伴随着计算机硬件和图形算法高速发展起来的一门高新技术。动画是运动中的艺术,运动是动画的要素。计算机动画以其制作方法和特征通常分为二维动画和三维动画两种形式。

(1)二维图形

传统的图形画面的实现是连续播放多帧画面,每幅画面表述的是运动物体若干个瞬间,利用观看者的瞬间视觉残留而得到运动的视觉感受。二维图形画面显示的主要是平面图形,制作时就像在纸上作画,通过对象的移动、变形、变色等手法表现其运动的效果;计算机动画原理也是一样,计算机图形画面的每一帧画面都是一幅数字化的图像。

(2)三维立体图形

三维画面则显示立体图形,其制作就像是在摄影棚中拍电影:首先在三维视图中布置摄影对象的位置、规定其运动、安排好各种灯光,然后在特定位置架设好“摄影机”,可设定摄影机的推拉摇移,最后计算机计算出在这一立体空间下“摄影机所见的”动态图像效果。尽管在常见的二维画面中也可以模拟三维的立体空间,但其图像的精确度等远不及三维图像画面。

2.OpenGL概述

OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。

OpenGL基本函数均使用gl作为函数名的前缀,如glClearColor();实用函数则使用glu作为函数名的前缀,如gluSphere()。OpenGL基本常量的名字以GL_开头,如GL_LINE_LOOP;实用常量的名字以GLU_开头,如GLU_FILL。一些函数如glColor*()(定义颜色值),函数名后可以接不同的后缀以支持不同的数据类型和格式。如glColor3b(...)、glColor3d(...)、glColor3f(...)和glColor3bv(...)等,这几个函数在功能上是相似的,只是适用于不同的数据类型和格式,其中3表示该函数带有三个参数,b、d、f分别表示参数的类型是字节型、双精度浮点型和

单精度浮点型,v则表示这些参数是以向量形式出现的。

OpenGL定义了一些特殊标识符,如GLfloat,GLvoid。它们其实就是C中的float和void。在gl.h文件中可以看到以下定义:

……

typedef float GLfloat;

typedef void GLvoid;

……

一些基本的数据类型都有类似的定义项。

2.1程序的基本结构

OpenGL程序的基本结构可分为三个部分:

第一部分是初始化部分。主要是设置一些OpenGL的状态开关,如颜色模式(RGBA或ALPHA)的选择,是否作光照处理(若有的话,还需设置光源的特性),深度检验,裁剪等等。这些状态一般都用函数glEnable(...), glDisable(…)来设置,…表示特定的状态。

第二部分设置观察坐标系的取景模式和取景框位置大小。利用了三个函数:函数void glViewport(left,top,right,bottom):设置在屏幕上的窗口大小,四个参数描述屏幕窗口四个角上的坐标(以象素表示);

函数void glOrtho(left,right,bottom,top,near,far):设置投影方式为正交投影(平行投影),其取景体积是一个各面均为矩形的六面体;

函数void gluPerspective(fovy,aspect,zNear,zFar):设置投影方式为透视投影。

第三部分是OpenGL的主要部分,使用OpenGL的库函数构造几何物体对象的数学描述,包括点线面的位置和拓扑关系、几何变换、光照处理等等。

以上三个部分是OpenGL程序的基本框架,即使移植到使用MFC的Windows 程序中,也是如此。只是由于Windows自身有一套显示方式,需要进行一些必要的改动以协调这两种不同显示方式。