UNPKG

@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
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 };