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