C# 在二维网格上查找多边形的算法

C# 在二维网格上查找多边形的算法,c#,algorithm,grid,2d,polygons,C#,Algorithm,Grid,2d,Polygons,我的数学不是很好,所以我很难找到一个算法来做到这一点: 我有一个这样的网格:(8x8) 我试图找到一个算法来帮助我找到红色的多边形,然后,这个多边形内的所有单元都将是红色的 现在我使用的是C#,我有一个多维数组,带有网格颜色贴图,所以我必须处理它;但我不知道我能做什么 private Color[,] mapColor; mapColor= new Color[8, 8]; 提前感谢问题不太清楚,我看不到图像(被防火墙屏蔽)。我的理解是,你想沿着所有可能的路径,从一个红细胞开始,试图找到一

我的数学不是很好,所以我很难找到一个算法来做到这一点:

  • 我有一个这样的网格:(8x8)

我试图找到一个算法来帮助我找到红色的多边形,然后,这个多边形内的所有单元都将是红色的

现在我使用的是C#,我有一个多维数组,带有网格颜色贴图,所以我必须处理它;但我不知道我能做什么

private Color[,] mapColor;
mapColor= new Color[8, 8];

提前感谢

问题不太清楚,我看不到图像(被防火墙屏蔽)。我的理解是,你想沿着所有可能的路径,从一个红细胞开始,试图找到一个多边形

如果这是一个问题,听起来像是一个图表问题。你将用BFS(广度优先搜索)算法来解决它,在网格中把它当作一个图表(每个单元可以有8个边——如果你想考虑对角线的方法——或者如果你只考虑上/下和左/右方向的话,4个边)。
BFS将返回最短路径。如果需要所有可能的路径,则应使用DFS(深度优先搜索)算法。

只需每隔64个像素对位图进行一次迭代,然后调用一个函数检查附近的像素,以确认它已找到红方块。只要图像中有像你一样的高对比度,就不难找到过度偏向红色的地方

e、 g

List PossibleCoords=new List 200)
{
KeyValuePair temp=新的KeyValuePair();
Key=i*64;
KeyValuePair.Value=j*64;
可能词条添加(临时);
}
}
}
for(int i=0;i

要采集样本,我会检查红色与其他颜色的比例是否高,如果我是在高精度之后。

“要找到红色多边形,在那之后,该多边形内的所有单元格都将是红色的。”不清楚你到底在问什么。你在说什么细胞?什么是“多边形”?你是说正方形还是三角形?对不起,我需要找一个正方形。从图像中可以看到,这些单元格是64个,所有这些单元格都有一种颜色。因此,操作有两个:从所有连接的单元中查找方形多边形(在本例中为红色)。现在更清楚了吗?对不起,我的英语不好。我找到了一个例子!不完全是tbh:)那么“单元”的意思和“正方形多边形”是一样的吗?是否要查找彼此连接的所有颜色相同的单元格?我相信你是在寻找某种泛光alghoritm是的,我已经知道这种“泛光填充”,但如果我已经知道所有颜色相同的细胞,它们相互连接形成一个正方形多边形,它就可以工作。
List<KeyValuePair<int, int>> PossibleCoords = new List<KeyValuePair<int,int>();

for(int i = 0; i < Bitmap.Width/64; i++)
{
    for(int j = 0; j < Bitmap.Height/64)
    {
        if(Bitmap.GetPixel(i*64, j*64).R > 200)
        {
            KeyValuePair<int, int> temp = new KeyValuePair<int, int>();
            KeyValuePair.Key = i*64;
            KeyValuePair.Value = j*64;
            PossibleCoords.Add(temp);
        }
    }
}

for(int i = 0; i < PossibleCoords.Count; i++)
{
    SampleAdjacentPixelsToConfirm(PossibleCoords[i]);
}