@dominicstop/utils
Version:
Yet another event emitter written in typescript.
64 lines (63 loc) • 1.72 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Line = void 0;
const Point_1 = require("./Point");
class Line {
constructor(args) {
this.startPoint = args.startPoint;
this.endPoint = args.endPoint;
}
;
get asValue() {
return {
startPoint: this.startPoint,
endPoint: this.endPoint,
};
}
;
get distance() {
const deltaX = this.endPoint.x - this.startPoint.x;
const deltaY = this.endPoint.y - this.startPoint.y;
return Math.sqrt(deltaX * deltaX + deltaY * deltaY);
}
;
get midPoint() {
const midX = (this.endPoint.x + this.startPoint.x) / 2;
const midY = (this.endPoint.y + this.startPoint.y) / 2;
return new Point_1.Point({ x: midX, y: midY });
}
;
get slope() {
const deltaX = this.startPoint.x - this.endPoint.x;
const deltaY = this.startPoint.y - this.endPoint.y;
return deltaY / deltaX;
}
;
get reversed() {
return new Line({
startPoint: this.endPoint,
endPoint: this.startPoint,
});
}
;
clone() {
return new Line(this.asValue);
}
;
traverseByPercent(percentToTraverse) {
return Point_1.Point.lerp(this.startPoint, this.endPoint, percentToTraverse);
}
;
traverseByDistance(distanceToTraverse) {
const totalDistance = this.distance;
const percentTraversed = distanceToTraverse / totalDistance;
const stopPoint = this.traverseByPercent(percentTraversed);
return {
percentTraversed,
stopPoint
};
}
;
}
exports.Line = Line;
;