apr144-hdbscanjs
Version:
Hierarchical DBSCAN Clustering in JavaScript
31 lines (25 loc) • 816 B
JavaScript
export default class Bbox {
// a list of points [x, y]
constructor(arr) {
const xs = arr.map(val => val[0]);
const ys = arr.map(val => val[1]);
this.minX = Math.min.apply(null, xs);
this.maxX = Math.max.apply(null, xs);
this.minY = Math.min.apply(null, ys);
this.maxY = Math.max.apply(null, ys);
}
get width() {
return this.maxX - this.minX;
}
get height() {
return this.maxY - this.minY;
}
get center() {
return [(this.minX + this.maxX) * 0.5, (this.minY + this.maxY) * 0.5];
}
intersect({minX, maxX, minY, maxY}) {
const bbox = new Bbox([[minX, minY], [maxX, maxY]]);
return Math.abs(this.center[0] - bbox.center[0]) < (this.width + bbox.width) * 0.5 &&
Math.abs(this.center[1] - bbox.center[1]) < (this.height + bbox.height) * 0.5;
}
}