第四节 多边形的扫描转换算法    
             
 
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的变化
     
上一页 | 下一页  
  第一节 直线扫描转换算法
第二节 圆的扫描转换算法
第三节 区域填充算法
第四节 多边形的扫描转换算法