|
|
Void Polygonfill(EdgeTableET,COLORREF
color)
{ y=置y为边表ET中各登记项对应的y坐标中最小的值; 活跃边表AET初始化为空表;
while(ET表中仍有扫描线未被处理) //处理ET表中的每一条扫描线
{ 将ET中登记项y对应的各“吊桶”合并到表AET中,将AET中各吊桶按x坐标递增排序;
在扫描线y上,按照AET表提供的x坐标对,用color实施填充;
将AET表中有y=ymax的各项清除出表;
对AET中留下的各项,分别将x换为x+1/m,这是求出AET中各边与下一条扫描线交点的x坐标;
由于前一步可能破坏了AET表中各项x坐标的递增次序,故按x坐标重新排序;
y=y+1,去处理下一条扫描线。
}
}
图2.10 对图2.8中多边形建立的“吊桶”已排序接入的边表ET
图2.11 对图2.8多边形,活跃边表AET的变化
|
|
|
|
|