UNPKG

@foblex/2d

Version:

An Angular library for 2D geometric computations, providing classes and utilities for manipulating points, lines, vectors, rectangles, arcs, and transformations.

39 lines 5.15 kB
import { PointExtensions } from './point.extensions'; export class Point { constructor(x = 0, y = 0) { this.x = x; this.y = y; } static fromPoint(point) { return new Point(point.x, point.y); } add(point) { const result = PointExtensions.sum(this, point); return Point.fromPoint(result); } sub(point) { const result = PointExtensions.sub(this, point); return Point.fromPoint(result); } subNumber(value) { const result = PointExtensions.sub(this, new Point(value, value)); return Point.fromPoint(result); } div(value) { const result = PointExtensions.div(this, value); return Point.fromPoint(result); } mult(value) { const result = PointExtensions.mult(this, value); return Point.fromPoint(result); } matrixTransform(element) { const result = PointExtensions.matrixTransform(this, element); return Point.fromPoint(result); } elementTransform(element) { const result = PointExtensions.elementTransform(this, element); return Point.fromPoint(result); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mb2JsZXgyZC9zcmMvcG9pbnQvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sT0FBTyxLQUFLO0lBTWhCLFlBQVksSUFBWSxDQUFDLEVBQUUsSUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBRXRCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sR0FBRyxDQUFDLEtBQWE7UUFFdEIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFaEQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYTtRQUU1QixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVsRSxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxLQUFhO1FBRXRCLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sSUFBSSxDQUFDLEtBQWE7UUFFdkIsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxlQUFlLENBQUMsT0FBc0I7UUFFM0MsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFOUQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxPQUFpQztRQUV2RCxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9ELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnQgfSAgICAgICAgICBmcm9tICcuL2ktcG9pbnQnO1xuaW1wb3J0IHsgUG9pbnRFeHRlbnNpb25zIH0gZnJvbSAnLi9wb2ludC5leHRlbnNpb25zJztcblxuZXhwb3J0IGNsYXNzIFBvaW50IGltcGxlbWVudHMgSVBvaW50IHtcblxuICBwdWJsaWMgeDogbnVtYmVyO1xuXG4gIHB1YmxpYyB5OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoeDogbnVtYmVyID0gMCwgeTogbnVtYmVyID0gMCkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBvaW50KHBvaW50OiBJUG9pbnQpOiBQb2ludCB7XG4gICAgcmV0dXJuIG5ldyBQb2ludChwb2ludC54LCBwb2ludC55KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQocG9pbnQ6IElQb2ludCk6IFBvaW50IHtcblxuICAgIGNvbnN0IHJlc3VsdCA9IFBvaW50RXh0ZW5zaW9ucy5zdW0odGhpcywgcG9pbnQpO1xuXG4gICAgcmV0dXJuIFBvaW50LmZyb21Qb2ludChyZXN1bHQpO1xuICB9XG5cbiAgcHVibGljIHN1Yihwb2ludDogSVBvaW50KTogUG9pbnQge1xuXG4gICAgY29uc3QgcmVzdWx0ID0gUG9pbnRFeHRlbnNpb25zLnN1Yih0aGlzLCBwb2ludCk7XG5cbiAgICByZXR1cm4gUG9pbnQuZnJvbVBvaW50KHJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgc3ViTnVtYmVyKHZhbHVlOiBudW1iZXIpOiBQb2ludCB7XG5cbiAgICBjb25zdCByZXN1bHQgPSBQb2ludEV4dGVuc2lvbnMuc3ViKHRoaXMsIG5ldyBQb2ludCh2YWx1ZSwgdmFsdWUpKTtcblxuICAgIHJldHVybiBQb2ludC5mcm9tUG9pbnQocmVzdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXYodmFsdWU6IG51bWJlcik6IFBvaW50IHtcblxuICAgIGNvbnN0IHJlc3VsdCA9IFBvaW50RXh0ZW5zaW9ucy5kaXYodGhpcywgdmFsdWUpO1xuXG4gICAgcmV0dXJuIFBvaW50LmZyb21Qb2ludChyZXN1bHQpO1xuICB9XG5cbiAgcHVibGljIG11bHQodmFsdWU6IG51bWJlcik6IFBvaW50IHtcblxuICAgIGNvbnN0IHJlc3VsdCA9IFBvaW50RXh0ZW5zaW9ucy5tdWx0KHRoaXMsIHZhbHVlKTtcblxuICAgIHJldHVybiBQb2ludC5mcm9tUG9pbnQocmVzdWx0KTtcbiAgfVxuXG4gIHB1YmxpYyBtYXRyaXhUcmFuc2Zvcm0oZWxlbWVudDogU1ZHU1ZHRWxlbWVudCk6IFBvaW50IHtcblxuICAgIGNvbnN0IHJlc3VsdCA9IFBvaW50RXh0ZW5zaW9ucy5tYXRyaXhUcmFuc2Zvcm0odGhpcywgZWxlbWVudCk7XG5cbiAgICByZXR1cm4gUG9pbnQuZnJvbVBvaW50KHJlc3VsdCk7XG4gIH1cblxuICBwdWJsaWMgZWxlbWVudFRyYW5zZm9ybShlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQpOiBQb2ludCB7XG5cbiAgICBjb25zdCByZXN1bHQgPSBQb2ludEV4dGVuc2lvbnMuZWxlbWVudFRyYW5zZm9ybSh0aGlzLCBlbGVtZW50KTtcblxuICAgIHJldHVybiBQb2ludC5mcm9tUG9pbnQocmVzdWx0KTtcbiAgfVxufVxuIl19