UNPKG

@thi.ng/boids

Version:

n-dimensional boids simulation with modular behavior system

27 lines (26 loc) 785 B
import { wrapOnce } from "@thi.ng/math/interval"; import { clamp2 as $clamp2, clamp3 as $clamp3 } from "@thi.ng/vectors/clamp"; const clamp2 = (min, max) => (p) => $clamp2(p, p, min, max); const clamp3 = (min, max) => (p) => $clamp3(p, p, min, max); const __wrap = (p, i, x, min, max) => { if (x < min || x > max) { p[i] = wrapOnce(x, min, max); return true; } }; const wrap2 = (min, max) => (p, boid) => { if (__wrap(p, 0, p[0], min[0], max[0]) || __wrap(p, 1, p[1], min[1], max[1])) boid.pos.reset(p); return p; }; const wrap3 = (min, max) => (p, boid) => { if (__wrap(p, 0, p[0], min[0], max[0]) || __wrap(p, 1, p[1], min[1], max[1]) || __wrap(p, 2, p[2], min[2], max[2])) boid.pos.reset(p); return p; }; export { clamp2, clamp3, wrap2, wrap3 };