在OpenGL中,三维的点或者是向量要用四维来表示,原因是在进行一些变换时,程序需要通过矩阵相乘来达到目的。比如rotate,shearing or scale,三维就足够,但是如果要translate的话,就必须4维才够。
如这个变换矩阵Mview,前面的矩阵是旋转矩阵,后面的矩阵是平移矩阵,从上面的矩阵可以看出,平移矩阵需要四维,而旋转三维就足够。
在OpenGL中,三维坐标点的表示为[x,y,z,1],而方向的表示为[x,y,z,0],原因是如果末尾是1,那点的坐标就固定住了,而如果末尾是0的话,放缩并不影响,这个是方向向量的特性。