码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-01-10 18:29:11      阅读:635      评论:0      收藏:0      [点我收藏+]

标签:

算法描述:

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

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

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

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

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

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

  技术分享技术分享技术分享

 

详细代码:Computer Graphics - code_2

生成结果:

技术分享

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

标签:

原文地址:http://www.cnblogs.com/xd-g/p/5118716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!