计算机图形学实验及课程设计ppt课件.ppt

上传人:小飞机 文档编号:1466276 上传时间:2022-11-28 格式:PPT 页数:103 大小:3MB
返回 下载 相关 举报
计算机图形学实验及课程设计ppt课件.ppt_第1页
第1页 / 共103页
计算机图形学实验及课程设计ppt课件.ppt_第2页
第2页 / 共103页
计算机图形学实验及课程设计ppt课件.ppt_第3页
第3页 / 共103页
计算机图形学实验及课程设计ppt课件.ppt_第4页
第4页 / 共103页
计算机图形学实验及课程设计ppt课件.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《计算机图形学实验及课程设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《计算机图形学实验及课程设计ppt课件.ppt(103页珍藏版)》请在三一办公上搜索。

1、计算机图形学实验及课程设计,孔令德2012年春于太原,实验任务书,实验目的:巩固学生对计算机图形学的直线扫描转换原理、有效边表填充原理、三维透视投影原理、ZBuffer深度缓冲消隐原理和真实感图形生成原理的理解,增加学生对真实感图形生成算法的感性认识,强化训练学生使用Visual C+的MFC编写相关图形类的技能。 此前,课堂上已经完成计算机图形学实践教程(Visual C+版)的43个验证性实验的讲解,在此基础上,要求学生能综合使用全部教学内容完成综合性实验。 实验要求:要求学生在实验前了解综合性实验的目的和要求,观察实验效果图。在实验中认真理解每个类的结构,通过搭积木的方式完成实验任务。实

2、验结束后按要求整理相关类的源程序,撰写实验报告,尤其需要对难点和重点进行详细说明。,一、实验目的与要求,实验任务书,学时:教学总学时48,其中实验学时8。,二、实验项目与提要,实验任务书,三、成绩考核方法 本实验与计算机图形学课程同步开设,成绩占期末总成绩的20%40%。四、本课程与其他课程的联系和分工 先修课程:高等数学、线性代数、MFC程序设计、数据结构。,实验1 绘制金刚石图案,1.1 实验目的掌握二维坐标系模式映射方法。掌握动态内存的分配和释放方法。掌握二维点类的定义方法。掌握对话框的创建及调用方法。掌握对话框的数据交换和数据校验方法。掌握Test工程实验框架的创建方法。掌握金刚石图案

3、的设计方法。,实验1 绘制金刚石图案,1.2 实验要求定义二维坐标系原点位于屏幕中心,x轴水平向右为正,y轴铅直向上为正。以二维坐标系原点为圆心绘制半径为r的圆,将圆的n等分点使用直线彼此连接形成金刚石图案。程序运行界面提供“文件”、“绘图”和“帮助”三个弹出菜单项。“文件”菜单提供“退出”子菜单项,用于退出应用程序;“绘图”菜单提供“金刚石”子菜单项,用于绘制金刚石图案;“帮助”菜单提供“关于”子菜单项,用于说明开发信息。选择“金刚石”子菜单项,打开“输入参数”对话框,输入“等分点个数”和“圆的半径”。在屏幕客户区中心绘制金刚石图案。,实验1 绘制金刚石图案,1.3 效果图 将半径为300的

4、圆,划分30个等分点后,得到的金刚石图案实验效果如图1-1所示。,图1-1金刚石图案效果图,实验2 绘制任意斜率的直线段,2.1实验目的掌握任意斜率直线段的中点Bresenham扫描转换算法。掌握CLine直线类的设计方法。掌握状态栏编程方法。,实验2 绘制任意斜率的直线段,2.2 实验要求设计CLine直线类,其数据成员为直线段的起点坐标P0和终点坐标P1,成员函数为MoveTo()和LineTo()函数。CLine类的LineTo()函数使用中点Bresenham算法绘制任意斜率k的直线段,包括k、k1、0k1、-1k0和k-1五种情况。在屏幕客户区按下鼠标左键选择直线的起点,保持鼠标左键

5、按下并移动鼠标到另一位置,弹起鼠标左键绘制任意斜率的直线段。在状态栏动态显示鼠标光标移动时的位置坐标。,实验 2 绘制任意斜率的直线段,2.3 效果图 任意斜率的直线段绘制效果如图2-1所示。,图2-1 任意效率直线段绘制效果图,实验3 交互式绘制多边形,3.1实验目的掌握双缓冲绘图技术。掌握人机交互技术。掌握填充动态多边形的有效边表算法。,实验3 交互式绘制多边形,3.2 实验要求使用鼠标在屏幕客户区绘制任意点数的多边形。要求使用橡皮筋技术动态绘制每条边;鼠标移动过程中按下Shift键时可绘制垂直边或水平边;将多边形的终点移动到多边形的起点时自动封闭多边形;在绘制多边形的过程中,状态栏动态显

6、示鼠标光标的位置坐标。当开始绘制多边形时,更改鼠标光标为十字光标,多边形绘制完毕后恢复为箭头光标。多边形闭合后自动调用有效边表算法填充多边形内部区域。,实验3 交互式绘制多边形,3.3 效果图 交互式绘制多边形效果如图3-1所示。,图3-1 交互式绘制的多边形效果图,实验4 二维几何变换,4.1实验目的掌握二维平移、比例、旋转几何变换矩阵。掌握矩阵乘法的编程实现。掌握相对于任一参考点的比例变换和旋转变换。掌握定时器的使用方法。掌握边界碰撞检测方法。掌握静态切分视图框架的设计方法。,实验4 二维几何变换,4.2 实验要求使用静态切分视图,将窗口分为左右窗格。左窗格为继承于CFormView类的表

7、单视图类CLeftPortion,右窗格为一般视图类CTestView。左窗格提供代表“图形顶点数”(4、8、16和32)、“平移变换”(x方向和y方向)、“旋转变换”(逆时针和顺时针)和“比例变换”(放大和缩小)的滑动条,用于控制右窗格内的图形变化。右窗格内以屏幕客户区中心为图形的几何中心,绘制图形顶点数从4变化为8、16和32的正多边形。为了表达图形的旋转,多边形的每个顶点和图形中心使用直线连接。,实验4 二维几何变换,4.2 实验要求使用双缓冲技术控制图形在右窗格内的无闪烁运动。设定屏幕背景色为黑色,图形颜色为白色。使用客户区边界检测技术,改变图形在右窗格内和客户区边界碰撞后的运动方向。

8、,实验4 二维几何变换,4.3 效果图 二维几何变换效果如图4-1所示。,图4-1 二维几何变换效果图,实验5 直线段裁剪,5.1实验目的掌握直线段端点编码方法。掌握Cohen-Sutherland直线段裁剪算法。,实验5 直线段裁剪,5.2 实验要求定义二维坐标系原点位于屏幕中心,x轴水平向右为正,y轴铅直向上为正。在客户区中央固定绘制颜色为RGB(128,0,0)的3像素宽的矩形代表裁剪窗口。裁剪窗口的左上角点为(-300,100),右下角点为(300,-100)。使用鼠标在屏幕上动态绘制任意直线段。选择裁剪按钮根据直线段和窗口的相对位置,对直线段进行裁剪,得到位于窗口内的直线段,删除窗口

9、外的直线段。直线段绘制之前,裁剪按钮无效;直线段绘制之后,裁剪按钮有效。,实验5 直线段裁剪,5.3 效果图 直线段裁剪前效果如图5-1所示,直线段裁剪后效果如图5-2所示。,图5-1 直线段裁剪前效果图 图5-2 直线段裁剪后效果图,实验6立方体线框模型正交投影,6.1实验目的掌握使用点表和面表构造立方体线框模型的方法。掌握立方体线框模型二维正交投影图的绘制方法。掌握立方体线框模型二维正交投影图的旋转方法。,实验6立方体线框模型正交投影,6.2 实验要求在屏幕中心建立三维坐标系Oxyz,x轴水平向右,y轴铅直向上,z轴垂直于屏幕指向观察者。以三维坐标系Oxyz的原点为立方体体心绘制边长为a的

10、立方体线框模型。使用旋转变换矩阵计算立方体线框模型围绕三维坐标系原点变换前后的顶点坐标。使用双缓冲技术在屏幕上绘制三维立方体线框模型的二维正交投影图。使用键盘方向键旋转立方体线框模型。使用工具条上的“动画”按钮播放立方体线框模型的旋转动画。,实验6立方体线框模型正交投影,6.3 效果图 立方体线框模型正交投影效果如图6-1所示。,图6-1 立方体线框模型正交投影效果图,实验7立方体线框模型透视投影,7.1实验目的掌握使用点表和面表构造立方体线框模型的方法。掌握视点球坐标的计算方法。掌握立方体线框模型的二维透视投影图的绘制方法。掌握立方体线框模型的二维透视投影图的旋转方法。,实验7立方体线框模型

11、透视投影,7.2 实验要求在屏幕中心建立三维坐标系Oxyz,x轴水平向右,y轴铅直向上,z轴垂直于屏幕指向观察者。以三维坐标系Oxyz的原点为立方体体心绘制边长为a的立方体线框模型。使用双缓冲技术在屏幕上绘制三维立方体的二维透视投影图。使用键盘方向键旋转立方体线框模型。使用工具条上的“动画”图标播放立方体线框模型的旋转动画。按下鼠标左键缩小立方体,按下鼠标右键增大立方体。,实验7立方体线框模型透视投影,7.3 效果图 立方体线框模型透视投影效果如图7-1所示。,图7-1 立方体线框模型透视投影效果图,实验8 动态三视图,8.1实验目的掌握主视图变换矩阵。掌握俯视图变换矩阵。掌握侧视图变换矩阵。

12、掌握斜等测图绘制方法。,实验8 动态三视图,8.2 实验要求在屏幕中心建立三维坐标系Oxyz,x轴水平向右,y轴铅直向上,z轴垂直于屏幕指向观察者。将屏幕静态切分为4个窗格。左上窗格绘制主视图、左下窗格绘制俯视图、右上窗格绘制侧视图,右下窗格绘制斜等测消隐线框模型。使用正交投影绘制主视图、俯视图和侧视图,使用斜等测投影绘制多面体线框模型。使用键盘方向键旋转右下窗格多面体斜等测线框模型,其余三个窗格内的视图随之动态改变。使用工具条上的动画按钮播放所绘制物体的斜等测线框模型及三视图的旋转动画。,实验8 动态三视图,8.3 效果图 多面体动态三视图的效果如图8-1所示。,图8-1 多面体动态三视图的

13、效果图,实验9 动态绘制Bezier曲线,9.1实验目的掌握直线的参数表示法。掌握德卡斯特里奥算法的几何意义。掌握绘制二维Bezier曲线的方法。,实验9 动态绘制Bezier曲线,9.2 实验要求使用鼠标左键绘制个数为10以内的任意控制点,使用直线连接构成控制多边形。单击鼠标右键绘制Bezier曲线。在状态栏显示鼠标的位置坐标。Bezier曲线使用德卡斯特里奥(de Casteliau)算法绘制。,实验9 动态绘制Bezier曲线,9.3 效果图 动态绘制Bezier曲线效果如图9-1所示。,图9-1 动态绘制Bezier曲线效果图,实验10 交互式三次B样条曲线,10.1 实验目的掌握三次

14、B样条曲线的基函数。掌握分段三次B样条曲线的绘制方法。掌握三次B样条曲线的特殊构造技巧。掌握图形顶点可视化移动技巧。,实验10 交互式三次B样条曲线,10.2 实验要求给定9个控制点:P0 (104,330),P1= (204,231),P2= (286,362),P3= (363,145),P4= (472,527),P5= (548,228),P6= (662,40),P7= (830,450),P8= (930,350)。绘制三次B样条曲线。移动鼠标光标到控制点上,光标变为手形,显示其坐标信息。拖动控制点,曲线形状随之发生改变,验证三次B样条曲线的特殊构造技巧。,实验10 交互式三次B样

15、条曲线,10.3 效果图 三次B样条曲线效果如图10-1所示。,图10-1 三次B样条曲线效果图,实验11 旋转的Koch雪花,11.1 实验目的掌握Koch雪花的构图方法。掌握递归模型的实现算法。,实验11 旋转的Koch雪花,11.2 实验要求建立平面二维坐标系,原点位于屏幕客户区中心,x轴水平向右为正,y轴铅直向上为正。以原点为圆心绘制半径为r的圆,与y轴交于P0点。从P0点开始,顺时针方向将圆三等分,得到P1和P2点。P0P1P2构成等边三角形,如图11-1所示。沿着等边三角形的三条边外侧分别绘制三段递归深度为4,夹角为60的Koch曲线,形成Koch雪花,如图11-2所示。,实验11

16、 旋转的Koch雪花,11.2 实验要求设置背景色为黑色,Koch雪花为白色,代表雪花中心点的十字线以蓝色绘制。设置动画按钮,控制Koch雪花围绕坐标系原点顺时针旋转。,实验11 旋转的Koch雪花,11.3 效果图 旋转的Koch雪花绘制效果如图11-3所示 。,图11-3 旋转的Koch雪花效果图,实验12 颜色渐变立方体,12.1 实验目的掌握凸多面体消隐算法。掌握双线性颜色插值算法。建立基本三维场景。,实验12 颜色渐变立方体,12.2 实验要求建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水平向右为正,y轴铅直向上为正,z轴垂直于屏幕指向观察者。以原点为体心绘制透视投影立方体,

17、立方体8个顶点的颜色分别为黑色、白色、红色、绿色、蓝色、黄色、品红色和青色。背景色为黑色,如图12-1所示。,实验12 颜色渐变立方体,12.2 实验要求使用凸多面体消隐算法消隐,只绘制立方体的可见表面。立方体的每个可见表面的内点根据4个顶点的颜色进行渐变填充。使用鼠标左键缩小立方体,使用鼠标右键放大立方体,使用键盘方向键旋转立方体。设置动画按钮,播放或停止立方体动画。,实验12 颜色渐变立方体,12.3 效果图 颜色渐变立方体绘制效果如图12-2所示。,图12-2 颜色渐变立方体效果图,实验13 地理划分线框球,13.1 实验目的掌握球体地理划分法。,实验13 地理划分线框球,13.2 实验

18、要求建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水平向右为正,y轴铅直向上为正,z轴垂直于屏幕指向观察者。球体中心位于坐标系原点,使用地理划分法绘制球体线框模型。使用点表和面表构造球体数据文件使用凸多面体消隐算法对球体线框模型进行消隐。使用键盘方向键旋转球体。使用动画按钮,播放或停止球体动画。,实验13 地理划分线框球,13.3 效果图 使用地理划分法绘制的线框球体效果如图13-1所示。,图13-1 地理划分线框球效果图,实验14 交叉条消隐,14.1 实验目的掌握深度缓冲消隐算法。掌握深度排序消隐算法。,实验14 交叉条消隐,14.2 实验要求建立三维坐标系Oxyz,原点位于屏幕客户

19、区中心,x轴水平向右为正,y轴铅直向上为正,z轴垂直于屏幕指向观察者。在原点的上、下、左、右位置绘制4个矩形条,每个条各使用一种颜色表示,上条为红色、下条为黄色、左条为绿色、右条为蓝色。屏幕背景色为黑色。如果4个条彼此交叉,即上条的左端深度高于右端深度,下条的左端深度低于右端深度,左条的上端深度低于下端深度,右条的上端深度高于下端深度时,使用深度缓冲算法消隐。如果4个条彼此平行,4个条的深度值彼此不同,但每个条上四个顶点具有统一的深度值,使用深度排序算法消隐。,实验14 交叉条消隐,14.2 实验要求在工具条上设置控制按钮,当按钮弹起时启用深度缓冲,按钮按下时禁用深度缓冲。当启用深度缓冲消隐算

20、法时,绘制4个交叉条。当禁用深度缓冲消隐算法时,按每个条深度排序结果从小到大,绘制4个叠加条。,实验14 交叉条消隐,14.3 效果图 启用深度缓冲绘制的交叉条效果如图14-1所示,禁用深度缓冲绘制的交叉条效果如图14-2所示。,图14-1 启用深度缓冲效果图 图14-2 禁用深度缓冲效果图,实验15 立方体光照模型,15.1 实验目的掌握光源数量的设置方法。掌握光源位置的设置方法。掌握光源颜色的设置方法。掌握物体材质的设置方法。掌握光源的开启与关闭。建立简单光照三维场景。,实验15 立方体光照模型,15.2 实验要求建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水平向右为正,y轴铅直向

21、上为正,z轴垂直于屏幕指向观察者。绘制立方体的表面透视消隐模型,立方体体心和三维坐标系中心重合。使用点光源对立方体进行照射,改变光源的颜色和物体的材质,演示二者的交互作用效果。按下鼠标左键缩小立方体,按下鼠标右键增大立方体。使用键盘方向键旋转立方体。使用动画按钮,播放或停止立方体动画。,实验15 立方体光照模型,15.3 效果图 立方体光照模型绘制效果如图15-1所示。,图15-1 立方体光照模型效果图,实验16 球体Gouraud光照模型,16.1 实验目的掌握双线性光强插值模型。,实验16 球体Gouraud光照模型,16.2 实验要求建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水

22、平向右为正,y轴铅直向上为正,z轴垂直于屏幕指向观察者。绘制体心和坐标系中心重合的球体表面,使用ZBuffer消隐算法进行消隐。使用单点光源对球体进行照射生成Gouraud光照模型,光源位置位于球体右上方。背景色设置为RGB(128,0,0)。使用键盘方向键旋转球体。使用动画按钮,播放或停止球体动画。,实验16 球体Gouraud光照模型,16.3 效果图 球体单光源Gouraud光照模型绘制效果如图16-1所示。,图16-1 球体单点光源Gouraud光照模型效果图,实验17 球体Phong光照模型,17.1 实验目的掌握双线性法矢插值模型。,实验17 球体Phong光照模型,17.2 实验

23、要求建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水平向右为正,y轴铅直向上为正,z轴垂直于屏幕指向观察者。绘制体心和坐标系中心重合的球体表面,使用ZBuffer消隐算法进行消隐。使用单点光源对球体进行照射生成Phong光照模型,光源位置位于球体右上方。背景色设置为RGB(128,0,0)。使用键盘方向键旋转球体。使用动画按钮,播放或停止球体动画。,实验17 球体Phong光照模型,17.3 效果图 球体Phong光照模型绘制效果如图17-1所示。,图17-1 球体Phong光照模型效果图,实验18 立方体纹理映射,18.1 实验目的掌握位图纹理读入方法。掌握立方体纹理映射算法。,实验1

24、8 立方体纹理映射,18.2 实验要求建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水平向右为正,y轴铅直向上为正,z轴垂直于屏幕指向观察者。设置屏幕背景色为黑色。读入6张构成天空盒的位图作为纹理映射到立方体的可见表面上。按下鼠标左键缩小立方体,按下鼠标右键增大立方体。使用键盘方向键旋转纹理立方体。使用动画按钮,播放或停止立方体动画。,实验18 立方体纹理映射,实验18 立方体纹理映射,18.3 效果图 天空盒效果如图18-2所示。,图18-2 天空盒效果图,课程设计任务书,一、课程设计目的培养对图形建模、变换、投影、消隐、光照原理的理解和应用。培养图形类的编程能力。培养计算机图形学应用

25、软件开发的能力。,课程设计任务书,二、课程设计要求 深入研究计算机图形学的生成原理,设计算法实现具体的类。1.构建基础类 实现CP2类绘制二维点;实现CP3类绘制三维点;实现CRGB类处理RGB颜色;实现CVector类处理矢量。2.构建直线类 实现CLine类绘制任意斜率的直线、实现CALine类绘制任意斜率的反走样直线、实现CCLine类绘制任意斜率的颜色渐变直线、实现CACLine类绘制任意斜率的反走样颜色渐变直线。,课程设计任务书,3.构建变换类 实现CTransForm完成二维和三维图形变换。4.构建填充类 实现CFill类使用有效边表算法填充多边形、实现CZBuffer类进行深度缓

26、冲消隐,并使用Gouraud和Phong明暗处理填充图形面片。5.构建光照类 实现CLight类设置点光源、实现CMaterial类设置物体材质、实现CLighting类对物体实施光照。 通过课程设计项目的设计、开发、测试、总结和验收各阶段,深入理解计算机图形学课程中的理论和算法,学习计算机图形学相关类的编程技巧,初步掌握游戏开发的前期技能。,课程设计任务书,三、开发环境 Viusal C+ 6.0的MFC框架。四、课程设计时间 一周。五、课程设计方式 任选一个题目完成课程设计。可选题目为:基本图元光栅扫描演示系统、递归动态球体演示系统、圆环动态纹理演示系统、动态光源演示系统和3DS接口演示系

27、统。 考虑到完整的开发过程一般需要付出很多的时间,因此可选择如下的完成方式: (1)独立方式(1人),要求完成“基本图元光栅扫描演示系统”和“动态光源演示系统”的全部基本内容。 (2)小组方式(3人),要求完成“递归动态球体演示系统”、“圆环动态纹理演示系统”和“3DS接口演示系统”的全部基本内容,并对每人完成的内容作具体分工,合作完成。,课程设计任务书,六、报告格式 课程设计报告由封面、需求分析、总体设计、详细设计、源程序、程序运行效果图、参考文献组成。封面包括课程设计题目、学号、姓名、指导教师姓名和完成时间;需求分析包括项目的功能要求;总体设计给出类的结构;详细设计给出算法流程图;源程序给

28、出主要模块的头文件和源文件;运行效果图给出程序的动态效果图;参考文献给出课程设计中引用的文献,并在报告中使用角标给出引文出处。七、评分标准 课程设计成绩根据提交的课程设计报告以及软件系统的验收成绩进行综合评定,分为优,良,中,及格,不及格5个等级。要求在完成具体课程设计项目所要求功能的同时注重课程设计的创新性。 完成课程设计项目所要求的功能 及格 设计了新类且类结构清晰 中或良好 在课程设计项目的基础上,创新性地添加了新的内容 优秀,基本图元光栅扫描演示系统,1.1 设计目标图形的绘制实质上是像素的操作,像素有三个参数,位置坐标x、y以及颜色c。本设计使用正方形模拟像素,保持屏幕的纵横比为4:

29、3,将基本图元(直线、圆和椭圆)在像素级别上绘制出来。由于圆是椭圆的特例,即长轴和短轴长度相等的椭圆,可以使用键盘的约束来解决。本设计要求在像素级别演示直线的走样、反走样和颜色渐变;演示椭圆(含圆)的走样和反走样。详细功能要求如下:,基本图元光栅扫描演示系统,1.1 设计目标使用静态切分视图,将屏幕切分为左右窗格。左窗格是控制窗格,右窗格为显示窗格。保持右窗格的二维设备坐标系不变,原点位于客户区左上角,x轴水平向右为正,y轴铅直向下为正。在右窗格内绘制4030个正方形代表虚拟像素网格,使用橡皮筋技术动态演示基本图元的绘制过程。,基本图元光栅扫描演示系统,1.1 设计目标在左窗格内借助快捷颜色按

30、钮选择直线的起点和终点颜色,或双击“起点”或“终点”颜色按钮弹出系统颜色对话框,从中选择直线的起点和终点颜色。在右窗格选择直线段的起点像素和终点像素位置,分别绘制走样直线、反走样直线、颜色渐变直线。要求:在移动鼠标的过程中时,按下Shift键可绘制水平或垂直直线。,基本图元光栅扫描演示系统,1.1 设计目标在左窗格选择椭圆(含圆)的线条颜色,在右窗格内选择两个像素作为椭圆(包含圆)的外接矩形的左上角点和右下角点,分别绘制走样椭圆(含圆)、反走样椭圆(包含圆)。要求:在移动鼠标的过程中,按下Shift键可以绘制圆。,基本图元光栅扫描演示系统,1.1 设计目标在状态栏动态显示鼠标在右窗格内的虚拟像

31、素坐标,虚拟像素的坐标取为虚拟像素网格的中心点坐标,需要从设备坐标系转换到虚拟像素坐标系,即右窗格网格左上角点的虚拟像素坐标为(0,0),网格右下角点的虚拟像素坐标为(39,29)。,基本图元光栅扫描演示系统,1.2 设计效果单击左窗格的“直线”按钮后,在右窗格内使用鼠标绘制的走样直线,如图-1所示。单击左窗格的“直线”按钮,同时选中“反走样”复选框后,在右窗格内使用鼠标绘制的反走样直线如图-2所示。,基本图元光栅扫描演示系统,1.2 设计效果单击左窗格的“直线”按钮,同时为直线选择了起点和终点颜色后,在右窗格内使用鼠标绘制的颜色渐变直线如图-3所示。单击左窗格的“直线”按钮,为直线选择了起点

32、和终点颜色后,同时选中“反走样”复选框,在右窗格内使用鼠标绘制的颜色渐变反走样直线如图-4所示。,基本图元光栅扫描演示系统,1.2 设计效果单击左窗格的“椭圆”按钮后,在右窗格内使用鼠标绘制的走样椭圆如图-5所示。单击左窗格的“椭圆”按钮同时选中“反走样”复选框后,在右窗格内绘制的反走样椭圆如图-6所示。,基本图元光栅扫描演示系统,1.2 设计效果单击左窗格的“椭圆”按钮后,在右窗格内拖动鼠标的同时按下Shift键绘制的走样圆如图-7所示。单击左窗格的“椭圆”按钮同时选中“反走样”复选框后,在右窗格内拖动鼠标的同时按下Shift键绘制的反走样圆如图-8所示。,递归动态球体演示系统,2.1 设计

33、目标 在正八面体的基础上构建球体。正八面体的顶点位于球面上,正八面体的体心设为球心。将正八面体每个正三角形表面的三条边的中点连接形成四个小正三角形,并将三个中点拉伸到球面上。对每个小正三角形进行同样的递归操作可以构造出球体线框模型。请使用不同深度的递归划分法分别绘制无光照线框球,有光照线框球、无光照表面球和有光照表面球。给定沿x,y,z坐标轴3个方向的位移量和绕x,y,z坐标轴的旋转角度,控制球体在窗口客户区内运动。当球体和客户区边界发生碰撞后,改变运动方向。请使用三维正交变换绘制递归动态球体。详细功能要求如下:,递归动态球体演示系统,2.1 设计目标使用静态切分视图,将窗口切分为左右窗格。左

34、窗格为继承于CForemView类的表单视图类CLeftPortion,右窗格为一般视图类CTestView。右窗格的三维坐标系原点位于客户区中心,x轴水平向右为正,y轴铅直向上为正, z轴垂直于屏幕指向观察者。左窗格放置代表“球体控制”、“模型分类”、“光源开关”、“平移变换”和“旋转变换”4个组框控件。“球体控制”组框提供“球体半径”和“球面级数”2个滑动条;“模型分类”组框提供“线框”和“表面”2个单选按钮;“光源开关”分类组框提供“关”和“开”2个单选按钮;“平移变换”组框提供“X方向”、“Y方向”和“Z方向”3个滑动条;“旋转变换”组框提供“绕X轴”、“绕Y轴”和“绕Z轴”3个滑动条

35、。,递归动态球体演示系统,2.1 设计目标球体在右窗格内根据左窗格的设定值运动,并和客户区边界发生碰撞。当球面级数的值为8时,右窗格内的球体退化为正八面体。当球面级数的值为32时,在右窗格内的正八面体的每个等边三角形的三条边上取3个中点并用直线连接,形成4个小正三角形。将3个中点的模长扩展至球体半径长度,得到递归球体。当球面级数增加时,对每个小正三角形面片继续进行同样的递归,最终生成递归球体。根据左窗格的参数值,分别绘制无光照和有光照消隐线框球、无光照和有光照表面球。其中无光照消隐线框采用走样直线绘制,颜色为白色;有光照消隐线框球采用反走样颜色渐变直线绘制;光照表面球使用Gouraud双线性光

36、强插值模型绘制,无光照球体表面填充为白色。,递归动态球体演示系统,2.2 设计效果在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为0,当前球体面片数为8,右窗格内绘制的初始消隐正八面体线框模型效果如图-1所示。在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为1,当前球体面片数为32,右窗格内绘制的消隐递归球体线框模型效果如图-2所示。,递归动态球体演示系统,2.2 设计效果在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为2,当前球体面片数为128,右窗格内绘制的消隐递归球体线框模型效果如图-3所示。

37、在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为3,当前球体面片数为512,右窗格内绘制的消隐递归球体线框模型效果如图-4所示。,递归动态球体演示系统,2.2 设计效果在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“关”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体线框模型效果如图-5所示。在左窗格的“模型分类”组框内选择“线框”后,“光照开关”为“开”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体光照线框模型效果如图-6所示。,递归动态球体演示系统,2.2 设计效果在左窗格的“模型分类”组框内选择

38、“表面”后,光照开关为“关”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体无光照表面模型效果如图-7所示。在左窗格的“模型分类”组框内选择“表面”后,光照开关为“开”,“球面级数”为4,当前球体面片数为2048,右窗格内绘制的消隐递归球体光照表面模型效果如图-8所示。,圆环动态纹理演示系统,3.1 设计目标 设定光源和视点都位于z轴正向。在三维坐标系中,以原点为圆环中心,绘制动态旋转的无光照和有光照的圆环线框模型、圆环表面模型和圆环纹理模型。选择不同的纹理位图,动态添加到圆环上。详细功能要求如下:使用静态切分视图,将窗口切分为左右窗格。左窗格为继承于CFormView

39、类的表单视图类CLeftPortion,右窗格为一般视图类CTestView。右窗格的三维坐标系原点位于客户区中心,x轴水平向右为正,y轴铅直向上为正, z轴垂直于屏幕指向观察者。,圆环动态纹理演示系统,3.1 设计目标左窗格放置代表“圆环控制”、“模型分类”、“光源开关”、“明暗处理”、“纹理映射”的5个组框控件。“圆环控制”组框提供“环体半径”、“截面半径”、“表面级数”和“截面级数”4个滑动条;“模型分类”组框提供“线框”、“表面”和“纹理”3个单选按钮;“光源开关”组框提供“关”和“开”两个单选按钮;“明暗处理”组框提供“Gouraud”和“Phong”2个单选按钮;“纹理映射”组框提

40、供1个“选择纹理”按钮和1个显示纹理缩略图的Picture静态控件,“选择纹理”按钮调用“打开文件”通用对话框,可以选择如图-1所示的3张不同的bmp位图对圆环进行纹理映射。默认情况下,“模型分类”组框内选择的是“线框”,“光源开关”选择的是“开”,同时禁用“明暗处理”组框和“纹理映射”组框。,圆环动态纹理演示系统,3.1 设计目标,圆环动态纹理演示系统,3.1 设计目标圆环在右窗格内以客户区中心为体心绕x轴转动。根据左窗格设置的参数值,分别绘制无光照和有光照的反走样线框模型、无光照和有光照的Gouraud或Phong插值表面模型,无光照和有光照的Phong插值纹理模型。,圆环动态纹理演示系统

41、,3.2 设计效果在左窗格的“模型分类”组框内选择“线框”后,“光源开关”组框内选择“关”,右窗格内绘制的无光照消隐圆环线框模型,如图-2所示。在左窗格的“模型分类”组框内选择“线框”后,“光源开关”组框内选择“开”,右窗格内绘制的光照消隐圆环线框模型,如图-3所示。,圆环动态纹理演示系统,3.2 设计效果在左窗格的“模型分类”组框内选择“表面”后,“光源开关”组框内选择“开”,“明暗处理”组框内选择“Gouraud”,右窗格内绘制的光照消隐圆环表面模型,如图-4所示。在左窗格的“模型分类”组框内选择“表面”后,“光源开关”组框内选择“开”,“明暗处理”组框内选择“Phong”,右窗格内绘制的

42、光照消隐圆环表面模型,如图-5所示。,圆环动态纹理演示系统,3.2 设计效果在左窗格的“模型分类”组框内选择“纹理”后,“光源开关”组框内选择“关”,“明暗处理”组框内默认为“Phong”,右窗格内绘制的无光照纹理映射圆环模型,如图-6所示。在左窗格的“模型分类”组框内选择“纹理”后,“光源开关”组框内选择“开”,“明暗处理”组框内默认为“Phong”,右窗格内绘制默认贴图为-1(a)的纹理映射圆环模型,如图-7所示。,圆环动态纹理演示系统,3.2 设计效果在左窗格的“模型分类”组框内选择“纹理”后,“光源开关”组框内选择“开”,“明暗处理”组框内默认为“Phong”,通过“纹理映射”组框内的

43、“选择纹理”按钮更换纹理位图为图-1(a)或(c)后,右窗格内绘制的纹理映射圆环模型,如图-8和-9所示。,动态光源演示系统,4.1 设计目标 在窗口客户区中心绘制三维球体表面模型,材质为灰色。围绕球体设置红绿蓝三个光源。红绿蓝光源分别在xoy面、yoz面和zox面内沿不同的椭圆轨道环绕三维球体旋转。根据光源的颜色和动态变化的位置,演示三维球体的光照效果。详细功能要求如下:使用静态切分视图,将窗口切分为左右窗格。左窗格为继承于CFormView类的表单视图类CLeftPortion,右窗格为一般视图类CTestView。右窗格的三维坐标系原点位于客户区中心,x轴水平向右为正,y轴铅直向上为正,

44、 z轴垂直于屏幕指向观察者。左窗格放置“光源开关”组框控件,提供“红色光源”、“绿色光源”和“蓝色光源”3个复选框来控制相应光源的打开和关闭。,动态光源演示系统,4.1 设计目标在右窗格客户区中心绘制没有光源照射的灰色三维球体,球体静止不动。红色光源的初始位置位于x轴正向,绿色光源的初始位置位于y轴正向,蓝色光源的初始位置位于z轴正向,如图-1所示。使用动画按钮播放光源的旋转动画。红色光源在xoy面内绕z轴沿椭圆轨道逆时针旋转,绿色光源在yoz面内绕x轴沿椭圆轨道逆时针旋转,蓝色光源在zox面内绕y轴沿椭圆轨道逆时针旋转。,动态光源演示系统,4.1 设计目标,动态光源演示系统,4.2 设计效果

45、红绿蓝3个光源全部关闭,球体光照,如图-2所示。选中“红色光源”复选框的光照,如图-3所示。,动态光源演示系统,4.2 设计效果选中“绿色光源”复选框的光照,如图-4所示。选中“蓝色光源”复选框的光照,如图-5所示。,动态光源演示系统,4.2 设计效果同时选中“红色光源”和“绿色光源”复选框的光照,如图-6所示。 同时选中“红色光源”和“蓝色光源”复选框的光照,如图-7所示。,动态光源演示系统,4.2 设计效果同时选中“绿色光源”和“蓝色光源”复选框的光照,如图-8所示。同时选中“红色光源”、“绿色光源”和“蓝色光源”复选框的光照,如图-9所示。,3DS接口演示系统,5.1 设计目标 在实际应

46、用项目的开发中,有些复杂的大型建筑物模型不能通过数学方法直接建模,或者由于开发效率太低而被放弃。游戏开发中一般先使用3DS建立物体的三维模型,然后再将该模型导入场景中使用OpenGL编程驱动。请使用3ds max软件建立如图-1所示足球的三维模型,3ds max生成的渲染效果图如图-2所示。从3ds max软件中导出足球模型的二进制文件,文件命名为football.3DS。本书已经为读者构建了基于图形学原理的透视、消隐、光照和动画等函数,要求在MFC框架下编写3DS接口,直接打开football.3DS文件,读取点表和面表,使用透视、消隐等函数构建足球的网格模型,使用光照、动画等函数构建旋转足

47、球的表面光照模型。详细功能要求如下:,3DS接口演示系统,5.1 设计目标,3DS接口演示系统,5.1 设计目标使用静态切分视图,将窗口切分为左右窗格。左窗格为继承于CFormView类的表单视图类CLeftPortion,右窗格为一般视图类CTestView。右窗格的三维坐标系原点位于客户区中心,x轴水平向右为正,y轴铅直向上为正, z轴垂直于屏幕指向观察者。左窗格放置代表“模型分类”的组框控件、提供“线框模型”和“表面模型”的2个单选按钮,分别绘制足球的线框模型和表面光照模型。使用动画按钮播放足球的旋转动画。足球在右窗格内以三维坐标系原点为球心动态旋转。,3DS接口演示系统,5.2 设计效果在左窗格的“模型分类”组框内选择“线框模型”后,右窗格内绘制足球的线框模型,效果如图-3所示。在左窗格的“模型分类”组框内选择“表面模型”后,右窗格内绘制足球的光照表面模型,效果如图-4所示。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号