当前位置:首页 > 计算机图形学-有效边表填充算法实验报告
-------------精选文档-----------------
实验题目:实验二 有效边表填充算法 1.实验目的:
设计有效边表结点和边表结点数据结构 设计有效边表填充算法 编程实现有效边表填充算法 2.实验描述:
下图 1 所示多边形覆盖了 12 条扫描线,共有 7 个顶点和 7 条边。7 个顶点分别为:P0(7,8) ,P1(3,12) ,P2(1,7) ,P3(3,1), P4(6,5), P5(8,1), P6(12,9)。在 1024×768 的显示分辩率下,将多边形顶点放大为 P0(500,400) ,P1(350,600) ,P2(250,350),P3(350,50), P4(500,250), P5(600,50), P6(800,450)。请使用有效边表算法填充该多边形。
可编辑
-------------精选文档-----------------
图1示例多边形
可编辑
-------------精选文档-----------------
图2 屏幕显示多边形
3.算法设计:
(1)建立AET和BUCKET类;
(2)初始化桶,并在建立桶结点时为其表示的扫描线初始化为带头结点的链表; (3)对每个桶结点进行循环,将桶内每个结点的边表合并为有效边表,并进行有效边表循环;
(4)按照扫描线从小到大的移动顺序,计算当前扫描线与多边形各边的交点,然后把这些交点按X值递增的顺序进行排序,配对,以确定填充区间; (5)用指定颜色点亮填充区间内的所有像素,即完成填充工作。 4.源程序: 1)//AET.h class AET {
可编辑
-------------精选文档-----------------
public: AET();
virtual ~AET(); double x; int yMax;
double k;//代替1/k AET *next;
};
//AET..cpp AET::AET() { }
AET::~AET() { }
2) //Bucket.h #include \ class Bucket {
可编辑
共分享92篇相关文档