Java 逆时针旋转矩阵

Java 逆时针旋转矩阵,java,matrix,Java,Matrix,我写了一个顺时针旋转2D矩阵的方法 static double[][] rotateCW(double[][] mat) { final int M = mat.length; final int N = mat[0].length; double[][] ret = new double[N][M]; for (int r = 0; r < M; r++) { for (int c = 0; c < N; c++) {

我写了一个顺时针旋转2D矩阵的方法

static double[][] rotateCW(double[][] mat) {
    final int M = mat.length;
    final int N = mat[0].length;
    double[][] ret = new double[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;
}
static double[]]rotateCW(double[]]mat){
最终int M=材料长度;
最终整数N=mat[0]。长度;
double[]ret=新的double[N][M];
对于(int r=0;r

结果很好。。但我还想创建一个方法,以逆时针旋转矩阵,我不确定需要更改哪些值才能这样做。目前,我的“黑客”是使用此方法逆时针旋转三次。

我认为这种方法应该有效:

static double[][] rotateCCW(double[][] mat) {
    final int M = mat.length;
    final int N = mat[0].length;
    double[][] ret = new double[N][M];
    for (int r = 0; r < M; r++) {
        for (int c = 0; c < N; c++) {
            ret[N-c-1][r] = mat[r][c];
        }
    }
    return ret;
}
static double[]]rotateCW(double[]]mat){
最终int M=材料长度;
最终整数N=mat[0]。长度;
double[]ret=新的double[N][M];
对于(int r=0;r
这到底是如何旋转矩阵的?