相关疑难解决方法(0)

矢量图形泛洪填充算法?

我正在研究一个简单的绘图应用程序,我需要一个算法来填充洪水.
用户工作流程将如下所示(类似于Flash CS,更简单):

  1. 用户在工作区上绘制直线.这些被视为矢量,可以在绘制后进行选择和移动.
  2. 用户选择填充工具,然后单击绘图区域.如果该区域在每个方向上都被线包围,则对该区域应用填充.

如果在应用填充后移动线条,则相应地更改填充区域.

任何人都有一个好主意,如何实现这样的算法?主要任务基本上是确定一个点周围的线段.(以某种方式存储此信息,移动线条)

编辑:解释图像:(画布中当然可以有其他行,对填充算法无关紧要)

在此输入图像描述

EDIT2:更困难的情况:

在此输入图像描述

EDIT3:我找到了一种用孔填充多边形的方法 http://alienryderflex.com/polygon_fill/,现在的主要问题是,我如何找到我的多边形?

language-agnostic geometry vector-graphics actionscript-3 flood-fill

13
推荐指数
1
解决办法
3281
查看次数

检测地理位置是否在复杂多边形中

我们目前正在使用以下算法来检测地理点是否位于复杂多边形内。这工作正常,除非多边形穿过 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)

c# algorithm geometry geolocation

5
推荐指数
1
解决办法
1906
查看次数

为一些连接线绘制轮廓

我有一些在不同点连接的线。我想绘制这些线的轮廓,我还想处理连接点处的额外线。

我在这个网站上看到了两个类似的问题:这里这里

我通过偏移中心线然后更改线的起点和终点来处理正常情况。

但是当点彼此靠近时,我无法处理特殊情况。

不幸的是,我的声誉很低,我无法发布图片来更好地解释这一点。

我正在使用 Visual Basic .net 进行编码,并且正在为 Autocad 编写代码,但任何建议对我都非常有用。

vb.net autocad outline computational-geometry

3
推荐指数
1
解决办法
1286
查看次数

如何光栅化旋转的矩形(在2d内由setpixel)

我有旋转矩形的四个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)

但它是最令人沮丧的(非常容易出错和最令人沮丧)我真的厌倦了昨天整整这一天,我需要找到一些工作代码,而不是试图调试这个

c algorithm 2d graph-algorithm rasterize

2
推荐指数
1
解决办法
3406
查看次数