电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

多边形的有效边表填充算法VIP免费

多边形的有效边表填充算法_第1页
1/7
多边形的有效边表填充算法_第2页
2/7
多边形的有效边表填充算法_第3页
3/7
实验三 多边形的有效边表填充算法 一、实验目的与要求 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 表排序,按 照 x 递 增 的顺 序存 放 。 3) 根据 AET 表中边表结点的ymax 抛 弃 扫描完的边结点,即 ymax>=scanline 4) 扫描 AET 表,填充扫描线和多边形相 交 的区间 。 5) 根据的边连贯性,更新AET 表。 0、构造桶结点的数据结构和有效边表的数据结构: 有效边表的数据结构:类 AET class AET { public: AET(); virtual ~AET(); double x; int yMax; double k;//代替 1/k AET *next; } 桶结点的数据结构:类 Bucket class Bucket { public: Bucket(); virtual ~Bucket(); int ScanLine; AET *p;//桶上的边表指针 Bucket *next; } 1、定义多边形: CPoint Point[7];//定义多边形 //设置多边形的7个顶点 Point[0]=CPoint(550,400);//P0 Point[1]=CPoint(3...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

多边形的有效边表填充算法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部