模型视图矩阵
2014-09-02 16:20
204 查看
模型视图矩阵式一个4X4矩阵,他表示变换后的坐标系,我们可以用来防置对象和确定对象额方向。我们为图元的顶点将作为一个单位矩阵(也就是一个向量)的形式来使用,并乘以一个模型视图矩阵来获得一个相对于视觉坐标系的经过变换的新坐标。
---------- 矩阵构造
OpenGL 表示矩阵采取列有限排序,所以用4X4矩阵表示为一个有16个浮点值组成的单个数组。
前3列的前3个元素只是方向向量,它们表示空间中X轴、y轴和Z轴上的方向(在这里用向量表示一个方向)。对于大多数应用来说,这3个向量相互之间总是称90度,并且通常为单位长度(除非我还应用了缩放或裁剪)。这种情况下地数学术语叫做标准正交(向量为单位长度)或正交(向量不是单位长度)。
-----------单位矩阵
将一个向量乘以一个单位矩阵,就相当于用这个向量乘以1,不会发生任何改变。
OpenGL 生产单位矩阵
GLfloat m[] = {
.........
}
math3d 的M3DMatrix44f
M3DMatrix44f m = {
........
}
P101 有解释
void m3dLoadIdentity44(M3DMatrix44ff m);
-------------平移
平移矩阵仅仅是将我们的顶点沿着3个坐标轴中的一个或多个进行平移。
math3d 库的这个函数来平移变换
void m3dTranslationMatrix44(M3DMatrix44f m,float x,float y,float z);
-------------旋转
为了将一个对象沿着3个坐标轴中的一个或者任意向量进行旋转,需要找到一个旋转矩阵。math3d 库中又一个方法帮助我们
m3dRotationMatrix44(M3DMatrix44f m,float angle,float x,float y,float z);
在这里,我们围绕一个有x、y和z变量指定的向量进行旋转。旋转地角度沿逆时针方向安装弧度极端,有变量angle指定。在最简单的情况下,旋转只是围绕坐标系的一个坐标轴(x、y和z)进行旋转。
我们还可以围绕任意一个有x、y和z变量指定的向量来进行旋转。要表示这个旋转轴,我们值要绘制一条丛原点到由(x、y和z)表示的点的线段就可以了。
M3DMatrix44f m;
m3dRotationMatrix(m3dDegToRad(45.),1.0f,1.0f,1.0f); 创建一个旋转矩阵,可以使顶点沿着有(1,1,1)指定的旋转轴旋转45度。
m3dDegToRad这个宏将角度值转换为弧度值,因为和计算机不同,大多数程序员比较习惯以角度进行思考。使用这个宏代替内联函数的一个好处是,如果这个值是硬编码的文字,转换将发生在编译时,这样角度和弧度之间的转换就不会产生运行时损失。
----------缩放
math3d 库
M3DMatrix44f m;
void m3dScaleMatrix44(M3DMatrix44f m ,float xScale,float yScale,float zScale);
-----------综合变换
“连接”concatenate 来表示两种变换以这种方式结合。不过在矩阵乘法中又一个小陷进需要注意,就是运算的顺序是由影响的。
math3d 库函数m3dMatrixMultiply44 用来将两个矩阵相乘并返回运算结果。
void m3dMatrixMultiply44(M3DMatrix44f product, const M3DMatrix44f a ,const M3DMatrix44f b);
----------- 运用模型视图矩阵
P104 使用平面着色器,接受4X4变换矩阵作为它的参数之一。
m3dTranslationMatrix44 创建平移矩阵
m3dRotationMatrix44 创建旋转矩阵
m3dMatrixMultiiply44 矩阵相乘
shaderManager.useStockShader(GLT_SHADER_FLAT,mFinalTranform,vRed); 使用存储着色器
---------- 矩阵构造
OpenGL 表示矩阵采取列有限排序,所以用4X4矩阵表示为一个有16个浮点值组成的单个数组。
前3列的前3个元素只是方向向量,它们表示空间中X轴、y轴和Z轴上的方向(在这里用向量表示一个方向)。对于大多数应用来说,这3个向量相互之间总是称90度,并且通常为单位长度(除非我还应用了缩放或裁剪)。这种情况下地数学术语叫做标准正交(向量为单位长度)或正交(向量不是单位长度)。
-----------单位矩阵
将一个向量乘以一个单位矩阵,就相当于用这个向量乘以1,不会发生任何改变。
OpenGL 生产单位矩阵
GLfloat m[] = {
.........
}
math3d 的M3DMatrix44f
M3DMatrix44f m = {
........
}
P101 有解释
void m3dLoadIdentity44(M3DMatrix44ff m);
-------------平移
平移矩阵仅仅是将我们的顶点沿着3个坐标轴中的一个或多个进行平移。
math3d 库的这个函数来平移变换
void m3dTranslationMatrix44(M3DMatrix44f m,float x,float y,float z);
-------------旋转
为了将一个对象沿着3个坐标轴中的一个或者任意向量进行旋转,需要找到一个旋转矩阵。math3d 库中又一个方法帮助我们
m3dRotationMatrix44(M3DMatrix44f m,float angle,float x,float y,float z);
在这里,我们围绕一个有x、y和z变量指定的向量进行旋转。旋转地角度沿逆时针方向安装弧度极端,有变量angle指定。在最简单的情况下,旋转只是围绕坐标系的一个坐标轴(x、y和z)进行旋转。
我们还可以围绕任意一个有x、y和z变量指定的向量来进行旋转。要表示这个旋转轴,我们值要绘制一条丛原点到由(x、y和z)表示的点的线段就可以了。
M3DMatrix44f m;
m3dRotationMatrix(m3dDegToRad(45.),1.0f,1.0f,1.0f); 创建一个旋转矩阵,可以使顶点沿着有(1,1,1)指定的旋转轴旋转45度。
m3dDegToRad这个宏将角度值转换为弧度值,因为和计算机不同,大多数程序员比较习惯以角度进行思考。使用这个宏代替内联函数的一个好处是,如果这个值是硬编码的文字,转换将发生在编译时,这样角度和弧度之间的转换就不会产生运行时损失。
----------缩放
math3d 库
M3DMatrix44f m;
void m3dScaleMatrix44(M3DMatrix44f m ,float xScale,float yScale,float zScale);
-----------综合变换
“连接”concatenate 来表示两种变换以这种方式结合。不过在矩阵乘法中又一个小陷进需要注意,就是运算的顺序是由影响的。
math3d 库函数m3dMatrixMultiply44 用来将两个矩阵相乘并返回运算结果。
void m3dMatrixMultiply44(M3DMatrix44f product, const M3DMatrix44f a ,const M3DMatrix44f b);
----------- 运用模型视图矩阵
P104 使用平面着色器,接受4X4变换矩阵作为它的参数之一。
m3dTranslationMatrix44 创建平移矩阵
m3dRotationMatrix44 创建旋转矩阵
m3dMatrixMultiiply44 矩阵相乘
shaderManager.useStockShader(GLT_SHADER_FLAT,mFinalTranform,vRed); 使用存储着色器
相关文章推荐
- 模型视图矩阵与投影矩阵
- WEBGL学习【四】模型视图矩阵
- 小白学opengl之 获取模型视图矩阵和投影矩阵
- 关于模型视图矩阵的相机
- 法线向量为什么要乘以模型视图矩阵的逆转置矩阵
- OpenGL 入门教程(五) -- 模型视图投影矩阵
- OpenGL图形管线和坐标变换[转](模型视图矩阵推导)
- 理解OpenGL中的模型视图矩阵变换
- OpenGL: 模型视图矩阵变换
- 投影矩阵 视图模型矩阵
- OpenGL(五) 三维变换之模型视图矩阵
- 模型视图变换时,法线向量要乘模型视图矩阵的逆转置矩阵
- shader中法线向量为什么要乘以模型视图矩阵的逆转置矩阵
- WEBGL学习【八】模型视图投影矩阵
- 模型视图矩阵和投影矩阵
- opengl入门系列2- 模型视图矩阵变换
- shader中法线向量为什么要乘以模型视图矩阵的逆转置矩阵
- OpenGL ES 模型视图矩阵操作
- 模型矩阵、视图矩阵、投影矩阵
- OpenGL矩阵推导——模型视图变化