Я пытаюсь написать функцию для поворота матрицы изображения, используя технику циклического разбиения. Тем не менее, я сталкиваюсь с некоторыми проблемами с его правильной работой.
EDIT:
Вот мой обновленный код, который работает, но только когда n кратно размеру блока. Как мне поступить с различными размерами матриц? Прямо сейчас я просто использую квадратные блоки, и это очень хорошо работает для этих квадратных блоков. Как бы я изменил это, чтобы использовать прямоугольные блоки в зависимости от размера массива, который я дал. В частности, если мне дан массив n x n, как выбрать размеры прямоугольного блока, чтобы разделить его на?
//Block size to tune
int block = 20;
int i1, j1, k1, i, j, k;
for(i1 = 0; i1 < n; i1 += block) {
for(j1 = 0; j1< n; j1 += block) {
for(i = i1; i < i1 + block; i++){
for(j = j1; j < j1 + block; j++){
dest[getInd(j, i, n)] = src[getInd(i, n - 1 - j, n)];
}
}
}
}
}