多边形的填充

时间:2021-07-26 09:04:26

原理:
寻找水平线(亦即扫描线)和多边形边界的交点个数,如果交点个数唯一,那么不画该点。

矩形填充

问题一

怎么样描述在矩形内部、外部和在边界上的像素点

解决方案

把轮廓线内的部分分解成水平宽带的集合(扫描线)
通过主对角线上两点定义矩形

问题二

怎样处理公共边的问题

解决方案

考虑边相对轮廓线的相对位置

规则

一个像素点属于一条组成轮廓线的边,当且仅当此轮廓线属于上部或者在边右边的半平面:

左端组成水平带但是右端不是
矩形内部水平带属于填充区域内部,外部的水平带则不是

这个原理适用于多边形填充

多边形填充

整体思想

所有纵坐标定义一条光栅线(亦即扫描线)
对所有扫描线,计算它和多边形的边的交点,确定内部分段

奇偶法

多边形的填充

P初值为偶数
每当遇到交点时转换一次值(2,1的转换)
P为奇数时,候选点在多边形内部

特殊情况:水平边或者是顶点

对每个扫描线

计算线和边的交点
按照横坐标递增的顺序对交点进行排序
使用奇偶法确定内部区间和外部区间

对于多边形相邻的情况(有公共边)

规则与矩形相同
描绘区间左端点封闭,右端点开放
如果多边形内部在水平边之上的话,那么水平边就是在这个多边形内部

顶点的奇偶规则

>