[GameMaker: Studio] 4×4 matrixの並び順

4×4 matrix3Dの計算には欠かせない行列(4行4列の2次元配列)です。
GameMaker: Studioにも3D描画機能があり、限定的ながら行列の計算も行うことができます。

GM:Sでは行列は2次元ではなく、16サイズの1次元配列として扱います。
ところで、その並びはどのようになっているのでしょうか?

それを調べるために次のようなコードを実行してみました。

a = matrix_build(10, 20, 30, 0, 0, 0, 7, 8, 9);

最初の3つは移動、次の3つは回転、最後の3つはスケールです。
結果はこのようになりました。

a[0~15] =  7,  0,  0,  0,  0,  8,  0,  0,  0,  0,  9,  0, 10, 20, 30,  1

OpenGLや数学的な解説をしているサイトでは、最後の移動成分は縦(列)で記載していることが多いです。
その場合の配置はこうなります。

[ 0, 4, 8,12]  7  0  0 10
[ 1, 5, 9,13]  0  8  0 20
[ 2, 6,10,14]  0  0  9 30
[ 3, 7,11,15]  0  0  0  1

しかし、vec4として要素毎に変数を使用すると考えると移動成分は横(行)と判断することもできます。
この場合はこうです。

[ 0, 1, 2, 3]  7  0  0  0
[ 4, 5, 6, 7]  0  8  0  0
[ 8, 9,10,11]  0  0  9  0
[12,13,14,15] 10 20 30  1

GM:Sでは1次元配列なので列順なのか行順なのかを統一さえされていればどちらでも問題なく計算できますが、自身で行列の計算処理を作成する場合はどちらにするかしっかり決めておきましょう。