资源描述:
《OpenGL矩阵操作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OpenGL的矩阵变换操作方法一、借助OpenGL的矩阵堆栈,保存各个物体的矩阵变换火柴棍案例glMatrixMode(GL_PROJECTION);glMatrixMode(GL_MODELVIEW);将当前变换矩阵设置为模型视图变换矩阵。glPushMatrix,glPopMatrix—压入和弹出当前矩阵堆栈glGet(GL_MAX_MODELVIEW_STACK_DEPTH);glGet(GL_MAX_PROJECTION_STACK_DEPTH);来获取模型视图矩阵堆栈和投影矩阵堆栈的最大堆栈深度。一般情况下(在Wi
2、ndows平台上),模型视图的最大堆栈深度是32,而投影堆栈的最大深度是2。二、自己保存各个物体的空间变换矩阵floatM[4][4];//其中M[j,i]表示矩阵M的第j行,第i列的数据。floatM[16];//也可以创建一个一维数组无论是2维数组还是一维数组,都是按照列优先的顺序保存的。如图所示1.读取矩阵堆栈glGetFloatv(GL_MODELVIEW_MATRIX,M);glGetFloatv(GL_PROJECTION_MATRIX,M);2.设置矩阵堆栈,用于描画glLoadIdentity();//加载4
3、*4单位矩阵;glLoadMatrix{fd}(*m);//加载指定4*4矩阵m;glMultiMatrix{fd}(*m);//当前矩阵右乘*m;<图形变换>1.几何变换:平移、缩放、旋转2.齐次坐标:用n+1维向量表示n维向量,比如,(wx,wy,wz,w)表示(x,y,z)。通常,令w=1,用来进行复合几何变换。3.坐标变换:根据图形在一个坐标系下的坐标求其在另一坐标系下的坐标。4.3D空间通过投影,可以在2D屏幕上显示。同时,在投影面上定义一个窗口。只有窗口内的图形才显示。在屏幕上定义一个矩形视区,然后,从窗口到视区
4、进行一一映射。5.透视投影:空间任意一点的透视投影是投影中心与空间点构成的投影线和投影平面的交点。平行投影:投影方向于投影面垂直,为正投影,否则为斜投影。OpenGL的矩阵变换操作方法一、借助OpenGL的矩阵堆栈,保存各个物体的矩阵变换火柴棍案例glMatrixMode(GL_PROJECTION);glMatrixMode(GL_MODELVIEW);将当前变换矩阵设置为模型视图变换矩阵。glPushMatrix,glPopMatrix—压入和弹出当前矩阵堆栈glGet(GL_MAX_MODELVIEW_STACK_DE
5、PTH);glGet(GL_MAX_PROJECTION_STACK_DEPTH);来获取模型视图矩阵堆栈和投影矩阵堆栈的最大堆栈深度。一般情况下(在Windows平台上),模型视图的最大堆栈深度是32,而投影堆栈的最大深度是2。二、自己保存各个物体的空间变换矩阵floatM[4][4];//其中M[j,i]表示矩阵M的第j行,第i列的数据。floatM[16];//也可以创建一个一维数组无论是2维数组还是一维数组,都是按照列优先的顺序保存的。如图所示1.读取矩阵堆栈glGetFloatv(GL_MODELVIEW_MATR
6、IX,M);glGetFloatv(GL_PROJECTION_MATRIX,M);2.设置矩阵堆栈,用于描画glLoadIdentity();//加载4*4单位矩阵;glLoadMatrix{fd}(*m);//加载指定4*4矩阵m;glMultiMatrix{fd}(*m);//当前矩阵右乘*m;<图形变换>1.几何变换:平移、缩放、旋转2.齐次坐标:用n+1维向量表示n维向量,比如,(wx,wy,wz,w)表示(x,y,z)。通常,令w=1,用来进行复合几何变换。3.坐标变换:根据图形在一个坐标系下的坐标求其在另一坐标
7、系下的坐标。4.3D空间通过投影,可以在2D屏幕上显示。同时,在投影面上定义一个窗口。只有窗口内的图形才显示。在屏幕上定义一个矩形视区,然后,从窗口到视区进行一一映射。5.透视投影:空间任意一点的透视投影是投影中心与空间点构成的投影线和投影平面的交点。平行投影:投影方向于投影面垂直,为正投影,否则为斜投影。OpenGL的矩阵变换操作方法一、借助OpenGL的矩阵堆栈,保存各个物体的矩阵变换火柴棍案例glMatrixMode(GL_PROJECTION);glMatrixMode(GL_MODELVIEW);将当前变换矩阵设置
8、为模型视图变换矩阵。glPushMatrix,glPopMatrix—压入和弹出当前矩阵堆栈glGet(GL_MAX_MODELVIEW_STACK_DEPTH);glGet(GL_MAX_PROJECTION_STACK_DEPTH);来获取模型视图矩阵堆栈和投影矩阵堆栈的最大堆栈深度。