Почему, когда мы хотим повернуть матрицу по горизонтали / вертикали, мы делим член на 2? - PullRequest
0 голосов
/ 07 декабря 2018

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

int temp;
for (int i = 0 ; i < getRows() / 2 ; i++)
{
    for (int j = 0; j < getColumns() ; j++)
    {
        temp = _matrixArray[i][j];
        _matrixArray[i][j] = _matrixArray[_matrixArray.length - 1 - i][j];
        _matrixArray[_matrixArray.length - 1 -i][j] = temp;
    }

}

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Надеясь, что я правильно понял ваш вопрос, могу сказать, что причина в следующем: вы читаете свои данные из матрицы одновременно двумя способами: слева направо (от 0 до n / 2) и справа налево (nна n / 2 + 1) и поменяйте местами эти два шага (0 с n-1, 1 с n-2, ..., nk с n-k + 1), поэтому, когда вы достигнете половины его размера,вы поменяли их местами, что означает, что вы выполнили вращение

0 голосов
/ 07 декабря 2018

Код, который вы скопировали здесь, выполняет вертикальное отражение, проходя строки 0 ... [n / 2] и заменяя их строками [n / 2] ... n-1.Я использовал скобки [] для обозначения округления вниз.Итак, вы видите, что цикл должен идти только до [n / 2]?

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