我正在研究一个简单的绘图应用程序,我需要一个算法来填充洪水.
用户工作流程将如下所示(类似于Flash CS,更简单):
如果在应用填充后移动线条,则相应地更改填充区域.
任何人都有一个好主意,如何实现这样的算法?主要任务基本上是确定一个点周围的线段.(以某种方式存储此信息,移动线条)
编辑:解释图像:(画布中当然可以有其他行,对填充算法无关紧要)

EDIT2:更困难的情况:

EDIT3:我找到了一种用孔填充多边形的方法 http://alienryderflex.com/polygon_fill/,现在的主要问题是,我如何找到我的多边形?
language-agnostic geometry vector-graphics actionscript-3 flood-fill
我们目前正在使用以下算法来检测地理点是否位于复杂多边形内。这工作正常,除非多边形穿过 180\xc2\xb0 经线。
\n\n例如,在多边形中未检测到点 (-170, 60) 160,65,0 160,15,0 -160,15,0 -160,65,0 160,65,0
\n\n看下图:\n[Img]http://tinypic.com/r/14x2xl1[/img]\n我想要红框中的所有内容。不是黄盒子!
\n\n public static bool IsCoordinateInPolygon(IList<KMLCoordinate> polygon, KMLCoordinate testPoint)\n {\n\n bool result = false;\n int j = polygon.Count - 1;\n for (int i = 0; i < polygon.Count; i++)\n {\n if (polygon[i].Latitude < testPoint.Latitude && polygon[j].Latitude >= testPoint.Latitude || polygon[j].Latitude < testPoint.Latitude && polygon[i].Latitude >= testPoint.Latitude)\n {\n if (polygon[i].Longitude + (testPoint.Latitude - polygon[i].Latitude) / (polygon[j].Latitude - polygon[i].Latitude) * (polygon[j].Longitude - polygon[i].Longitude) < testPoint.Longitude)\n {\n result = !result;\n …Run Code Online (Sandbox Code Playgroud) 我有一些在不同点连接的线。我想绘制这些线的轮廓,我还想处理连接点处的额外线。
我通过偏移中心线然后更改线的起点和终点来处理正常情况。
但是当点彼此靠近时,我无法处理特殊情况。
不幸的是,我的声誉很低,我无法发布图片来更好地解释这一点。
我正在使用 Visual Basic .net 进行编码,并且正在为 Autocad 编写代码,但任何建议对我都非常有用。
我有旋转矩形的四个2d顶点ABCD,我需要使用setpixel(x,y,color)在pixelbufer中光栅化/绘制它(有效)
怎么做?
我正在尝试使用一些代码
// convertilg a b c d do up down left right,
// calculating some dx_left dx_right on y--
// etc (frustrating on special cases when there are 2 up_y vertices in same line etc)
for(;;)
{
drawhorizontalline(y, xstart, xend, color);
if(y==downy) break;
y--;
xstart+=dxstart;
xend+=dxend;
if(y==lefty) dxstart = dxright;
if(y==righty) dxend = dxleft;
}
Run Code Online (Sandbox Code Playgroud)
但它是最令人沮丧的(非常容易出错和最令人沮丧)我真的厌倦了昨天整整这一天,我需要找到一些工作代码,而不是试图调试这个