检测我拥有大部分点的位置
本文关键字:位置 大部分 拥有 检测 | 更新日期: 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;
是你的罪魁祸首。当你在一个小正方形中找到一个点时,你会中止在左边正方形中的搜索。我认为这句话应该去掉(如果我理解正确的话)。