多边形扫描转换-X-扫描线算法

多边形有两种重要的表示方式:顶点表示和点阵表示

多边形扫描转换-X-扫描线算法_第1张图片

顶点表示:用多边形的顶点序列来表示多边形。这种表示直观、几何意义强、占用内存少,易于进行几何变换。但未明确指出哪些像素在多边形内,不能直接用于面着色。

点阵表示:用位于多边形内的像素集合来刻画多边形。这种表示丢失了许多几何信息(如边界,顶点),但却是光栅显示系统显示时所需的表示形式。

光栅图像的一个基本问题时把多边形的顶点表示转换为点阵表示。这种转换称为多边形的扫描转换

多边形分为凸多边形,凹多边形,含内环的多边形等

1、凸多边形:任意两顶点间的连线均在多边形内

多边形扫描转换-X-扫描线算法_第2张图片

2、凹多边形:任意两顶点间的连线有不在多边形内

多边形扫描转换-X-扫描线算法_第3张图片

、3、含内环的多边形:多边形内包含多边形

多边形扫描转换-X-扫描线算法_第4张图片



X-扫描线算法

基本思想:按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的像素,即完成填充工作

 区间的端点可以通过计算扫描线与多边形边界线的交点获得

多边形扫描转换-X-扫描线算法_第5张图片

扫描线y=3与多边形边界的交点为(2,3),(4,3),(7,3),(9,3)。则落在多边形内的区间为[2,4]和[7,9]。将区间内的像素取填充色

步骤:

1、确定多边形顶点的最大和最小值(ymin,ymax)

2、从y=ymin到y=ymax,每次用一条扫描线进行填充

3、对一条扫描线填充过程可分为4步:

a、求交:计算扫描线与多边形各边的交点

b、排序:将所有交点按递增顺序进行排序

c、交点配对:第一个于第二个,第三个和第四个等

d、区间填色:把区间内像素置为不同于背景色的填充色

但有可能出现特殊情况:多边形顶点和扫描线得交点怎么算。如图

多边形扫描转换-X-扫描线算法_第6张图片

解决方案:

1、若共享顶点的两条边分别落在扫描线的两边,交点只算一个

2、若共享顶点的两条边在扫描线的同一边,这时交点作为零个或两个。检查共享顶点的两条边的另外两个端点的y值,按这两个y值中大于交点y值得个数来决定交点数。若另外两个端点y值大于交点y值即两条边在扫描线上方交点为2个,若另外两个端点y值小于交点y值即在扫描线下方交点为0个。


你可能感兴趣的:(计算机图形学)