# Matrix Transpose

All square matrices have a **Main Diagonal**. This is the row of numbers that goes diagonally along the matrix from the top left to the bottom right. For a 4x4 matrix, these are elements: (0,0), (1,1), (2,2), (3,3). Another way to define the main diagonal is elements which have the row and column index.

$$ \begin{bmatrix} \textbf{A} & e & i & m\\ b & \textbf{F} & j & n\\ c & g & \textbf{K} & o\\ d & h & l & \textbf{P} \end{bmatrix} $$

To transpose a matrix, flip it along it's main diagonal. The image below shows the transpose operation.

You may have noticed that transposing a Column Major matrix gives it the same logical topology as if it where converted to a Row Major matrix. The transpose operation can be used to change the logical topology of a matrix. The code sample below shows a simple `Transposed`

function.

mat4 Transposed(mat4 m) { mat4 r; r.v[0] = m.v[0]; r.v[1] = m.v[3]; r.v[2] = m.v[6]; r.v[3] = m.v[1]; r.v[4] = m.v[4]; r.v[5] = m.v[7]; r.v[6] = m.v[2]; r.v[7] = m.v[5]; r.v[8] = m.v[8]; return r; } // mat 2 and 3 transpose functions are similarly trivial