Maybe the following try to explain it could help you.
Code:
.
Multiply a vector with a Matrix:
M11 M12 M13
[x’ y’ z’] =[x y z] * M21 M22 M23
M31 M32 M33
/////////////////////////////////////////////////////
x’=(x*M11)+(y*M21)+(z*M31)
y’=(x*M12)+(y*M22)+(z*M32)
z’=(x*M13)+(y*M23)+(z*M33)
/////////////////////////////////////////////////////
the Matrix set as it is in constants:
c0=(M11,M12,M13)
c1=(M21,M22,M23)
c3=(M31,M32,M33)
/////////////////////////////////////////////////////////
would not lead to the expected solution in the dot product:
x’=(x*M11)+(y*M12)+(z*M13)
y’=(x*M21)+(y*M22)+(z*M23)
z’=(x*M31)+(y*M32)+(z*M33)
/////////////////////////////////////////////////////
Transposing a Matrix means to exchange the rows with the columns:
M11 M12 M13 M11 M21 M31
A = M21 M22 M23 A transposed = M12 M22 M32
M31 M32 M33 M13 M23 M33
//////////////////////////////////////////////////////////////////////////////////
Set the transposed Matrix in constants:
c0=(M11,M21,M31)
c1=(M12,M22,M32)
c2=(M13,M23,M33)
//////////////////////////////////////////////////////////////////////////////////
Now we have the same result as multiplication a vector with a matrix.
x’=(x*M11)+(y*M21)+(z*M31)
y’=(x*M12)+(y*M22)+(z*M32)
z’=(x*M13)+(y*M23)+(z*M33)
This explanation is not perfect, but I think it could be helpful.
The stuff is more confusing, if you don’t know how Direct3D deals with those matrices and in a tutorial this is required like in the tuts from Wolfgang Engel.