1.
OpenGL中的矩陣
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]
對它定義的新坐標系,OpenGL是這麼說的:
x軸向量(m[0], m[1], m[2]);
y軸向量(m[4], m[5], m[6]);
z軸向量(m[8], m9], m[10]);
原點(m[12], m[13], m[14]);
2.
回過頭,矩陣只不過是方程組的一種表達形式,這個矩陣對應的方程組應為:
x = m[0]x + m[1]y +m[2]z + m[3]w;
y = m[4]x + m[5]y +m[6]z + m[7]w;
z = m[8]x + m[9]y +m[10]z + m[11]w;
w = m[12]x + m[13]y +m[14]z + m[15]w;
3.
因為w和w’都是1,由這個方程組我唯一能看出來的是m[3],m[7],m[11]跟平移量有關系,它們和原點(Ox,Oy,Oz)有如下關系:
m[3] = - (m[0]*Ox + m[1]*Oy +m[2]*Oz)
m[7] = - (m[4]*Ox + m[5]*Oy +m[6]*Oz)
m[11] = - (m[8]*Ox + m[9]*Oy +m[10]*Oz)
疑問:
??這跟OpenGL所說的貌似矛盾了。
一種說法
有筒子提出,我在2. 還原的方程組不正確,正確的方程組是
x = m[0]x + m[4]y +m[8]z + m[12]w;
y = m[1]x + m[5]y +m[9]z + m[13]w;
z = m[2]x + m[6]y +m[10]z + m[14]w;
w = m[3]x + m[7]y +m[11]z + m[15]w;
我個人並不同意這種說法。
即便如此,原點坐標也並不是OpenGL所說的12-14,更何況,這個方程組決定的坐標系的x軸方向已經變成了(m[0],m[4],m[8])。