2009-10-30 228 views
1

给定一个4x4矩阵,如果矩阵向右旋转90度,我可以对每个(x,y)单元应用什么公式来生成(x,y)?我尝试遍历每个单元格,但不同的单元格给出了不同的公式。旋转多维矩阵

给定下列矩阵的值。

0 | 0,3 | 0,2 | 0,1 | 0,0 | 
1 | 1,3 | 1,2 | 1,1 | 1,0 | 
2 | 2,3 | 2,2 | 2,1 | 2,0 |  
3 | 3,3 | 3,2 | 3,1 | 3,0 | 
    -------------------------- 
    0  1  2  3 

即:

0| | | | | 
1| | | | | 
2| | | | |  
3| | | | | 
------------- 
    0 1 2 3 

通过使用下面的矩阵中的匹配单元在(X,Y)的值移动到(X,Y)值旋转值90度

If cell (0,0) has the value 5, 
using the translation matrix 5 would move to (3,0). 

对这个平移矩阵进行硬编码是单调乏味且容易出错的,如果矩阵尺寸增长到巨大数字,那么手工操作只会延迟。

+0

示例这是一个二维矩阵。你想旋转一个矩阵超过两个维度? – 2009-10-30 17:38:10

回答

3

如果你有一个n通过n矩阵,假设(i, j)意味着i行第j列,一个向右旋转:

the cell (i, j) will move to (j, n-i) 

这里是你如何看待它。图片整个i第th行。旋转矩阵时,整行会变成整列。哪一个?它将从右边的i列开始,即列n-i

现在图片整个j第th列。当你旋转时,列变成行。哪一个?它将从顶部起为j行,即,行j

+0

这似乎工作,谢谢! 我只是在我尝试的方程中使用i和j,导致结果波动,我猜n是必要的。 – TheOne 2009-10-30 17:17:22

+0

推测“波动”意味着你也反映了矩阵。 – Cascabel 2009-10-30 17:20:23