2

Javaで行列を反時計回りに90度回転させようとしています。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;
}

では、3Dマトリックスを回転させるにはどうすればよいですか?

4

1 に答える 1

10

行列に回転行列を掛けることによって

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    |
于 2013-01-16T21:14:56.460 に答える