Как повернуть 3D-матрицу на 90 градусов против часовой стрелки?
Я пытаюсь повернуть матрицу против часовой стрелки на 90 градусов в Java. Я нашел ответы о том, как сделать это с 2D-матрицей, но моя матрица 3D.
Вот как я узнал о том, как сделать 2D вращение:
static int[][] rotateCW(int[][] mat) {
final int M = mat.length;
final int N = mat[0].length;
int[][] ret = new int[N][M];
for (int r = 0; r < M; r++) {
for (int c = 0; c < N; c++) {
ret[c][M-1-r] = mat[r][c];
}
}
return ret;
}
Как мне тогда вращать трехмерную матрицу?
1 ответ
Решение
Умножая вашу матрицу на матрицу вращения
Основная матрица для оси X:
| 1 0 0 |
Rx(a) = | 0 cos(a) -sin(a) |
| 0 sin(a) cos(a) |
Для 90 градусов просто установите cos(90) = 0 и sin(90) = 1, что должно привести к:
| 1 0 0 |
Rx(a) = | 0 0 -1 |
| 0 1 0 |