2012-02-18 47 views
-4

说我有以下矩阵是垂直:换位矩阵 - 水平到垂直 - 的OpenGL ES - iPhone

{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} 

我要翻译这使得它是水平排列 - 即:

{0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15} 

什么是最简单的方法来实现这一目标?

编辑

我已经通过手动映射每个项目到正确的位置做到了这一点,但想看看是否有出于好奇一个更好的办法。

+3

[你有什么试过](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – 2012-02-18 18:58:46

+0

你的意思是转置。 – Bart 2012-02-18 19:05:20

回答

0

那么,对于每 = j的<我<Ñ(当 N^2是矩阵的大小),则应该交换[i][j][j][i]元件。

int mat[4][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}}; 
int i,j,temp; 
for (i=0;i<4;i++) 
for (j=0;j<i;j++) { 
    temp=mat[i][j]; 
    mat[i][j]=mat[j][i]; 
    mat[j][i]=temp; 
}