一.基本原理
扫描线多边形区域填充算法是按扫描线顺序(由下到上),计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的象素,即完成填充工作。

区间的端点可以通过计算扫描线与多边形边界线的交点获得。
对于一条扫描线,多边形的填充过程可以分为四个步骤:
(1)求交:计算扫描线与多边形各边的交点;
(2)排序:把所有交点按x值递增顺序排序;
(3)配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间;
(4)填色:把相交区间内的象素置成多边形颜色;
如图所示,扫描线 6 与多边形的边界 线交于四点A、B、C、D。
这四点把扫描线分 为五个区间 [0, 2],[2, 3.5],[3.5, 7],[7, 11], [11, 2]。
其中, [2, 3.5], [7, 11] 两个区间落在 多边形内,该区间内的象素应取多边形色。
其它区间内的象素取背景色。
这里的四个交点在计算时未必是按从左到 右的顺序获得。
例如,当多边形采用顶点序列 P1P2P3P4P5P6 表示时,把扫描线 6 分别与边 P1P2,P2P3,P3P4,P4P5,P5P6,P6P1 相 交,
得到交点序列D、C、B、A,必须经过排 序,才能得到从左到右,按 x 递增顺序排列的
交点 x 坐标序列。
二.问题
(1)当扫描线与多边形顶点相交时,交点 的取舍问题(保证交点正确配对):
检查相交顶点的两条边的另外两个顶点的y值。按这两个y值中大

最低0.47元/天 解锁文章
6872

被折叠的 条评论
为什么被折叠?



