UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

46 lines 1.66 kB
var Orientation_1; import { __decorate, __metadata } from "tslib"; import { Quaternion } from '../../utils/math'; import { NumberType, SerializableMember, SerializableObject } from '../decorators'; import { TimeService } from '../../service/TimeService'; import { Accuracy } from '../values/Accuracy'; import { AngleUnit } from '../../utils'; import { Accuracy1D } from '../values/Accuracy1D'; /** * Orientation quaternion with accuracy * @category Position */ let Orientation = Orientation_1 = class Orientation extends Quaternion { constructor(x, y, z, w, accuracy) { super(x, y, z, w); this.accuracy = accuracy || new Accuracy1D(0, AngleUnit.RADIAN); this.timestamp = TimeService.now(); } static fromBearing(bearing, unit = 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; } }; __decorate([SerializableMember({ isRequired: false, numberType: NumberType.LONG }), __metadata("design:type", Number)], Orientation.prototype, "timestamp", void 0); __decorate([SerializableMember({ isRequired: false }), __metadata("design:type", Accuracy)], Orientation.prototype, "accuracy", void 0); Orientation = Orientation_1 = __decorate([SerializableObject(), __metadata("design:paramtypes", [Number, Number, Number, Number, Accuracy])], Orientation); export { Orientation };