@dominicstop/utils
Version:
Yet another event emitter written in typescript.
60 lines (59 loc) • 1.58 kB
JavaScript
import { Point } from "./Point";
export 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({ 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.lerp(this.startPoint, this.endPoint, percentToTraverse);
}
;
traverseByDistance(distanceToTraverse) {
const totalDistance = this.distance;
const percentTraversed = distanceToTraverse / totalDistance;
const stopPoint = this.traverseByPercent(percentTraversed);
return {
percentTraversed,
stopPoint
};
}
;
}
;