Вы можете разделить массив n x n
следующим образом:
+-----------+
|\ /|
| \ 1 / |
| \ / |
| \ / |
| \ / |
| 4 + 2 |
| / \ |
| / \ |
| / \ |
| / 3 \ |
|/ \|
+-----------+
Затем все пиксели в области 1 сдвигаются вправо на один пиксель, все пиксели в области 2 сдвигаются вниз на один пиксель и т. Д.
Области могут быть определены математически.Предположим, что нижний левый угол равен (0,0), тогда разделительные линии 1 и 4 от 2 и 3 равны x = y
, а разделительные линии 1 и 2 от 3 и 4 равны x = n - y
.Тогда:
Пиксель находится в области 1, если x < y
и x > n - y
.(слева от x=y
, справа от x=n-y
)
Пиксель находится в области 2, если x > y
и x > n - y
.(справа от x=y
, справа от x=n-y
)
Аналогично для областей 3 и 4.
Вам необходимо правильно расположить краевые пиксели (для некоторых из этих сравнений требуется знак равенства), и ваш код будет зависеть от четности или четности размера массива.Но вы должны быть в состоянии пойти оттуда.