(1)   通用的矩阵操作命令
 
      void  glMatrixMode(Glenum mode);
      --参数取值:GL_MODELVIEGL_PROJECTIONGL_TEXTURE;
      --默认的选定矩阵为GL_MODELVIEW变换矩阵;
      void glLoadIdentity(void);
      OpenGL中的变换命令都是对当前矩阵进行操作,因此在选定可修改矩阵后,
      应首先用上述命令设置当前操作矩阵为单位矩阵。
 

(2)   模型观察变换

      1.模型观察变换过程就是一个将顶点坐标从世界坐标变换到视觉坐标的过程;

      2.世界坐标系是一个右手坐标系,是固定不变的,在初始态下,其x轴为沿屏
幕水平向右,y轴为沿屏幕垂直方向上,z 轴则为垂直屏幕面向外指向用户;

      3.观察坐标系是一个左手坐标系,是可以活动的。在初始态下,其原点及x、y
轴分别与世界坐标系的原点及x、y轴重合,而z轴则正好相反,即为垂直屏幕面向内;

      4.在初始状态下,相机在观察坐标系的原点且指向观察坐标系的z轴正向,即为
垂直屏幕面向内;

      5.初始状态下,绘制坐标系和世界坐标系重合,
调用
void glTanslate{fd}(TYPE x, TYPE y, TYPE z);平移到(x,y,z)世界坐标点,
该点就是当前绘制坐标的原点,绘制的图形都是参照绘制坐标系进行。

(3)   变换顺序

          ...

glLoadIdentity();
glMultMatrixf(N);
glMultMatrixf(M);
glMultMatrixf(L);

          ...

实际矩阵之间的运算顺序是(N(M(Lv))),顶点v取列向量,最后提供的矩阵最先参与运算

(4)   投影变换

      这个投影变换和平移变换一样,如果没有处理好位置关系,所绘制的物体不在视角范围内,
那么我们将看不到绘制的物体。

      首先调用glMatrixMode(GL_PROJECTION);函数,使得当前处于投影状态,投影又分为以下两类:

      I.透视投影

      void  gluPerspective (Gldouble fovy, Gldouble aspect, Gldouble zNear, Gldouble zFar) ;

      参数代表的意义如图所示:

      

      II.正交投影

        void  glOrtho (Gldouble left, Gldouble right, Gldouble bottom, Gldouble top, Gldouble near, Gldouble far) ;

      参数代表的意义如图所示:

 

 

(5)   结束语

      只有当自己写笔记的时候才发现,挺耗时间的,可能是第一次写的缘故吧,在排版和语言组织方面存在一些问题,以后慢慢改进吧,相信操作多了就熟练了,下次再写了。。。

 

posted on 2009-07-03 02:24  svmsunger  阅读(2251)  评论(1)    收藏  举报