UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

103 lines 3.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Absolute2DPosition = void 0; const tslib_1 = require("tslib"); const AbsolutePosition_1 = require("./AbsolutePosition"); const decorators_1 = require("../decorators"); const utils_1 = require("../../utils"); const math_1 = require("../../utils/math"); /** * Absolute cartesian 2D position. This class uses a {@link Vector2}. This location can be used both as * an absolute location or relative location. * @category Position */ let Absolute2DPosition = class Absolute2DPosition extends AbsolutePosition_1.AbsolutePosition { constructor(x, y, unit = utils_1.LengthUnit.METER) { super(); this.vector = new math_1.Vector3(); this.vector.x = x ? x : 0; this.vector.y = y ? y : 0; this.unit = unit; } get x() { if (!this.vector) { return undefined; } return this.vector.x; } set x(value) { if (!this.vector) { return; } this.vector.x = value; } get y() { if (!this.vector) { return undefined; } return this.vector.y; } set y(value) { if (!this.vector) { return; } this.vector.y = value; } /** * Get the angle in radians from this position to a destination * @param {Absolute2DPosition} destination Destination position * @returns {number} Bearing in radians from this position to destination */ angleTo(destination) { return this.vector.angleTo(destination.vector); } fromVector(vector, unit) { if (unit) { this.x = unit.convert(vector.x, this.unit); this.y = unit.convert(vector.y, this.unit); } else { this.x = vector.x; this.y = vector.y; } return this; } toVector3(unit) { if (unit) { return new math_1.Vector3(this.unit.convert(this.x, unit), this.unit.convert(this.y, unit)); } else { return new math_1.Vector3(this.x, this.y); } } /** * Clone the position * @returns {Absolute2DPosition} Cloned position */ clone() { const position = super.clone(); position.x = this.x; position.y = this.y; return position; } }; exports.Absolute2DPosition = Absolute2DPosition; tslib_1.__decorate([ (0, decorators_1.SerializableMember)({ numberType: decorators_1.NumberType.DECIMAL, }), tslib_1.__metadata("design:type", Number), tslib_1.__metadata("design:paramtypes", [Number]) ], Absolute2DPosition.prototype, "x", null); tslib_1.__decorate([ (0, decorators_1.SerializableMember)({ numberType: decorators_1.NumberType.DECIMAL, }), tslib_1.__metadata("design:type", Number), tslib_1.__metadata("design:paramtypes", [Number]) ], Absolute2DPosition.prototype, "y", null); exports.Absolute2DPosition = Absolute2DPosition = tslib_1.__decorate([ (0, decorators_1.SerializableObject)(), tslib_1.__metadata("design:paramtypes", [Number, Number, utils_1.LengthUnit]) ], Absolute2DPosition); //# sourceMappingURL=Absolute2DPosition.js.map