Ребята, у меня действительно странная проблема.Я пытаюсь реализовать вложенный цикл for, который разбивает прямоугольник на более мелкие блоки, а затем проверяет, какие из этих меньших блоков имеют точки из массива, который я определил в них (большой прямоугольник равен 320 * 240, кстати):
int[,] edgetrunc = new int[edgeIndex, 2]; //edgeIndex is the number of points in the external array
Array.Copy(edgePoint, edgetrunc, edgeIndex*2);//truncates the nulls from the tail of my array
int delx = 16;//width of block
int dely = 12;//height of block
int blockIndex = new int();
bool[] block = new bool[(depthFrame.Width/delx)*(depthFrame.Height/dely)];
for (int ymin = 0;ymin < depthFrame.Height;ymin += dely)
{
for (int xmin = 0; xmin < depthFrame.Width; xmin += delx)
{
blockIndex = (xmin / delx) + (ymin / dely);
for (int i = 0; i < edgeIndex; i++)
{
if (edgetrunc[i, 0] >= xmin && edgetrunc[i, 0] < xmin++ && edgetrunc[i, 1] >= ymin && edgetrunc[i, 1] < ymin++)
{
block[blockIndex] = true;
break;
}
}
}
}
вот в чем проблема, я поставил точку останова на второй цикл for (цикл xmin) и начал его повторять, а значение xmin перепрыгнуло с 0 до 320 на первой итерации, и после этого осталосьтам и только ymin менялись на каждой итерации.Я собираюсь сходить с ума?Что я сделал не так?
PS Я даже проверил это, и у меня возникла та же проблема:
for (int ymin = 0;ymin < depthFrame.Height;ymin += dely)
{
for (int xmin = 0; xmin < depthFrame.Width; xmin += delx)
{
}
}
РЕДАКТИРОВАТЬ:
понял это, это было странно, очевидноэто было связано с тем, как я пытался найти индекс блока.Чтобы это исправить, я инициализировал blockIndex до 0 вне цикла for и поместил blockIndex ++ после третьего цикла for, спасибо за помощь в любом случае =)
int blockIndex = 0;
bool[] block = new bool[(depthFrame.Width/delx)*(depthFrame.Height/dely)];
for (int ymin = 0;ymin < depthFrame.Height;ymin += dely)
{
for (int xmin = 0; xmin < depthFrame.Width; xmin += delx)
{
for (int i = 0; i < edgeIndex; i++)
{
if ((edgetrunc[i, 0] >= xmin) && (edgetrunc[i, 0] < (xmin + delx)) && (edgetrunc[i, 1] >= ymin) && (edgetrunc[i, 1] < (ymin + dely)))
{
block[blockIndex] = true;
break;
}
}
blockIndex++;
}
}