@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
67 lines (66 loc) • 1.98 kB
JavaScript
const ARGS_V = "o,a";
const ARGS_VV = "o,a,b";
const ARGS_VVV = "o,a,b,c";
const ARGS_VN = "o,a,n";
const ARGS_VNV = "o,a,n,b";
const ARGS_VVN = "o,a,b,n";
const SARGS_V = "io=0,ia=0,so=1,sa=1";
const SARGS_VV = "io=0,ia=0,ib=0,so=1,sa=1,sb=1";
const SARGS_VVV = "io=0,ia=0,ib=0,ic=0,so=1,sa=1,sb=1,sc=1";
const DEFAULT_OUT = "!o&&(o=a);";
const NEW_OUT = "!o&&(o=[]);";
const NEW_OUT_A = "!a&&(a=[]);";
const MATH = (op) => ([o, a, b]) => `${o}=${a}${op}${b};`;
const MATH_N = (op) => ([o, a]) => `${o}=${a}${op}n;`;
const MATH2 = (op1, op2) => ([o, a, b, c]) => `${o}=(${a}${op1}${b})${op2}${c};`;
const MATH2_N = (op1, op2) => ([o, a, b]) => `${o}=(${a}${op1}${b})${op2}n;`;
const MATH2A_N = (op1, op2) => ([o, a, b]) => `${o}=(${a}${op1}n)${op2}${b};`;
const SIGNED = (op) => ([o, a, b]) => `${o}=(${a}${op}${b})|0;`;
const UNSIGNED = (op) => ([o, a, b]) => `${o}=(${a}${op}${b})>>>0;`;
const SIGNED_N = (op) => ([o, a]) => `${o}=(${a}${op}n)|0;`;
const UNSIGNED_N = (op) => ([o, a]) => `${o}=(${a}${op}n)>>>0;`;
const FN = (op = "op") => ([o, a]) => `${o}=${op}(${a});`;
const FN2 = (op = "op") => ([o, a, b]) => `${o}=${op}(${a},${b});`;
const FN3 = (op = "op") => ([o, a, b, c]) => `${o}=${op}(${a},${b},${c});`;
const FN5 = (op = "op") => ([o, a, b, c, d, e]) => `${o}=${op}(${a},${b},${c},${d},${e});`;
const FN_N = (op = "op") => ([o, a]) => `${o}=${op}(${a},n);`;
const DOT = ([a, b]) => `${a}*${b}`;
const DOT_G = ([a, b]) => `s+=${a}*${b};`;
const SET = ([o, a]) => `${o}=${a};`;
const SET_N = ([a]) => `${a}=n;`;
const MIX = ([o, a, b, c]) => `${o}=${a}+(${b}-${a})*${c};`;
const MIX_N = ([o, a, b]) => `${o}=${a}+(${b}-${a})*n;`;
export {
ARGS_V,
ARGS_VN,
ARGS_VNV,
ARGS_VV,
ARGS_VVN,
ARGS_VVV,
DEFAULT_OUT,
DOT,
DOT_G,
FN,
FN2,
FN3,
FN5,
FN_N,
MATH,
MATH2,
MATH2A_N,
MATH2_N,
MATH_N,
MIX,
MIX_N,
NEW_OUT,
NEW_OUT_A,
SARGS_V,
SARGS_VV,
SARGS_VVV,
SET,
SET_N,
SIGNED,
SIGNED_N,
UNSIGNED,
UNSIGNED_N
};