1.视觉关键名词

问题

1.什么叫做模型矩阵
2.什么叫做投影矩阵
3.什么叫做照相机
4.什么叫做视景体
5.什么叫做管道
6.我们所观察到的最后的图形矩阵是什么

答案

1.什么叫做模型矩阵

在视觉计算机世界中:矩阵是用来存储数据
模型矩阵:一个物体经过 平移,旋转,缩放等变换 ,这个模型矩阵的值会发生变化
在OpenGL中的类是:
GLMatrixStack       modelViewMatrix;

2.什么叫做投影矩阵

在视觉计算机世界中:矩阵是用来存储数据
投影矩阵:投影矩阵分为 正投影 和 透视投影
正投影:指平行投射线垂直于投影面
透视投影:它是从某个投射中心将物体投射到单一投影面上所得到的图形。透视图与人们观看物体时所产生的视觉效果非常接近,所以它能更加生动形象地表现建筑外貌及内部装饰
在OpenGL中的类是:
GLMatrixStack       projectionMatrix;

3.什么叫做照相机

照相机:就是我们在观看一个物体的时候我们所在的位置
在OpenGL中的类是:
//观察者位置
GLFrame             cameraFrame;

4.什么叫做视景体

视景体:这个是用来设置我们观察物体的角度,距离等,通过视景体,我们可以获取正投影数据或者是透视投影数据

在OpenGL中的类是:
//视景体,用来构造投影矩阵
GLFrustum           viewFrustum;

5.什么叫做管道

管道:是用来管理矩阵堆栈
在OpenGL 中的类是
GLGeometryTransform transformPipeline;

例如:
    //使用transformPipeline 管道管理模型视图矩阵堆栈 和 投影矩阵堆栈
    transformPipeline.SetMatrixStacks(modelViewMatrix, projectionMatrix);

6.我们所观察到的最后的图形矩阵是什么

世界坐标系 的变换矩阵  * 照相机的变换矩阵  * 视景体的矩阵(也就是正投影矩阵 或者是 透视投影矩阵)

例如:

 //获取摄像头矩阵
    M3DMatrix44f mCamera;
    //从camereaFrame中获取矩阵到mCamera
    cameraFrame.GetCameraMatrix(mCamera);
    //模型视图堆栈的 矩阵与mCamera矩阵 相乘之后,存储到modelViewMatrix矩阵堆栈中
    modelViewMatrix.MultMatrix(mCamera);

// 获取世界坐标系的矩阵
  //创建矩阵mObjectFrame
    M3DMatrix44f mObjectFrame;
    //从ObjectFrame 获取矩阵到mOjectFrame中
    objectFrame.GetMatrix(mObjectFrame);
    //将modelViewMatrix 的堆栈中的矩阵 与 mOjbectFrame 矩阵相乘,存储到modelViewMatrix矩阵堆栈中
    modelViewMatrix.MultMatrix(mObjectFrame);

// 获取投影矩阵:
    //视景体,用来构造投影矩阵
    GLFrustum           viewFrustum;
    //透视投影
    viewFrustum.SetPerspective(35.0f, float(w) / float(h), 1.0f, 500.0f);
    
    //projectionMatrix 矩阵堆栈 加载透视投影矩阵
    projectionMatrix.LoadMatrix(viewFrustum.GetProjectionMatrix());
    
    //modelViewMatrix 矩阵堆栈 加载单元矩阵
    modelViewMatrix.LoadIdentity();

你可能感兴趣的:(1.视觉关键名词)