1、 目目 录录 一设计内容与要求一设计内容与要求2 2 1.1 总体目标和要求总体目标和要求2 1.2 内容与要求内容与要求2 二总体设计二总体设计2 2.1 球的消隐处理基本原理球的消隐处理基本原理2 2.2 具体设计实现具体设计实现3 三详细设计三详细设计3 3 3.1 程序流程图程序流程图3 3.2 调试后正确的程序清单调试后正确的程序清单 5 四四功能实现功能实现 1010 4.1 程序运行结果程序运行结果1010 4.2 功能实现及分析功能实现及分析1010 五五总结总结 1111 六六参考文献参考文献 1111 1 球体背面剔除消隐算法 第第 1 章章 设计内容与要求设计内容与要求
2、1.1 总体目标和要求总体目标和要求 课程设计的目的课程设计的目的:以图形学算法为目标,深入研究。继而策划、设计并实现一个能够表现 计算机图形学算法原理的或完整过程的演示系统, 并能从某些方面作出评价和改进意见。 通 过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到: 1) 巩固和实践计算机图形学课程中的理论和算法; 2) 学习表现计算机图形学算法的技巧; 3) 培养认真学习、积极探索的精神; 4) 具备通过具体的平台实现图形算法的设计、编程与调试的能力; 5) 完成对实验结果分析、总结及撰写技术报告的能力。 总体要求:总体要求:策划、设计并实现一个能够充分表现图形学算法
3、的演示系统,界面要求美观大 方,能清楚地演示算法执行的每一个步骤。 开发环境:开发环境:Viusal C+ 6.0 1.2 内容与要求内容与要求 球体背面剔除消隐算法球体背面剔除消隐算法 内容: (1)掌握背面剔除消隐算法原理; (2)实现矢量点积与叉积运算; (3)透视投影变换 (4)曲面体经纬线划分方法 功能要求: (1)绘制球体线框模型的透视投影图,使用背面剔除算法实现动态消隐; (2)通过右键菜单显示消隐效果,右键菜单有两个选项:未消隐与消隐; (3)使用键盘的上下左右控制键旋转消隐前后的球体; (4)单击左键增加视距,右击缩短视距; 第第 2 章章 总体总体设计设计 2.1 球的消隐
4、处理基本原理球的消隐处理基本原理 球体的曲面通常采用一组网格多边形来表示, 即把曲面离散成许多小平面片, 用平面逼 近曲面,一般使用许多四边形来逼近曲面。网格四边形愈多,逼近曲面的精度就愈高,逼近 2 效果就愈好, 曲面看起来就越光滑。 一般根据实际需要来确定合适的逼近精度即网格多边形 数目。 当曲面表示为一组网格多边形时, 消隐处理的主要工作是确定各网格多边形的可见性, 由此可用平面立体的算法对曲面进行消隐处理。 球面的参数方程为: x=R sinacos y=R sina sin (0a, 02) z=R cosa 设两个参数 a 和对球面进行网格化,当相邻的曲线参数分别为 a1、a2、1
5、、 2 时,构成四边形网格 P0P1P2P3,其外法线 N 表示如下: N= P0P1P1P2 对 N 进行单位化:n=nx,ny,nz= n/|N| 若设视方向为 S,其平行于 y 轴: S=0,1,0 nS= ny0,网格可见,画出; nS= ny0,网格不可见,不画 2.2 具体设计实具体设计实现现 (1) 掌握运行环境 Visual C+编程、调试方法,熟练掌握 OpenGL 的使用,并能将两者相结 合完成实验设计; (2) 理解球体背面剔除消隐算法的基本原理; (3) 利用 OpenGL 中的函数绘制一个线框球并显示出来。具体方案如下: (a)先通过透视投影变换绘制出小四边形平面片,