在上一节中,我们讲解了如何生成根据多边形生成ET
这一节我们讲解活性边和活性边表
与当前扫描线相交的边称为活性边(active edge),
把这些活性边按与扫描线交点x坐标递增的顺序存入一个链表中这个链表就是活性边表(Active Edge Table)。它记录叻多边形边沿扫描线的交点序列
所以活性边表示一个链表,链表的节点是与当前扫描线相交的边(即活性边)
那么活性边这个结构体包含哪些字段呢?(这里为了和前面的边表中字段的顺序保持一致)
- x: 当前扫描线与该活性边的交点的横坐標
-
我们需要知道一条边何时不再与下一条扫描线相交以便及时將这样的边从活性边表中删除,避免下一步进行无谓的计算
一旦生成了ET, 扫描线算法就按照下列步骤进行处理:
- 将y置为边表ET中最小的y坐标值,即第一个非空的桶的y值
- 重复以下运算,直到AET囷ET都为空:
每做一次新的扫描线时要对已有的边进行三个处理: 1.是否被去除,即判断当前扫描线的y值是否等于该边的