vizicities/src/geo/Point.js

61 wiersze
1.1 KiB
JavaScript
Executable File

/*
* Point is a helper class for ensuring consistent world positions.
*
* Based on:
* https://github.com/Leaflet/Leaflet/blob/master/src/geo/Point.js
*/
class Point {
constructor(x, y, round) {
this.x = (round ? Math.round(x) : x);
this.y = (round ? Math.round(y) : y);
}
clone() {
return new Point(this.x, this.y);
}
// Non-destructive
add(point) {
return this.clone()._add(_point(point));
}
// Destructive
_add(point) {
this.x += point.x;
this.y += point.y;
return this;
}
// Non-destructive
subtract(point) {
return this.clone()._subtract(_point(point));
}
// Destructive
_subtract(point) {
this.x -= point.x;
this.y -= point.y;
return this;
}
}
export default Point;
// Accepts (point), ([x, y]) and (x, y, round)
var _point = function(x, y, round) {
if (x instanceof Point) {
return x;
}
if (Array.isArray(x)) {
return new Point(x[0], x[1]);
}
if (x === undefined || x === null) {
return x;
}
return new Point(x, y, round);
};
// Initialise without requiring new keyword
export {_point as point};