问题
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();