一次変換
\[
x'=ax+by \\
y'=cx+dy
\]
を行列で表現すると
\[
\begin{pmatrix} x' \\ y' \end{pmatrix}=
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
\begin{pmatrix} x \\ y \end{pmatrix}
\]
となる。詳しく書くと
\[
\begin{pmatrix} x' & any \\ y' & any \end{pmatrix} =
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
\begin{pmatrix} x & 0 \\ y & 0 \end{pmatrix} =
\begin{pmatrix} ax+by & 0 \\ cx+dy & 0 \end{pmatrix}
\]
こうなる。\(any\)は参照されない。
因みに
\[
\begin{pmatrix} x' & y' \end{pmatrix}=
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
\begin{pmatrix} x & y \end{pmatrix}
\]
この表現は
\[
\begin{pmatrix} x' & y' \\ any & any \end{pmatrix} =
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
\begin{pmatrix} x & y \\ 0 & 0 \end{pmatrix} =
\begin{pmatrix} ax & ay \\ cx & cy \end{pmatrix}
\]
となり
\[
x'=ax \\
y'=ay
\]
用をなさない。
matrixを1次元配列に格納する方法は2通りあるが
\[
\begin{pmatrix} v'_0 \\ v'_1 \end{pmatrix} =
\begin{pmatrix} m_0 & m_2 \\ m_1 & m_3 \end{pmatrix}
\begin{pmatrix} v_0 \\ v_1 \end{pmatrix} \tag{1}
\]
\[
\begin{pmatrix} v'_0 \\ v'_2 \end{pmatrix} =
\begin{pmatrix} m_0 & m_1 \\ m_2 & m_3 \end{pmatrix}
\begin{pmatrix} v_0 \\ v_2 \end{pmatrix} \tag{2}
\]
を見て明らかなように(1)が採用されている。
4x4行列の場合は
\[
\begin{pmatrix}
m_0 & m_4 & m_8 & m_{12} \\
m_1 & m_5 & m_9 & m_{13} \\
m_2 & m_6 & m_{10} & m_{14} \\
m_3 & m_7 & m_{11} & m_{15}
\end{pmatrix}
\]
となる。
\[ \begin{pmatrix} m'_0 & m'_2 \\ m'_1 & m'_3 \end{pmatrix} = \begin{pmatrix} m_0 & m_2 \\ m_1 & m_3 \end{pmatrix} \begin{pmatrix} n_0 & n_2 \\ n_1 & n_3 \end{pmatrix} = \begin{pmatrix} m_0n_0+m_2n_1 & m_0n_2+m_2n_3 \\ m_1n_0+m_3n_1 & m_1n_2+m_3n_3 \end{pmatrix} \]
モデル座標を画面座標に変換するにはModel View Projectionの順で変換する \[ pos' = ( pMatrix \times vMatrix \times mMatrix ) \times pos \] の様な式になる。このMVP変換行列は予め計算しておくことが多い。