UNPKG

@dominicstop/utils

Version:

Yet another event emitter written in typescript.

60 lines (59 loc) 1.58 kB
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 }; } ; } ;