行列の並び順
\begin{pmatrix}
0 & 1 & 2 & 3 \\
4 & 5 & 6 & 7 \\
8 & 9 & 10 & 11 \\
12 & 13 & 14 & 15
\end{pmatrix}
WebGLを勉強していて引っかかったのが行列の並び順。
DirectXなら上記のような並び方なのだが、
WebGL(OpenGL)では以下のような並び方で配列に格納される。
\begin{pmatrix}
0 & 4 & 8 & 12 \\
1 & 5 & 9 & 13 \\
2 & 6 & 10 & 14 \\
3 & 7 & 11 & 15
\end{pmatrix}
行列同士の積のやり方は特に変わらず、
左項は行(横)方向、右項は列(縦)方向で計算される。
(【例】左項:a e i m、右項:A B C D)
\begin{pmatrix}
a & e & i & m \\
b & f & j & n \\
c & g & k & o \\
d & h & l & p
\end{pmatrix}
\times
\begin{pmatrix}
A & E & I & M \\
B & F & J & N \\
C & G & K & O \\
D & H & L & P
\end{pmatrix} \\
=
\begin{pmatrix}
aA+eB+iC+mD & aE+eF+iG+mH & aI+eJ+iK+mL & aM+eN+iO+mP \\
bA+fB+jC+nD & bE+fF+jG+nH & bI+fJ+jK+nL & bM+fN+jO+nP \\
cA+gB+kC+oD & cE+gF+kG+oH & cI+gJ+kK+oL & cM+gN+kO+oP \\
dA+hB+lC+pD & dE+hF+lG+pH & dI+hJ+lK+pL & dM+hN+lO+pP
\end{pmatrix}