@thi.ng/boids
Version:
n-dimensional boids simulation with modular behavior system
26 lines (25 loc) • 767 B
JavaScript
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] = x < min ? x - min + max : x > max ? x - max + min : x;
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
};