八、了解OpenGL中的向量、矩阵

2020-07-16  本文已影响0人  Style_月月

向量

了解向量之前,先了解什么是标量

单位向量
单位向量是长度为1的向量,向量长度通过下列公式计算

向量的模的计算

如果一个向量不是单位向量,可以通过单位化将其转化为单位向量,即 非零向量除以向量的模,如下图所示


向量单位化

向量点乘

向量叉乘

OpenGL中向量

math3d库中的数据类型 说明
M3DVector3f 表示⼀一个三维向量量(x,y,z)
M3DVector4f 表示⼀一个四维向量量(x,y,z,w) w是缩放因子,在典型情况下,w一般设置为1.0,x、y、z值通过除以w,来进行缩放,当w=1.0时,想xyz的值本质上不会发生变化

矩阵

单位矩阵

矩阵分类

矩阵分类

矩阵的点乘

矩阵的叉乘

OpenGL中的矩阵

- 通过方法`m3dLoadIdentity44f`创建单元矩阵
void m3dLoadIdentity44f(M3DMatrix44f m);
OpenGL中的4X4矩阵

理解OpenGL中的矩阵相乘

数学角度

OpenGL角度

OpenGL矩阵堆栈中矩阵相乘源码分析
从OpenGL矩阵堆栈中矩阵相乘源码分析,主要有以下3步
-从栈顶获取栈顶矩阵,复制到mTemp

而我们在观察者不动、物体动的观察方式中,根据之前Demo代码可知


代码中矩阵堆栈变化

上述代码,矩阵堆栈的变化过程如下


堆栈变化过程

由此可知,在实际的代码中,mvp矩阵的计算顺序是pvm,最后再将mvp矩阵与顶点矩阵相乘,得到物体变换后的顶点和位置。

上一篇下一篇

猜你喜欢

热点阅读