检测我拥有大部分点的位置

本文关键字:位置 大部分 拥有 检测 | 更新日期: 2023-09-27 18:27:09

我需要将我的表单区域划分为100个小表单,并检测我在哪一个表单中拥有最多的点。我怎么能写得这么简单?

这是我的代码:

bool isFound;
int[,] tab = new int[10, 10];
double widthX, widthY;
double X, Y;
widthX = (max.X - min.X) / 10.0;
widthY = (max.Y - min.Y) / 10.0;
X = min.X;
Y = min.Y;
foreach (Position pos in positionData)
{
    isFound = false;
    for (int i = 0; i < 10; i++)
    {
        X = min.X;
        for (int j = 0; j < 10; j++)
        {
            if ((pos.X >= X && pos.X < X + widthX) && (pos.Y >= Y && pos.Y < Y + widthY))
            {
                tab[i, j] += 1;
                isFound = true;
                break;
            }
            X += widthX;
        }
        if (isFound) break;
        Y += widthY;
    }
}

Position是一个包含X和Y双变量的结构。我不知道为什么,但并不是所有的点都在我的选项卡中表示(例如,当我的positionData有10个点时,我的选项卡只包括4个点)。

检测我拥有大部分点的位置

我认为if (isFound) break;是你的罪魁祸首。当你在一个小正方形中找到一个点时,你会中止在左边正方形中的搜索。我认为这句话应该去掉(如果我理解正确的话)。