易码技术论坛

 找回密码
 加入易码
搜索
查看: 500135|回复: 14

求助:封闭图形填充算法

[复制链接]
 楼主| 发表于 2007-2-21 12:34:46 | 显示全部楼层 |阅读模式
  讲清楚思想或着能提供算法的都可以
发表于 2007-2-21 14:31:17 | 显示全部楼层
递归的向四个方向搜索即可
发表于 2007-2-21 18:48:26 | 显示全部楼层
其实还有更好的办法,就是封闭图形判断法:先判断这个图形是否封闭,然后根据判断出的几个极点(极左极右极上极下),画直线,记住不要斜线,最好横着画,这样比递归快得多.
发表于 2007-2-21 19:34:18 | 显示全部楼层
上述方法只适应某些特例,不通用!
对不规则非凸封闭图形,2楼的方法是错误的!
发表于 2007-2-21 20:35:57 | 显示全部楼层
种子填充,或者扫描线算发.
lz去搜索下吧.
 楼主| 发表于 2007-2-21 23:09:08 | 显示全部楼层
我想选取一个种子,然后左右扫描,直到遇到边缘点(黑点)后,再寻找上面和下面的种子进行重复的扫描!但是,
当起始种子,向左右两边搜索时,遇到边缘后,如何选取下一个种子?
发表于 2007-2-21 23:15:20 | 显示全部楼层
4方向递归搜索最简单,最易懂,最不易出错
 楼主| 发表于 2007-2-21 23:19:41 | 显示全部楼层
速度呢??快不快?然后在正面的把我提的问题回答一下!拜托了!
发表于 2007-2-21 23:27:21 | 显示全部楼层
以前我写的pctools的画图工具,就是用4方向递归填充,速度还可以吧,没有发现更快的
发表于 2007-2-21 23:38:29 | 显示全部楼层
Re: leesoft
4方向递归……基本无异于WQX死机程序。

Re: lzjseed
我想选取一个种子,然后左右扫描,直到遇到边缘点(黑点)后,再寻找上面和下面的种子进行重复的扫描!但是,
当起始种子,向左右两边搜索时,遇到边缘后,如何选取下一个种子?
1、假设起始种子是(x0,y0),从起始点向左右两边搜索,遇到边缘之后,记录下左边缘点(xl,y0),和右边缘点(xr,y0)。
2、探测“(xl,y0-1)至(xr,y0-1)”和“(xl,y0+1)至(xr,y0+1)”这些点里面哪些是可填充的,记录下每段可填充线的一个端点,然后以此端点为种子重复第一步进行填充。
发表于 2007-2-21 23:45:35 | 显示全部楼层
以前我写的pctools的画图工具,就是用4方向递归填充,速度还可以吧,没有发现更快的
而且也不死机啊
是用数组模拟递归的
发表于 2007-2-22 21:54:26 | 显示全部楼层
Systools上也有畫圖功能啊
MS填充整個頻幕是分了塊的...左上  右上  左下  右下
发表于 2007-2-22 22:35:14 | 显示全部楼层
可以参考systools源码中的填充算法
发表于 2008-6-16 17:23:26 | 显示全部楼层
原帖由 Lendy 于 2007-2-21 23:38 发表
Re: leesoft
4方向递归……基本无异于WQX死机程序。

Re: lzjseed

1、假设起始种子是(x0,y0),从起始点向左右两边搜索,遇到边缘之后,记录下左边缘点(xl,y0),和右边缘点(xr,y0)。
2、探测“(xl,y0-1)至(xr,y0-1)”和“(xl ...



赞同!
递规层级太多,栈溢出!

[ 本帖最后由 bq49 于 2008-6-16 17:26 编辑 ]
发表于 2008-6-16 17:25:30 | 显示全部楼层
原帖由 leesoft 于 2007-2-21 23:45 发表
以前我写的pctools的画图工具,就是用4方向递归填充,速度还可以吧,没有发现更快的
而且也不死机啊
是用数组模拟递归的



很想知道是怎么用数组模拟的!数组要定多大呢?
发表于 2008-6-16 18:37:20 | 显示全部楼层
有源码,你去看吧
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-19 16:39 , Processed in 0.015595 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表