如何将3D矩阵逆时针旋转90度?

3

我正在尝试使用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;
}

我该如何旋转一个三维矩阵呢?

你可能会在这个旋转中固定其中一个轴吧?那么代码基本上应该是完全相同的,除了你有一个额外的 for 循环,并且你将该索引映射为不变。 - Louis Wasserman
同时导入javax.media.j3d,然后您就可以使用Transform3D。 - Rachel Gallen
顺便说一下,我这里没有使用图形。我有一个使用数组定义的三维矩阵。如何将其逆时针绕x轴旋转90度?谢谢! - NewGradDev
请查看https://dev59.com/m0nSa4cB1Zd3GeqPKg6s,我刚看到你的最后一条评论,不知道它是否有帮助。 - Rachel Gallen
请查看此链接:http://twist-and-shout.appspot.com/ - Rachel Gallen
显示剩余4条评论
1个回答

11
通过与一个旋转矩阵相乘来旋转您的矩阵。旋转矩阵是一个用于描述三维空间中旋转变换的正交矩阵。
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    |

这是我的原始问题线程。该页面上的被接受的答案以及您的答案为我提供了解决问题所需的提示。感谢您的帮助! :D - NewGradDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接