在二维网格上寻找多边形的算法

本文关键字:多边形 算法 寻找 维网格 | 更新日期: 2023-09-27 18:13:23

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

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

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

在这一刻,我使用c#,我有一个多维数组与网格颜色地图,所以我必须对它工作;但我不知道我能做什么。

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

Thanks in advance

在二维网格上寻找多边形的算法

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

如果这是问题,听起来像一个图形问题。你可能会使用BFS(广度优先搜索)算法来解决这个问题,将网格视为一个图形(如果你想考虑对角线方式,每个单元格可以有8条边,如果你只想考虑上下和左右方向,则可以有4条边)。

BFS将返回最短路径。如果你想要所有可能的路径,你应该使用DFS(深度优先搜索)算法。

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

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]);
}

取一个样本,如果我追求高精度,我会检查红色与其他颜色的比例是否很高。