Как повернуть 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    |
Другие вопросы по тегам