多边形填充算法之扫描线填充算法
多边形填充可以是凸多边形、凹多边形、或者是可以是带孔的多边形。扫描线填充算法是一种常用的填充算法。
1. 多边形填充过程一般可以分为四个步骤
(1)求交:计算扫描线与多边形各边的交点;
(2)排序:把所有交点按照递增的顺序进行排序;
(3)交点配对:1与2, 3与4等配对处理,每对代表扫描线与多边形的一个相交的区间;
(4)区间填充:把这些相交的区间内的像素设置成多边形颜色,填充区间之外的像素设置背景色。
2. 需要解决的问题
(1)扫描线与多边形相交时,交点的取舍问题;
(2)多边形边界的像素取舍问题。
3. 问题解决
(1) 扫描线交于多变型的顶点时,根据顶点的对应的两条边的另一个顶点的位置来判断取舍。
① 如果另外两个顶点都高于扫描线,则取这个顶点算取2次,即此顶点可以填充,已经作为填充区间;
② 如果另外两个顶点都低于扫描线,则这个交点算取0个,即此顶点不进行填充;
③ 如果另外两个顶点一个在扫描线之上,另一个在扫描线之下