1. GLM数学库常用函数
1.1 关于向量
(1)glm库中向量的定义都是使用一维数组
(2)glm::normalize(vector)-----标准化向量
【注】 normalize 即向量的单位化。
【注】 向量的单位化:
// 可以这样使用:
glm::vec3 a = { 3.0, 2.0, 3.0 };
glm::vec3 b = { 1.0, 0.0, 3.0 };
glm::vec3 c = glm::normalize(a*b);
// 或者:
glm::normalize(a); // 直接单位化,这里直接修改了参数a
// 但不能这么使用:
glm::vec3 b=glm::normalize(c);
总结:可以normalize 一个运算式赋值,直接normalize(a)但不赋值,不能normlize单个向量,然后赋值给其他向量。
(3)glm::cross(vector1,vector2)-----向量的×乘
【注】 向量的叉乘返回一个(右手定则)垂直于两个向量的向量,且这里提醒一下叉乘的计算方式:
i , j , k ,
x , y, z
a, b, c
i–+(yc-bz)
j-- ‘-’(xc-za)…
(4)glm::dot(vector1,vector2)-----向量的点乘
【注】 向量的点乘返回一个小数值,而非向量
Waiting for adding…
1.2 关于矩阵
(1)glm库中矩阵的定义都是使用二维数组
(2)glm库中矩阵的乘法都是相反的。例如AB,在glm中计算的结果与大学所学线代中矩阵的乘法运算结果不同,运算的是课本中BA的结果。
(3)glm::determinant(A)-----求方阵A的行列式,返回一个数值
(4)B=glm::inverse(A)-----求方阵A的逆矩阵,这里返回一个矩阵,需要接收,而不改变参数A。这一点与glm::normalize(a)不同。
(5)B=glm::transpose(A)-----求矩阵的转置,使用通inverse相同
Waiting for adding…
1.3 矩阵与向量之间的运算
(1)矩阵与向量的乘法 (同矩阵与矩阵的乘法一样),都与线性代数中的计算顺序是相反的。
Waiting for adding…
2 矩阵与坐标系的关系
2.1