UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

84 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SensorValue = void 0; const tslib_1 = require("tslib"); const TimeService_1 = require("../../service/TimeService"); const utils_1 = require("../../utils"); const math_1 = require("../../utils/math"); const decorators_1 = require("../decorators"); const Accuracy_1 = require("./Accuracy"); const Accuracy1D_1 = require("./Accuracy1D"); /** * 3D vector sensor value with accuracy and timestamp. */ let SensorValue = class SensorValue extends math_1.Vector3 { constructor(x, y, z, unit, defaultUnit, accuracy) { var _a; if (unit && defaultUnit) { super(unit.convert(x ? x : 0, defaultUnit), unit.convert(y ? y : 0, defaultUnit), unit.convert(z ? z : 0, defaultUnit)); this._defaultUnit = defaultUnit; } else { super(x, y, z); } this.unit = (_a = defaultUnit !== null && defaultUnit !== void 0 ? defaultUnit : unit) !== null && _a !== void 0 ? _a : utils_1.Unit.UNKNOWN; this.timestamp = TimeService_1.TimeService.now(); this.accuracy = accuracy || new Accuracy1D_1.Accuracy1D(1, this._defaultUnit || utils_1.Unit.UNKNOWN); } /** * Set the accuracy of the absolute position * @param {number | Accuracy} accuracy Accuracy object or number * @returns {SensorValue} instance */ setAccuracy(accuracy) { if (typeof accuracy === 'number') { this.accuracy = new Accuracy1D_1.Accuracy1D(accuracy, this._defaultUnit); } else { this.accuracy = accuracy; } return this; } /** * Convert sensor value to tuple * @param {Unit} [unit] Conversion unit * @returns {Vector3Tuple} Tuple of three numbers */ toTuple(unit) { if (unit) { return [this.unit.convert(this.x, unit), this.unit.convert(this.y, unit), this.unit.convert(this.z, unit)]; } else { return this.toArray(); } } clone() { const vector = super.clone(); vector.accuracy = this.accuracy; vector.timestamp = this.timestamp; return vector; } }; exports.SensorValue = SensorValue; tslib_1.__decorate([ (0, decorators_1.SerializableMember)({ isRequired: false, numberType: decorators_1.NumberType.LONG, }), tslib_1.__metadata("design:type", Number) ], SensorValue.prototype, "timestamp", void 0); tslib_1.__decorate([ (0, decorators_1.SerializableMember)({ isRequired: false, }), tslib_1.__metadata("design:type", Accuracy_1.Accuracy) ], SensorValue.prototype, "accuracy", void 0); tslib_1.__decorate([ (0, decorators_1.SerializableMember)(() => utils_1.Unit), tslib_1.__metadata("design:type", Object) ], SensorValue.prototype, "unit", void 0); exports.SensorValue = SensorValue = tslib_1.__decorate([ (0, decorators_1.SerializableObject)(), tslib_1.__metadata("design:paramtypes", [Number, Number, Number, utils_1.Unit, Object, Accuracy_1.Accuracy]) ], SensorValue); //# sourceMappingURL=SensorValue.js.map