OpenGL -- 向量与矩阵
2021-09-12 本文已影响0人
木扬音
向量
单位向量
长度为1的向量,向量长度通过下列公式计算

//3维向量 -- XYZ
M3DVector3f
//4维向量 -- XYZW W==缩放因子
M3DVector4f
向量 点乘
- 点乘只能在两个向量之间进行
- 两个单位向量进行
点乘
会得到一个标量,表示两个向量之间的夹角[-1,1],其实就是cos值(余弦值)
//获取两个向量之间的点乘结果
m3dDotProduct3(const M3DVector3f u, const M3DVector3f v);
//获取两个向量之间的夹角弧度值
m3dGetAngleBetweenVectors3(const M3DVector3f u, const M3DVector3f v);
向量 叉乘
两个普通向量之间叉乘
可以得到另外一个向量
,新向量会与原来两个向量平面垂直
//叉乘
m3dCrossProduct3(M3DVector3f result, const M3DVector3f u, const M3DVector3f v);
矩阵
在OpenGL中以列优先

//单元矩阵初始化①
GLfloat m[] = {
1,0,0,0, //X
0,1,0,0, //Y
0,0,1,0, //Z
0,0,0,1, //W
};
//单元矩阵初始化②
M3DMatrix44f m = {
1,0,0,0, //X
0,1,0,0, //Y
0,0,1,0, //Z
0,0,0,1, //W
};
//单元矩阵初始化③
m3dLoadIdentity44(M3DMatrix44f m);
矩阵相乘
顶点向量 = (((投影矩阵 * 观察者矩阵) * 模型矩阵) * 顶点)