У меня есть одномерный массив размером width * height
, который содержит данные из двумерного массива по строкам, с началом координат в левом нижнем углу.Алгоритм для добавления значений в круговой границе в двумерном массиве
Я хочу классифицировать массив с помощью радиусов n
, в границах которых я хочу добавить все значения массива.
Существует массив values[n+1]
. значения [0], например, должны содержать сумму всех элементов массива, индексы которых находятся между (0|0)
и радиусом 1
. Координата радиуса 1
будет равна height/n * 1
по оси y и width/n * 1
по оси x.
Я не уверен, смогу ли я выразить то, что мне нужно.
Мой текущий (псевдо) код будет только добавлять значения в прямоугольные границы (желтый). Мне нужна сумма значений в пределах серой границы.
Спасибо за помощь!
int n = 5;
int[] array[width*height];
int[] values[n+1];
int* p = array[0];
int i = 0;
int bandwith = width /(n+1);
for(int i= 0; i< n; i ++)
{
for (int nRow = 0; nRow < height; ++nRow){
for (int nColumn = 0, nOff = 0; nColumn < width; ++nColumn){
if(nColumn < (i+1)*bandwidth && nColumn > i*bandwidth
&& nRow < (i+1)*bandwidth && nRow > i*bandwidth)
{
values[i] += p[nOff++];
}
}
p += width;
}
i++;
}
Если бы это было 2D-массив - знаете ли вы, как это сделать? или ваша проблема делает его круглым, даже в 2D-массиве? – amit
@amit Я думаю, что у меня проблемы с круговым граничным условием. – tzippy
Есть ли эллиптические кварталы или идеальные кварталы? – MBo