【发布时间】:2011-08-16 15:21:18
【问题描述】:
我正在开发一个简单的绘图应用程序,我需要一种算法来进行洪水填充。
用户工作流程将如下所示(类似于 Flash CS,只是更简单):
- 用户在工作区绘制直线。这些被视为矢量,绘制后可以选择和移动。
- 用户选择填充工具,然后单击绘图区域。如果该区域被各个方向的线包围,则对该区域应用填充。
如果在应用填充后移动线条,则填充区域会相应更改。
任何人都有一个好主意,如何实现这样的算法?主要任务基本上是确定一个点周围的线段。 (并以某种方式存储这些信息,以防线条被移动)
编辑:解释图像:(画布中当然可以有其他线条,这与填充算法无关)
EDIT2:更困难的情况:
EDIT3:我找到了一种用孔填充多边形的方法http://alienryderflex.com/polygon_fill/,现在主要问题是,我如何找到我的多边形?
【问题讨论】:
-
我在想某种递归蛮力算法。从附近的一条线开始并递归到它重叠的线,直到你回到第一条线。
-
“递归到它重叠的行”是什么意思?递归函数是做什么的?
-
对不起,我倾向于在这里阅读人们的 cmets。它经常适得其反。
-
@sydd 结果填充需要是矢量还是位图?
-
@Nitesh 我得到了 hvidgaard 正在谈论的书,并实现了那里描述的点定位器算法。请注意,图形表示 (DCEL) 和用于存储点的数据结构与算法本身一样重要。 Actionscript afaik 中没有开源实现,但我可能会在某个时候开源我的。
标签: actionscript-3 language-agnostic geometry vector-graphics flood-fill