首页 > 代码库 > OpenGL中坐标系的理解(一)

OpenGL中坐标系的理解(一)

在OpenGL中,存在着至少存在着三种矩阵,对应着函数glMatrixMode()的三个参数:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE。

以下主要描述GL_MODELVIEW(模型视图矩阵)的个人理解。

在OpenGL中空间中点的三维坐标是使用行向量表示的,虽然与列向量相比存储结构并没有发生变化,但在坐标变换(即矩阵乘法)中会有很大不同。大家都知道一个4X4的矩阵可以表示三维坐标的平移,旋转变换。例如一矩阵R表示一个旋转加平移变换,空间中一点P(x, y, z),如果坐标使用列向量表示,则变换过程为

技术分享

如果坐标使用行向量表示,则变换过程为上述矩阵的转置

技术分享

因此,OpenGL中变换矩阵采用的是右乘的方式,并且其需要的变换矩阵其实是真正变换矩阵的转置(前提是矩阵在数组中采取的是以行为主的形式,即先存储完矩阵的一行,接下来再存储矩阵的下一行)。

函数glLoadMatrixf(const GLfloat *m)输入的矩阵其实是变换矩阵R的转置RT

 

 

 

 

 

 

 

<style>p,li { white-space: pre-wrap }</style> <style>p,li { white-space: pre-wrap }</style> <style>p,li { white-space: pre-wrap }</style> <style>p,li { white-space: pre-wrap }</style>

OpenGL中坐标系的理解(一)