Как перевернуть матрицу на 180 градусов и 270 соответственно против часовой?
Написал метод переворота двумерной матрицы на 90 градусов против часовой.
private static int SIZE = 8;
private static int[][] colors = new int[SIZE][SIZE];
public static void reverseMatrix90() {
int[][] rotatedMatrix = new int[colors.length][colors.length];
for (int i = 0; i < colors.length; i++) {
for (int j = 0; j < colors.length; j++) {
rotatedMatrix[i][j] = colors[colors.length - j - 1][i];
}
}
colors = rotatedMatrix;
}
Как написать аналогичный метод reverseMatrix180() и reverseMatrix270()???
Ответы (2 шт):
Автор решения: Chubatiy
→ Ссылка
Если функция поворота на 90 корректна - то:
переделать эту функцию, чтобы принимала на себя матрицу и возвращала её
public static int[][] reverseMatrix90(int[][] matrix)
180 вызвать функцию reverseMatrix90 дважды
return reverseMatrix90(reverseMatrix90(colors));
- 270 вызвать функцию reverseMatrix90 трижды
return reverseMatrix90(reverseMatrix90(reverseMatrix90(colors)));
или вызвать функцию reverseMatrix180 и reverseMatrix90
return reverseMatrix180(reverseMatrix90(colors));
Автор решения: MBo
→ Ссылка
Просто рассмотрите, как координаты трансформируются:
180:
rotatedMatrix[i][j] = colors[colors.length - i - 1][colors.length - j - 1];
270 (-90):
rotatedMatrix[i][j] = colors[j][colors.length - i - 1];