音视频从入门到放弃

OpenGL--- (六)OpenGL中的向量、矩阵

2020-08-19  本文已影响0人  阿木小丸子

向量

向量长度(向量的模)计算公式: 计算公式.png

在X轴上的向量(1,0,0),向量的长度为1,我们称长度为1的向量为单位向量。
如果一个向量不是单位向量,而我们把它缩放到1,这个过程叫标准化。那么将一个向量进行标准化,也就是将它缩放成1,也叫做单位化向量。

OpenGL中的向量:
向量点乘(dot product)

如何进行单位化?
(x / |xyz|, y / |xyz|, z / |xyz|);
使⽤一个非零向量除以它的模(向量的⻓度), 就可以得到方向相同的单位向量

标量:只有大小,例如:1,12,13等

点乘.png

OpenGL中针对相应点乘,提供了两个函数:

向量叉乘(cross product)

OpenGL中针对向量叉乘也提供了对应的API:

矩阵

单位矩阵
矩阵分类
矩阵的点乘
矩阵的叉乘
OpenGL中的矩阵
void m3dLoadIdentity44f(M3DMatrix44f m);

第一列表示x轴方向
第二列表示y轴方向
第三列表示z轴方向
第四列表示交换位置
列向量进行了特殊的标注,表示这是以列为主的矩阵,主要体现为矩阵的最后一行都是0,只有最后一个元素为1


理解OpenGL中的矩阵相乘

数学角度

顶点向量 = V_local * M_model * M_view * M_pro
顶点向量 = 顶点 * 模型矩阵 * 观察矩阵 * 投影矩阵


OpenGL矩阵堆栈中矩阵相乘源码分析

从OpenGL矩阵堆栈中矩阵相乘源码分析,主要有以下3步:
1、从栈顶获取栈顶矩阵,复制到mTemp
2、将栈顶矩阵 mTemp 左乘 mMatrix
3、将结果放回栈顶,覆盖栈顶矩阵


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


上一篇下一篇

猜你喜欢

热点阅读