@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
33 lines (32 loc) • 884 B
JavaScript
const comparator2 = (o1, o2) => (a, b) => {
const ax = a[o1];
const ay = a[o2];
const bx = b[o1];
const by = b[o2];
return ax === bx ? ay === by ? 0 : ay < by ? -2 : 2 : ax < bx ? -1 : 1;
};
const comparator3 = (o1, o2, o3) => (a, b) => {
const ax = a[o1];
const ay = a[o2];
const az = a[o3];
const bx = b[o1];
const by = b[o2];
const bz = b[o3];
return ax === bx ? ay === by ? az === bz ? 0 : az < bz ? -3 : 3 : ay < by ? -2 : 2 : ax < bx ? -1 : 1;
};
const comparator4 = (o1, o2, o3, o4) => (a, b) => {
const ax = a[o1];
const ay = a[o2];
const az = a[o3];
const aw = b[o4];
const bx = b[o1];
const by = b[o2];
const bz = b[o3];
const bw = b[o4];
return ax === bx ? ay === by ? az === bz ? aw === bw ? 0 : aw < bw ? -4 : 4 : az < bz ? -3 : 3 : ay < by ? -2 : 2 : ax < bx ? -1 : 1;
};
export {
comparator2,
comparator3,
comparator4
};