Транспонирование матриц - от горизонтального к вертикальному - OpenGL ES - iPhone - PullRequest
0 голосов
/ 18 февраля 2012

Скажите, у меня есть следующая матрица, которая является вертикальной:

{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}

Какой самый простой способ добиться этого?

EDIT

Я уже сделал это, вручную сопоставив каждый элемент с правильной позицией, но хотел посмотреть, есть ли лучший выход из любопытства.

1 Ответ

0 голосов
/ 19 февраля 2012

Ну, для каждого 0 <= j <i <n </i> (когда n ^ 2 - размер матрицы), вы должны поменять местами [i][j] и [j][i] elements.

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;
 }
...