OpenGL的矩阵
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])。
补充:软件开发 , C语言 ,