计算机图形学课程报告
《计算机图形学》课程报告课题名称: 行星运转系统模拟__课题负责人名(学号): 0543042120同组成员名单(角色): 指导教师: 李征评阅成绩: 评阅意见: 提交报告时间:2007 年 12 月 16 日行星运转系统模拟软件工程 专业学生 梁川 指导老师 李征[摘要] 本系统通过 OpenGL 强大的图形开发库来实现行星运转的模拟系统,通过创建系统,我可以提高我对计算机图形学基本原理的更加深入的理解,也可以提高我的实际开发能力。该项目要求实现行星公转系统和自转系统的模拟,我可以通过不同的视角来观察行星的运转情况。关键词:计算机图形学 行星运转 opengl目录1 需求概 述 .32 基本理论 .32.1 几何变换 32.2 二维观察 42.3 三维观察 42.4 光照模型和面绘制算法 42.5 颜色模型 52.5.1 RGB 颜色模型 52.5.2 CMYK 颜色模型 52.5.3 视觉颜色模型 .63 项目名称 .64 项目目的 .65 开发环境 .66 开发平台搭建 .76.1 选择一个编译环境 76.2 安装 GLUT 工具包 76.3 创建工程 76.4 创建一个最简单的 opengl 程序 .77 功能性说明 .89 设计及编码 .99.1 总体设计 99.1.1 头文件设计 .99.1.2 主文件设计 109.2 重要函数实现 109.2.1 LoadBmp 函数实现 .109.2.2 display 函数实现 .1210 项目运行结果和结论 .1310.1 项目运行结果 1310.2 项目结论 161 需求概述计算机图形学(Computer Graphics)是研究怎样用数字计算机生成、处理和显示图形的一门学科。图形的具体应用范围很广,但是从基本的处理技术看只有两类,一类是线条,如工程图、地图、曲线图表等;另一类是明暗图,与照片相似。计算机图形学应用的许多领域,包括数值图,CAD、虚拟现实、科学计算可视化、教学、艺术、娱乐、图像处理和图形用户界面。2 基本理论2.1 几何变换基本的几何是平移、旋转和缩放。平移将一个对象从一个位置沿直线路径移动到另一位置。旋转将一个对象从一个位置绕指定旋转轴沿圆周路径移动到另一个位置。对于二维应用而言,该旋转路径位于在 xy 平面内且围绕 z 轴平行的轴。缩放变换改变对象相对于固定点的尺寸。可以使用 3*3d 矩阵操作表示二维变换而用 4*4 矩阵便是二维和三维变换,从而使一系列的变换可合并成一个复合矩阵。或者,更一般地可以用 4*4 矩阵表示二维和三维变换。用矩阵表示几何变换是一种有效的形式,因为它允许通过将复合矩阵应用于对象描述获得变换后的位置来减少计算。为此,坐标位置用列矩阵表示。选择列矩阵表示坐标位置是因为这是一种标准的数学惯例,且多数图形软件包现在使用这一惯例。一个三元素或四元素的列矩阵(向量)看做齐次表示。对于几何变换,齐次系数赋值为 1。复合变换有平移、旋转、缩放和其他变换的矩阵乘积来形成。可以将平移和旋转的复合用于动画应用,将旋转和缩放的复合应用于在任一指定方向缩放对象。一般情况下,矩阵乘法不符合交换律。其他变换包括反射和错切。反射是将对象绕反射轴旋转 180 度的变换。错切变换通过按与到错切参考线的距离成比例的量移动一个或多个坐标值来改变对象的形状。笛卡尔坐标系统间的变换用一组使两个坐标系变成一直的平移和旋转变换来实现。通过在原坐标系中指定坐标原点和轴向量来确定一个新坐标系。对于二维系统而言,一个向量可完全确定坐标轴方向。但对于三维系统,则必须指定三个轴之中两个的方向。对象描述从原坐标系到第二个坐标系的变换通过将新原点平移到旧原点的矩阵和将两组坐标轴对齐的旋转矩阵相乘所得的矩阵来计算。对齐两个坐标系所需的旋转可从为新系统建立一组正交轴向量来得到。几何变换是仿射变换,即它们可表示成坐标位置的线性函数。平移、旋转、缩放、反射和错切都是仿射变换。他们将平行线仍变换为平行线且将有限坐标位置仍变换为有限位置。不包括缩放和错切的几何变换也保持角度和长度的不变。可以将光栅操作应用于像素数组的某些简单几何变换。对于二维应用,可利用光栅操作完成快速平移、反射和 90 度倍数的旋转。稍作一点处理,可以完成一般的光栅旋转和缩放。2.2 二维观察二维观察变换流水线是将在 xy 平面上定义的世界坐标系图形显示出来的一系列操作。在构造场景后,它被映射到观察坐标系,再到规范化坐标系去裁剪。最后,场景变换到设备坐标系显示。规范化坐标系取值范围为 0 到 1 或-1 到1,它使图形软件包不依赖于具体的输出设备。我用裁剪窗口选择场景的一部分在输出设备上显示,裁剪窗口在世界坐标系或参考世界坐标系定义的观察坐标系中描述。裁剪算法通常在规范化坐标系中执行,因此所有不依赖于设备坐标的几何变换和观察变换都可以合并成一个变换矩阵。2.3 三维观察三维场景的观察程序遵循了二维观察中所使用的一般方法。即首先在建模坐标或直接在世界坐标里的对象定义中创建一世界坐标场景。然后,建立一个观察坐标参考系并将对象从世界坐标变换到观察坐标。最后,将观察坐标描述变换到设备坐标。与二维观察不同的是,三维观察在变换到设备坐标之前,需要投影子程序把对象描述变换到观察平面上。平行投影有正投影或斜投影两种,可以由投影向量描述。三维场景中的对象可用观察体进行裁剪来消除场景不需要的部分。2.4 光照模型和面绘制算法光照模型,英文名“Illumination Model“,光照模型就是用于计算几何物体表面上任一点上的光亮度和色彩组成的数学计算公式。基于光照效果分析和实验数据总结得出的光照模型称之为经验模型,早期的光照模型多为经验模型,如 Lambert 漫反射光照模型、Phong 镜面反射光照模型、Blinn 光照模型等等。基于物理学中的热能辐射原理发展起来的更加符合光能物理属性的光照模型称之为物理模型,如 Torrance-Sparrow 光照模型、Cook-Torrance 光照模型等。另外,从所能计算的光照类型的完整性的角度出发,通常又将光照模型划分为局部光照模型(Local Illumination Model)和全局光照模型(Global Illumination Model) 。简单的说,局部光照模型只能计算直接光照下几何物体表面是上的每个像素点上的光亮度和色彩组成;而全局光照模型不仅具备局部光照光照模型的功能,还可以完整的计算出光反弹所引起的间接照明作用。经验性光照模型多为局部关照模型,而物理性光照模型典型代表就是光线追踪算法所采用的 Whitted 光照模型和光能辐射算法中的辐射度光照模型。2.5 颜色模型T.Young 在 1802 年提出了色度学的基础理论:任何彩色都可以用三种不同的基本颜色按不同的比例混合而得到,即:C=a*C1+b*C2+c*C3 其中 C1、C2、C3 为三原色(又称为三基色),a、b、c 为三种原色的权值(三原色的比例和浓度), C 为所合成的颜色,可为任意颜色。2.5.1 RGB 颜色模型一个能发光的物体成为有源物体。它的颜色由它发出的光波决定,使用RGB 相加混色模型表示。计算机显示器使用的阴极射线管(Cathode ray