实验三 多边形的有效边表填充算法 一、实验目的与要求 1、理解多边形的扫描转换原理、方法; 2、掌握有效边表填充算法; 3、掌握链表的建立、添加结点、删除节点的基本方法; 3、掌握基于链表的排序操作
二、实验内容 在实验二所实现工程的基础上,实现以下内容并把实现函数封装在类CMyGL 中
1、C++实现有效边表算法进行多边形扫描转换 2、利用1进行多边形扫描转换和区域填充的实现; 三、实验原理 请同学们根据教材及上课的PPT 独立完成
四、实验步骤(程序实现)
1、建立并选择工程项目
打开 VC6
0->菜单 File 的New 项,在 projects 属性页选择MFC AppWizard(exe)项,在 Project name 中输入一个工程名,如“Sample”
2、新建一个图形类
选择菜单 Insert New class,Class type 选择“Generic Class”,Name 输入类名,如“CMyCG
3、向新建的图形类中添加成员函数(实际就是加入实验要求实现的图形生成算法的实现代码)
在工作区中直接鼠标右键单击,选择“Add Member Function… ”项,添加绘制圆的成员函数
void PolygonFill(int number, CPoint *p, COLORREF color, CDC* pDC) 添加其他成员函数: CreatBucket(); CreatET(); AddEdge(); EdgeOrder(); 4、成员函数的实现
实现有效边表填充算法
这一部分需要同学们去实现
参考实现: 多边形的有效边表填充算法的基本过程为: 1、定义多边形: 2、初始化桶 3、建立边表 4、多边形填充 1) 对每一条扫描线,将该扫描线上的边结点插入到临时AET 表中,HeadE
2) 对临时AET 表排序,按 照