计算机图形学 - 扫描线种子填充算法

来源:互联网 发布:p2p信贷系统源码php 编辑:程序博客网 时间:2024/04/28 07:06
算法描述:

  种子填充算法原理和程序都很简单, 但由于多次递归, 费时、费内存, 效率不高。为了减少递归次数, 提高效率可以采用扫描线种子填充算法。算法的基本过程如下: 当给定种子点( x, y) 时, 首先填充种子点所在扫描线上的位于给定区域的一个区段, 然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段, 并依次保存下来。反复这个过程, 直到填充结束。

  区域填充的扫描线算法可由下列4 个步骤实现:

  ①  初始化: 堆栈置空。将种子点(x, y) 入栈。

  ② 出栈: 若栈空则结束。否则取栈顶元素( x, y) , 以y 作为当前扫描线。

  ③ 填充并确定种子点所在区段: 从种子点(x, y) 出发, 沿当前扫描线向左、右两个方向填充, 直到边界。分别标记区段的左、右端点坐标为xl 和xr。

  ④ 确定新的种子点: 在区间[xl,xr] 中检查与当前扫描线y上、下相邻的两条扫描线上的像素。若存在非边界、未填充的像素, 则把每一区间的最右像素作为种子点压入堆栈, 返回第②步。

  

 

详细代码:计算机图形学 - Code 2

生成结果:

0 0
原创粉丝点击