矢量图形填充算法?

| 我正在开发一个简单的绘图应用程序,并且需要一种算法来填充洪水。 用户工作流程将如下所示(类似于Flash CS,只是更简单): 用户在工作空间上绘制直线。这些被视为向量,并且可以在绘制后进行选择和移动。 用户选择填充工具,然后单击绘图区域。如果该区域在各个方向上都被线包围,则对该区域应用填充。 如果在应用填充后移动了线条,则填充区域会相应更改。 任何人都有一个好主意,如何实现这种算法?主要任务是确定点周围的线段。 (并以某种方式存储此信息,以防行移动) 编辑:一张解释性图片:(画布中当然可以有其他行,这与填充算法无关紧要) EDIT2:更困难的情况: EDIT3:我找到了一种用孔填充多边形的方法http://alienryderflex.com/polygon_fill/,现在的主要问题是,如何找到多边形?     
已邀请:
您正在寻找一个点定位算法。它并不太复杂,但是还不够简单,无法在这里进行解释。本书对此有很好的介绍:http://www.cs.uu.nl/geobook/ 当我回到家时,我会得到这本书的副本,看看我是否仍然可以尝试。您只需要了解许多细节。归结为构建输入的DCEL,并在添加或删除行时维护数据结构。任何带有鼠标坐标的查询都将简单地返回组件的内部半边,特别是那些包含指向所有内部组件的指针的,这正是您要的。 但是,有一件事是,您需要知道输入中的交点(因为如果您有相交的线,则无法构建梯形图),并且如果您可以绕开它(即输入的段数很少),我强烈建议您只需使用朴素的O(n²)算法(简单,可编码且可在不到1小时的时间内进行测试)。 O(n log n)算法需要花费几天的时间进行编码,并为状态使用巧妙且非常简单的数据结构。但是在书中也提到了它,因此,如果您能胜任这项任务,则有两个购买理由。通常,这是一本非常好的关于几何问题的书,因此,仅出于这个原因,任何对算法和数据结构感兴趣的程序员都应该拥有一本。     
尝试这个: http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/ 该函数返回ActionScript中两行之间的交集(如果有)。您需要遍历所有行,才能得到所有行。 当然,如果您打算填充这些点,那么它们的顺序将很重要-可能会更难!     
使用ActionScript,您可以使用
beginFill
endFill
,例如
pen_mc.beginFill(0x000000,100);
pen_mc.lineTo(400,100);
pen_mc.lineTo(400,200);
pen_mc.lineTo(300,200);
pen_mc.lineTo(300,100);
pen_mc.endFill();
http://www.actionscript.org/resources/articles/212/1/Dynamic-Drawing-Using-ActionScript/Page1.html Flash CS4还引入了对路径的支持: http://www.flashandmath.com/basic/drawpathCS4/index.html 如果您想发疯并编写自己的洪水填充代码,那么Wikipedia可以提供不错的入门指南,但我认为这将是为了这些目的而重塑原子。     

要回复问题请先登录注册