矢量格式向栅格格式转换又称为多边形填充,就是在矢量表示的多边
形边界内部的所有栅格点上赋以相应的多边形编码,从而形成栅格数据阵
列。几种主要的算法描述如下:
(1)内部点扩散算法。
该算法由每个多边形一个内部点 (种子点)开始,向其八个方向的邻
点扩散,判断各个新加入点是否在多边形边界上,如果是边界上,则该新
加入点不作为种子点,否则把非边界点的邻点作为新的种子点与原有种子
点一起进行新的扩散运算,并将该种子点赋以该多边形的编号。重复上述
过程直到所有种子点填满该多边形并遇到边界停止为止。扩散算法程序设
计比较复杂,并且在一定的栅格精度上,如果复杂图形的同一多边形的两
条边界落在同一个或相邻的两个栅格内,会造成多边形不连通,这样一个
种子点不能完成整个多边形的填充。
(2)复数积分算法。
对全部栅格阵列逐个栅格单元地判断该栅格归属的多边形编码,判别
方法是由待判点对每个多边形的封闭边界计算复数积分,对某个多边形,
如果积分值为2πr,则该待判点属于此多边形,赋以多边形编号,否则在
此多边形外部,不属于该多边形。
? 573 ?(3)射线算法和扫描算法。
射线算法可逐点判断数据栅格点在某多边形之外或在多边形内,由待
判点向图外某点引射线,判断该射线与某多边形所有边界相交的总次数,
如相交偶数次,则待判点在该多边形外部,如为奇数次,则待判点在该多
边形内部。采用射线算法,要注意的是:射线与多边形边界相交时,有一
些特殊情况会影响交点的个数,必须予以排除。
扫描算法是射线算法的改进,将射线改为沿栅格阵列列或行方向扫描
线,判断与射线算法相似。扫描算法省去了计算射线与多边形边界交点的
大量运算,大大提高了效率。
(4)边界代数算法。
边界代数多边形填充算法是一种基于积分思想的矢量格式向栅格
格式转换算法,它适合于记录拓扑关系的多边形矢量数据转换为栅格
结构。