计算机图形学-有效边表填充算法实验报告 联系客服

发布时间 : 星期六 文章计算机图形学-有效边表填充算法实验报告更新完毕开始阅读098babde6d175f0e7cd184254b35eefdc8d31584

-------------精选文档-----------------

实验题目:实验二 有效边表填充算法 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 {

可编辑