Цикл-мозаика для поворота матрицы - PullRequest
3 голосов
/ 07 октября 2010

Я пытаюсь написать функцию для поворота матрицы изображения, используя технику циклического разбиения. Тем не менее, я сталкиваюсь с некоторыми проблемами с его правильной работой.

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)]; 

                }
            }
        }
    }

}

1 Ответ

1 голос
/ 07 октября 2010

Первые два цикла for выглядят неправильно:

  for(i1 = 0; i1 < n/block; i1 += block) {
    for(j1 = 0; j1< n/block; j1 += block) {

, вероятно, должно быть:

  for(i1 = 0; i1 < n; i1 += block) {
    for(j1 = 0; j1 < n; j1 += block) {

Когда это будет исправлено, возможно, вам просто нужно будет пройтись по коду вотладчик, чтобы решить, что еще нужно исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...