- 5
- 0
- 约7.15千字
- 约 9页
- 2017-08-28 发布于湖北
- 举报
扫描线填充算法
扫描线多边形填充:
填充的主要思想:
struct Edge
{ float x;
float Δx;
float ymin;
Edge *next;
};
Step1:(初始化)将ET表中各元素置空,建立ET表
Step2: (basket sort,分桶分类 )为多边形P的每一条边建立边结构按该边的上端点的y值y上插入ET表中的第y上类(组),即插入ET[y上].
Step3 :(初始化) AEL置空//AEL=Null y:ET表中非空元素的区域号最大值。
Step4:扫描转化
while(AEL or ET 非空)
do
{No.1 (边插入)如果ET[y]非空,则将ET[y]中各边插入AEL。
No.2 (排序)将AEL中的各边按照x(若x相等按Δx的递增顺序排序。
No.3(如果AEL非空填色)将AEL中各边依次组成对,在横坐标为y的扫描线上,将以每对边的x坐标为端点的区间上填上多边形所需要的颜色.
No.4(下一条扫描线)y--。
No.5(边删除)将AEL中满足y=ymin的边删除。
No.6(边更新)将AEL中的各边x值更新,x=x+ Δx }
源程序
C++源代码:
CScanLineView::CScanLineView()
{
num=0;
StartFlag=0;
原创力文档

文档评论(0)