2013-01-16 239 views
1

我試圖在Java中逆時針旋轉矩陣90度。我找到了關於如何用2D矩陣做到這一點的答案,但我的矩陣是3D。如何將3D矩陣逆時針旋轉90度?

以下是我發現瞭如何做一個二維旋轉:

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矩陣?

+0

大概,你會留下一個固定在這個旋轉軸?然後代碼基本上應該完全相同,除了你有一個額外的'for'循環,並且你不改變這個索引的映射。 –

+0

你能定義「3D矩陣」嗎? – Henry

+0

在3D中,問題在於你想旋轉哪個軸?如果你想圍繞主軸旋轉(如果你想圍繞另一個軸旋轉則很複雜),它就像2D一樣。 – MrSmith42

回答

5

通過您的矩陣與rotation matrix

的基本矩陣的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 | 
+0

http://stackoverflow.com/questions/14310347/gyroscope-issues-with-device-orientation/14311815#comment19887144_14311815 這是我原來的問題線程。在該頁面上接受的答案與您的答案相結合,給了我一些提示,我需要解決我的問題。感謝你的幫助! :d – NewGradDev