3.用有序边表算法(扫描线算法)扫描转换下述多边形,多边形顶点序列坐标:
P0 (2,4)、P1(5,1)、P2(7,1)、P3(12,5)、P4(12,11)、P5(7,7)、P6(2,8)
解答3:
1)画图
2)对奇异点处理
极值点:局部最高点:按0个交点处理;局部最低点:按2个交点处理
非极值点:按1个交点处理
处理完后如图:
3)构造ET表
ET表:所有边的指针数组
边的数据结构:
ET表如下:
4)填充
AET活性链表:由与当前扫描线相交的所有多边形的边组成
注意:若x为小数 ,左端点向上取整,右端点向下取整;并采用“左闭右开”,“下闭上开”的原则对扫描线进行填充
附 算法:
1.按y递增顺序形成ET表;
2.设y=ET表中第一个非空节点的y值(最小扫描线的y值);
3.初始化AET表,将AET 表设置为空;
4.按递增顺序对当前扫描线y执行下列步骤,直至ET和AET都为空.
(1)若ET中第y类元素非空,则将ET中有关y扫描线的信息和并到AET中,并使AET按x递增顺序排列;
(2)对于扫描线y, 取AET中两两一对x坐标,填充所需的象素值(color);
(3)从AET中删去y= ymax的项; (4)对AET中保留的项,令x=x+1/m;(即xi+1=xi+ x); (5) y=y+1形成下一条扫描线,GOTO 4。