@openhps/core
Version:
Open Hybrid Positioning System - Core component
59 lines • 2.13 kB
JavaScript
;
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