@thi.ng/boids
Version:
n-dimensional boids simulation with modular behavior system
41 lines (40 loc) • 834 B
JavaScript
import {} from "@thi.ng/api";
class Radial {
constructor(dist, target, radius = Infinity) {
this.dist = dist;
this.target = target;
this.setRadius(radius);
}
radius;
_r;
_items = [];
deref() {
return this._items;
}
reset() {
this._items.length = 0;
return this;
}
setRadius(r) {
if (this.radius !== r) {
this.radius = Math.max(0, r);
this._r = this.dist.to(this.radius);
}
this._items.length = 0;
return this;
}
includesDistance(d, eucledian = true) {
return (eucledian ? this.dist.to(d) : d) <= this._r;
}
includesPosition(pos) {
return this.dist.metric(this.target, pos) <= this._r;
}
consider(pos, val) {
const d = this.dist.metric(this.target, pos);
d <= this._r && this._items.push(val);
return d;
}
}
export {
Radial
};