1、 计算机图形学 课程设计报告 课题名称: Solar System( 太阳系运动 ) 课题负责人名(学号): 韩军辉 ( 0843042308) 同组成员名单(角色): 韩军辉 ( 0843042308)指导教师: 李征 评阅成绩: 评阅意见: 提交报告时间: 2010 年 12 月 11 日 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -1- Solar System(太阳系 运动 ) 软件工程 专业 学生 韩军辉 指导老师 李征 摘要 : 太阳系 是以 太阳 为中心 及 所有受到太阳 引 力约束的 天体 运行 的集合体 , 它 包括太阳、
2、八大行星及其卫星、小行星、彗星、流星体以及星际物质。 此课题 模拟 太阳系运转 模型, 实现了 八大行星和月球 围绕太阳转动 以及各自的自转动 。本课题 以 VC6.0 为平台用 OpenGL基础知识实现从不同 视 角观测太阳系 . 关键词 : OpenGL VC6.0 太阳系 运转 视角 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -2- 一、实验名称 : Solar System(太阳系) 二、 实验的目的和要求 : 1熟悉 OpenGL 基础函数 以及其使用 2 .使用 windows 编程 2通过 给的实 例程序来完善 太阳系 模拟系
3、统 3 实现使用键盘来控制 视角 转换,能从不同角度 观测太阳系 的运转情况 4. 在给出的太阳系的初上,添加一些视觉效果,如光晕等。 三、实验的环境 : 1 硬件环境 :CPU Intel Core2 , 2G 内存 2.软件环境 : 操作系统: Windows xp SP3 编译软件及版本: vc6.0 OpenGL 环境 四、系统描述 1太阳 太阳位于太阳系的中心, 是恒星, 能够自转 ,体积是太阳系中最大的 ,能够发光 。由于其具有强大的引力,所有太阳系中的大部分星体都围绕着其运行。 2 八大行星 八大行星的运动不再同一个平面上,他们的 绕行 速度也由于各课题名称: Solar Sys
4、tem 太阳系 学生姓名:曾睿 学生学号: 0643111150 -3- 自离太阳的远近而不同 。 八大行星按与太阳距离从近到远分别为 : 水星 , 金星 ,地球 ,火星 ,木星 ,土星 ,天王星 ,海王星 ,各有各的大小 ,其中以木星最大 。它们各自又有 自转 . 3.地球 月亮 地球是太阳系中的一颗行星,在其绕太阳运行的同时,自己又有自转。它有自己的卫星 月球, 月球是围绕地球旋转的卫星 .体积是系统中最小的,旋转周期比较快。 五 . 理论 基础 : 用 windows api 创建窗口 ,使用 OpenGL 绘制函数绘制球体 ,实现位图文件读取 ,并转换为纹理 ,使用系统时间控制球体转动
5、 ,设置视点视角 ,通过改变视角从不同角度观测 . 所使用的计算机图形学理论基础 : 1. 3D 管道中的几何变换 旋转矩阵行向量为该矩阵坐标系在原坐标系上的坐标,列向量为原坐标系的向量在本旋转矩阵坐标系上的坐标。 旋转是欧氏变换;旋转、放缩是线性变换;旋转、放缩、平移是仿射变换;旋转、放缩、平移、透视投影是射影变换。 线性变换在四维空间 ,仿射变换在三维空间 ,射影必须采用摄像坐标系 ,仿射变换是到自身的一类变换 . 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -4- 齐次坐标 系 就是将一个原本是 n 维的向量用一个 n+1 维向量来表示
6、。 实数。显然一个向量 的齐次表示是不唯一的,齐次坐标的 h取不同的值都表示的是同一个点,比如齐次坐标 8,4,2、 4,2,1表示的都是二维点 2,1。 它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。 4 维坐标的旋转到了 3 维坐标就是平移 . 世界坐标系描述了物体在空间的位置,角度在世界坐标系中可以设定物体的位置,决定物体以什么方式进行放置 局部坐标系描述了物体的形状,大小,样式等,可以在这一坐标系中设定物体的形状 当我们在虚拟场景中放置物体时,必须将其从局部坐标系转换到世界 坐标系 局部到世界的坐标系转换可以看做向量的转化 局部坐标系到
7、世界坐标系:旋转,放缩,平移 世界坐标系到观测坐标系:平移,旋转。 透视投影,就是以中心投影为依据所作的透视图象。 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -5- 正交投影将物体垂直的投影在屏幕上,在正交投影当中,物体的大小不会随着视口屏幕等参数的改变而变化。 在 正交 投影中,三维物体的坐标沿平行线投影到观察平面上,它保持物体的有关比例不变 。 虚拟摄像机的 内部参数是指摄像机的几何和光学参数 , 包括焦距、缩放系数、摄像机光轴和像平面的交点 ,外部参数主要是指摄像机坐标系与世界坐标系的转换矩阵 . OPENGL 中有 Glulooka
8、t, Glperspective, Glmodelviewmatrix 等函数可以完成对摄像机内、外参数的指定 . void gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -6- ); eye=(eyex, eyey, eyez)是视点 (原点 )
9、的位置 center = (centerx, centery, centerz)是视口中心点的位置 center - eye 是 z轴负方向 z = (eye - center) / |eye - center| up = (upx, upy, upz) - eye 表示上方 x 轴正方向 x = up z / |up z| y 轴正方向 (就是正上方 )y = z x gluLookAt()相当于设定平移,旋转,倾斜三个基本的矩阵 . void gluPerspective( GLdouble fovy, /角度 GLdouble aspect,/视景体的宽高比 GLdouble zNear
10、,/沿 z 轴方向的两裁面之间的距离的近处 GLdouble zFar /沿 z 轴方向的两裁面之间的距离的远处 ) 2. 2D 管道中的像素操作 几何图形像素化就是将几何物体按照一些设定好的方法投影到屏幕上的过程和方法 . 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -7- 像素化就是在图像上每隔一段距离取一个点,作为该区域的颜色代表。将其数字化。这种存储转化叫做像素化。因为计算机不能处理无限的,只能处理有限的,这样做能更好的抽象出 对象,并处理。用几何线段和几何连接构成的图形叫做几何图形,一般是有点和线构成面,像素图形是像素化后得到的图形
11、 ,只有这样才能处理这些图形 . 斜率 -截距方程主要使用 Bresenham 画线算法 逐像素的进行绘制如y=kx+m 的方程 参数方程中的圆因为各方位一致,所以只需考虑 8分之 1的段即可,而椭圆参数方程 则要考虑 4 分支 1的段。直线段在像素化过程中要先利用 bresnham算法, d 误差率被用来计算坐标,公式 di+1=di+k(xi+1-xi),根据d 是否大于 0.5 决定 y 坐标是否递增。 图像出现不准确的锯齿状的边缘 等现象叫走样,产生原因是 由于低频采样不充分而造成的信息失真 或 由离散量表示连续量引起的失真 . 超采样方法来进行直线反走样 .原理是 将每个像素分成 n
12、n 个子像素,然后在子像素级对直线进行光栅化,这样就可以得到每个像课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -8- 素中被激活的子像素的个数 .在 nn 伪光栅上,可以光栅化的子像素最多为 n 个 .每个物理像素的光强与其被激活的子像素数与 n 的比值成正比 .假设一个物理像素中被激活的子像素有 m 个,其可能的最大光强为 Imax,为 该像素的光强 . 3. 光照模型 环境光 是模拟 2 次、 3 次以及多次光反射形成的,是 来自于周围环境没有固定方向的光 , 在物体和周围环境之间多次反射后,最终达到平衡时的一种光,又称为背景光 .环境光
13、没有空间和方向上的特征,它在任何方向上的分布都相同,在所有方向上和所有物体表面上投射的环境光的量都是恒定不变的 . 环境光主要是通过背景光影与主体形成某种映衬和对比,达到突出主体的目的 ,还有表现特定环境、时间或造成某种特殊气氛和影调等作用 . 平行光源光线平行发散,点光源光线球体发散,二者在特定条件可以转化。 聚光光源 使用聚光镜头或反射镜等聚成的光 ,点光型比较简单 . 点光源达到无穷远就成为平行光源,点光源入射光源不同,聚光(点光源加 衰减)入射方向不一样。 课题名称: Solar System 太阳系 学生姓名:曾睿 学生学号: 0643111150 -9- 平行光源发出光线各线条平行
14、,点光源从某一点发散出光线 ,聚光光源从某一点按一定的张角发射光线,面光源是一个平面发出光线 . 漫反射是由物体表面的粗糙不平引起的,它均匀地向各个方向传播,与视点无关。 漫反射由于是球面型的,所以向四面八方都反射,镜面反射处理为平行光的反射,具体处理的时候,不记录具体值,而采用路径算法,大大简化了计算量。 一般来说,从物体表面反射或折射出来的光的强度取决于光源的位置与光的强度、物体表面的位置和朝向、表面材质的性质和视点的位置。对于理想镜面,反射光都将集中在镜面的 反射方向上,视线只有在与反射光线重合时才能观察到镜面反射光。但是,对于那些非理想的镜面,由于表面实际上是由许多不同朝向的微小平面组成,镜面反射光将分布于表面的镜面反射方向的周围 . 全局光照模型中射线跟踪算法的基本原理 : 由光源发出的光到达景物表面后,产生反射和折射,简单光照明模型和简单光透射模型模拟了这两种现象 。 在简单光照明模型中,反射被分为理想漫反射和镜面反射光,在简单光透射模型中,把透射光分为理想漫透射光和规则透射光。