1、 计算机图形学计算机图形学 姓名:姓名: mouse 学号:学号: 班级:班级: 一、设计目的一、设计目的 计算机图形学课程设计是验证、 巩固和补充课堂讲授的理论知识的必要环节, 通过计算 机图形学上机实验,培养学生的自学能力、动手能力、综合运用知识解决实际问题的能力。 二、学生应达到的实验能力与标准二、学生应达到的实验能力与标准 1)了解掌握图形的生成算法,实现直线、圆、椭圆的生成算法,对各种算法进行效率及效 果的分析和比较, 学有余力的同学可在对现有算法理解的基础上, 能自行设计二维图形的生 成算法并编程实现。 2)了解掌握填充算法理论,能搞实现矩形、多边形、圆、椭圆的填充。 3)了解掌握
2、裁剪算法理论,理解并实现直线和多边性裁剪,对各种直线裁剪算法进行效率 及效果的分析和比较。 4)了解掌握图形的坐标变换理论,实现二维图形的基本变换,包括平移、旋转、比例、对 称变换。 5)了解曲线和曲面的生成算法理论,能实现简单的三次 Hermite,Bezier 曲线。 三、三、 要求实现的内容框架要求实现的内容框架 (一)结构展示(一)结构展示 (1) 进一步了解计算机图形学课程的知识结构体系,绘制整个课程的知识结构 逻辑示意图,如(图 1) : (图(图 1) 这次我只做了两级目录,如果要做三级目录的话,方法是类似的。这里主要利用的多态 来实现的目录变换机制:先建一个基础菜单类(Menu
3、Base) ,其它的子菜单(MainMenu、 LineMenu、FillMenu、CutMenu、TranMenu)就继承这个基础类,来进行一系列的工作。 基础菜单类:主要做的是,菜单的初始化、菜单的析构、显示菜单的 ShowMenu()和 响应时间 Event()函数。 下面展示的是基础菜单的结构图,以及其中某一个继承该菜单的子菜单结构图,如图 2 所示: 3 (图(图 2) (二)代码和运行效果(二)代码和运行效果展示展示 (1)二维线画图元)二维线画图元 1.绘直线绘直线 1)绘直线 DDA 法 运行的效果如图(图图 3)所示。 4 2)绘直线中点法 运行效果如图(图图 4)所示。 3
4、)Bresenham 法 5 运行效果如图(图图 5)所示。 次图展示的是运行过程中的菜单。 6 2.绘圆绘圆 1)中点法 运行效果如图(图图 6)所示。 2)正负法 7 运行效果如(图图 7)所示。 3Bresenham 运行效果如图(图 8)所示。 8 菜单截图: 3绘椭圆绘椭圆 1)中点法 9 运行效果如图(图图 9)所示。 (图图 9) (2)二维填充图元)二维填充图元 1.扫描转化矩形扫描转化矩形 10 11 运行效果如(图图 10) 2.种子填充法种子填充法 1)多边形 12 运行效果如(图图 11)所示。 2)圆 13 运行效果如(图图 12)所示。 3)椭圆 14 运行效果如图(图图 13)所示。 (3)二维剪裁)二维剪裁 1.直线段裁剪直线段裁剪 1)Cohen-Sutherland 15 16 运行效果如图(图图 14)所示。 2.多边形裁剪 运行效果如图(图图 15)所示。 17 (4)二维变换)二维变换 1.多边形平移多边形平移 运行效果如图(图图 16)所示。 2.多边形缩放多边形缩放 18 运