原文链接: gl-matrix 简单瞅瞅
上一篇: glfx 彩色网格
下一篇: fp-ts 简单瞅瞅
首先这个库的设计比较奇怪, 主要是由于考虑的是高性能场景, 也就是尽量复用和减少计算量
一个简单的创建操作, 都会尽量减少开销
定义了一些常用工具函数和常量
相等的判断是根据误差来的, 也就是误差不超过一定的值就视为相等
hypot函数是计算所有参数的平方和后开根号, 可以看做是n维向量的长度
console.log(equals(1000, 1001)); // false
console.log(equals(1e9, 1e9+1)); // true
const degree = Math.PI / 180;
export function toRadian(a) {
return a * degree;
}
export function equals(a, b) {
return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));
}
if (!Math.hypot)
Math.hypot = function () {
var y = 0,
i = arguments.length;
while (i--) y += arguments[i] * arguments[i];
return Math.sqrt(y);
};
mat2代码比较少, 主要是操作少, 而且相对而言没有高阶那么多应用场景, 主要还是mat4和四元数用的多一点, mat3或者mat2d也是在一些情况下为了减少内存使用和计算量才用的, 但是他们都有场景限制, 毕竟只是mat4的一部分, 去掉了常数值而已
mat3和mat2d中, 计算范数时是需要加上那个没记录的1, 没记录是因为默认这个值不变, 而不是不存在
export function frob(a) {
return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);
}