X-扫描转换算法效率低下,主要原因时求交。为避免求交运算,需引进特殊得数据结构。
可以从三个方面考虑加以改进:
1、在处理一条扫描线时,仅对与它相交的多边形的边(有效边)进行求交运算
2、考虑扫描线的连贯性:即当前扫描线与各边的交点顺序与下一条扫描线与各边的交点顺序很可能相同或非常相似
3、多边形的连贯性:即当某条边与扫描线相交时,它很可能也与下一条扫描线相交
数据结构:
1、活性边表(AET):把与当前扫描线相交得边称为活性边,并把它们按与扫描线交点x坐标递增得顺序存放在一个链表中。
2、结点内容(一个结点在数据结构里可用结构来表示)
x:当前扫描线与边得交点坐标
Δx:从当前扫描线到下一条扫描线间x得增量
ymax:该边所交的最高扫描线的坐标值ymax
next:指向下一个结点
随着扫描线的移动,扫描线与多边形的交点和上一次交点相关:
设边的直线斜率为k: