UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

59 lines 2.13 kB
"use strict"; var Orientation_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.Orientation = void 0; const tslib_1 = require("tslib"); const math_1 = require("../../utils/math"); const decorators_1 = require("../decorators"); const TimeService_1 = require("../../service/TimeService"); const Accuracy_1 = require("../values/Accuracy"); const utils_1 = require("../../utils"); const Accuracy1D_1 = require("../values/Accuracy1D"); /** * Orientation quaternion with accuracy * @category Position */ let Orientation = Orientation_1 = class Orientation extends math_1.Quaternion { constructor(x, y, z, w, accuracy) { super(x, y, z, w); this.accuracy = accuracy || new Accuracy1D_1.Accuracy1D(0, utils_1.AngleUnit.RADIAN); this.timestamp = TimeService_1.TimeService.now(); } static fromBearing(bearing, unit = utils_1.AngleUnit.DEGREE) { return Orientation_1.fromEuler({ x: 0, y: 0, z: bearing, order: 'ZYX', unit, }); } static fromQuaternion(quat) { return new Orientation_1(quat.x, quat.y, quat.z, quat.w); } clone() { const vector = super.clone(); vector.accuracy = this.accuracy ? this.accuracy.clone() : undefined; vector.timestamp = this.timestamp; return vector; } }; exports.Orientation = Orientation; tslib_1.__decorate([ (0, decorators_1.SerializableMember)({ isRequired: false, numberType: decorators_1.NumberType.LONG, }), tslib_1.__metadata("design:type", Number) ], Orientation.prototype, "timestamp", void 0); tslib_1.__decorate([ (0, decorators_1.SerializableMember)({ isRequired: false, }), tslib_1.__metadata("design:type", Accuracy_1.Accuracy) ], Orientation.prototype, "accuracy", void 0); exports.Orientation = Orientation = Orientation_1 = tslib_1.__decorate([ (0, decorators_1.SerializableObject)(), tslib_1.__metadata("design:paramtypes", [Number, Number, Number, Number, Accuracy_1.Accuracy]) ], Orientation); //# sourceMappingURL=Orientation.js.map