我写了一个顺时针旋转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;
}
效果很好..但我也想创建一个旋转矩阵CCW的方法,我不确定我需要改变哪些值才能这样做。目前,我的“黑客”是使用这种方法三次旋转CCW。
答案 0 :(得分:0)
我认为这种方式应该有效:
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;
}