@neilberkman/sidereon 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/pkg/sidereon.d.ts +1415 -932
- package/pkg/sidereon.js +892 -0
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +1013 -955
- package/pkg-node/sidereon.d.ts +425 -0
- package/pkg-node/sidereon.js +921 -0
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +1013 -955
- package/types/sidereon-extra.d.ts +129 -0
package/pkg-node/sidereon.js
CHANGED
|
@@ -884,6 +884,43 @@ class BroadcastEphemeris {
|
|
|
884
884
|
const ret = wasm.broadcastephemeris_leapSeconds(this.__wbg_ptr);
|
|
885
885
|
return ret[0] === 0 ? undefined : ret[1];
|
|
886
886
|
}
|
|
887
|
+
/**
|
|
888
|
+
* Query ECEF position and clock for parallel satellite and epoch arrays
|
|
889
|
+
* against this parsed broadcast ephemeris store.
|
|
890
|
+
*
|
|
891
|
+
* `satellites[i]` is evaluated at `epochsJ2000S[i]`, where epochs are
|
|
892
|
+
* seconds since J2000 in GPST for GNSS broadcast records. The returned
|
|
893
|
+
* plain object has aligned `positionsEcefM`, `clocksS`, `statuses`, and
|
|
894
|
+
* `elementResults` arrays.
|
|
895
|
+
* @param {any} satellites
|
|
896
|
+
* @param {any} epochs_j2000_s
|
|
897
|
+
* @returns {any}
|
|
898
|
+
*/
|
|
899
|
+
observableStatesAtJ2000S(satellites, epochs_j2000_s) {
|
|
900
|
+
const ret = wasm.broadcastephemeris_observableStatesAtJ2000S(this.__wbg_ptr, satellites, epochs_j2000_s);
|
|
901
|
+
if (ret[2]) {
|
|
902
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
903
|
+
}
|
|
904
|
+
return takeFromExternrefTable0(ret[0]);
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Query ECEF position and clock for many satellites at one epoch against
|
|
908
|
+
* this parsed broadcast ephemeris store.
|
|
909
|
+
*
|
|
910
|
+
* `epochJ2000S` is seconds since J2000 in GPST. The returned object follows
|
|
911
|
+
* the same contract as
|
|
912
|
+
* [`observableStatesAtJ2000S`](Self::observable_states_at_j2000_s).
|
|
913
|
+
* @param {any} satellites
|
|
914
|
+
* @param {number} epoch_j2000_s
|
|
915
|
+
* @returns {any}
|
|
916
|
+
*/
|
|
917
|
+
observableStatesAtSharedJ2000S(satellites, epoch_j2000_s) {
|
|
918
|
+
const ret = wasm.broadcastephemeris_observableStatesAtSharedJ2000S(this.__wbg_ptr, satellites, epoch_j2000_s);
|
|
919
|
+
if (ret[2]) {
|
|
920
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
921
|
+
}
|
|
922
|
+
return takeFromExternrefTable0(ret[0]);
|
|
923
|
+
}
|
|
887
924
|
/**
|
|
888
925
|
* Number of usable GPS, Galileo, and BeiDou records.
|
|
889
926
|
* @returns {number}
|
|
@@ -4761,6 +4798,86 @@ class GeoidGrid {
|
|
|
4761
4798
|
if (Symbol.dispose) GeoidGrid.prototype[Symbol.dispose] = GeoidGrid.prototype.free;
|
|
4762
4799
|
exports.GeoidGrid = GeoidGrid;
|
|
4763
4800
|
|
|
4801
|
+
/**
|
|
4802
|
+
* Geometry observability and covariance-validation diagnostics.
|
|
4803
|
+
*/
|
|
4804
|
+
class GeometryQuality {
|
|
4805
|
+
static __wrap(ptr) {
|
|
4806
|
+
const obj = Object.create(GeometryQuality.prototype);
|
|
4807
|
+
obj.__wbg_ptr = ptr;
|
|
4808
|
+
GeometryQualityFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
4809
|
+
return obj;
|
|
4810
|
+
}
|
|
4811
|
+
__destroy_into_raw() {
|
|
4812
|
+
const ptr = this.__wbg_ptr;
|
|
4813
|
+
this.__wbg_ptr = 0;
|
|
4814
|
+
GeometryQualityFinalization.unregister(this);
|
|
4815
|
+
return ptr;
|
|
4816
|
+
}
|
|
4817
|
+
free() {
|
|
4818
|
+
const ptr = this.__destroy_into_raw();
|
|
4819
|
+
wasm.__wbg_geometryquality_free(ptr, 0);
|
|
4820
|
+
}
|
|
4821
|
+
/**
|
|
4822
|
+
* Singular-value condition number of the design matrix.
|
|
4823
|
+
* @returns {number}
|
|
4824
|
+
*/
|
|
4825
|
+
get conditionNumber() {
|
|
4826
|
+
const ret = wasm.geometryquality_conditionNumber(this.__wbg_ptr);
|
|
4827
|
+
return ret;
|
|
4828
|
+
}
|
|
4829
|
+
/**
|
|
4830
|
+
* Whether residuals or a propagated prior validated the covariance bound.
|
|
4831
|
+
* @returns {boolean}
|
|
4832
|
+
*/
|
|
4833
|
+
get covarianceValidated() {
|
|
4834
|
+
const ret = wasm.geometryquality_covarianceValidated(this.__wbg_ptr);
|
|
4835
|
+
return ret !== 0;
|
|
4836
|
+
}
|
|
4837
|
+
/**
|
|
4838
|
+
* Geometric dilution of precision for the solved state.
|
|
4839
|
+
* @returns {number}
|
|
4840
|
+
*/
|
|
4841
|
+
get gdop() {
|
|
4842
|
+
const ret = wasm.geometryquality_gdop(this.__wbg_ptr);
|
|
4843
|
+
return ret;
|
|
4844
|
+
}
|
|
4845
|
+
/**
|
|
4846
|
+
* Whether residual-based RAIM can test the solve.
|
|
4847
|
+
* @returns {boolean}
|
|
4848
|
+
*/
|
|
4849
|
+
get raimCheckable() {
|
|
4850
|
+
const ret = wasm.geometryquality_raimCheckable(this.__wbg_ptr);
|
|
4851
|
+
return ret !== 0;
|
|
4852
|
+
}
|
|
4853
|
+
/**
|
|
4854
|
+
* Rank of the design matrix used by the solve.
|
|
4855
|
+
* @returns {number}
|
|
4856
|
+
*/
|
|
4857
|
+
get rank() {
|
|
4858
|
+
const ret = wasm.geometryquality_rank(this.__wbg_ptr);
|
|
4859
|
+
return ret >>> 0;
|
|
4860
|
+
}
|
|
4861
|
+
/**
|
|
4862
|
+
* Observation redundancy, `nObs - nParams`.
|
|
4863
|
+
* @returns {number}
|
|
4864
|
+
*/
|
|
4865
|
+
get redundancy() {
|
|
4866
|
+
const ret = wasm.geometryquality_redundancy(this.__wbg_ptr);
|
|
4867
|
+
return ret;
|
|
4868
|
+
}
|
|
4869
|
+
/**
|
|
4870
|
+
* Observability and validation tier.
|
|
4871
|
+
* @returns {ObservabilityTier}
|
|
4872
|
+
*/
|
|
4873
|
+
get tier() {
|
|
4874
|
+
const ret = wasm.geometryquality_tier(this.__wbg_ptr);
|
|
4875
|
+
return ret;
|
|
4876
|
+
}
|
|
4877
|
+
}
|
|
4878
|
+
if (Symbol.dispose) GeometryQuality.prototype[Symbol.dispose] = GeometryQuality.prototype.free;
|
|
4879
|
+
exports.GeometryQuality = GeometryQuality;
|
|
4880
|
+
|
|
4764
4881
|
/**
|
|
4765
4882
|
* One GLONASS broadcast state-vector record. `toeUtcJ2000S` is UTC seconds past
|
|
4766
4883
|
* J2000; position is PZ-90.11 ECEF metres, velocity m/s, acceleration m/s^2.
|
|
@@ -8221,6 +8338,36 @@ class ObsPhaseShift {
|
|
|
8221
8338
|
if (Symbol.dispose) ObsPhaseShift.prototype[Symbol.dispose] = ObsPhaseShift.prototype.free;
|
|
8222
8339
|
exports.ObsPhaseShift = ObsPhaseShift;
|
|
8223
8340
|
|
|
8341
|
+
/**
|
|
8342
|
+
* Observability and validation tier for an estimation design.
|
|
8343
|
+
*
|
|
8344
|
+
* `ZeroRedundancy` means the design is full rank but has no residual degrees of
|
|
8345
|
+
* freedom, so snapshot-solve covariance bounds are unvalidated unless a
|
|
8346
|
+
* propagated prior is present. `Weak` means the design exceeded the configured
|
|
8347
|
+
* condition-number or GDOP cutoff; the returned bounds are reported as computed
|
|
8348
|
+
* and are not clamped.
|
|
8349
|
+
* @enum {0 | 1 | 2 | 3}
|
|
8350
|
+
*/
|
|
8351
|
+
const ObservabilityTier = Object.freeze({
|
|
8352
|
+
/**
|
|
8353
|
+
* At least one estimated parameter is not observable.
|
|
8354
|
+
*/
|
|
8355
|
+
RankDeficient: 0, "0": "RankDeficient",
|
|
8356
|
+
/**
|
|
8357
|
+
* Full rank with no residual degrees of freedom.
|
|
8358
|
+
*/
|
|
8359
|
+
ZeroRedundancy: 1, "1": "ZeroRedundancy",
|
|
8360
|
+
/**
|
|
8361
|
+
* Full rank with residual degrees of freedom, but above a cutoff.
|
|
8362
|
+
*/
|
|
8363
|
+
Weak: 2, "2": "Weak",
|
|
8364
|
+
/**
|
|
8365
|
+
* Full rank and within the configured cutoffs.
|
|
8366
|
+
*/
|
|
8367
|
+
Nominal: 3, "3": "Nominal",
|
|
8368
|
+
});
|
|
8369
|
+
exports.ObservabilityTier = ObservabilityTier;
|
|
8370
|
+
|
|
8224
8371
|
/**
|
|
8225
8372
|
* Optional observation-code allow-list for raw and carrier-phase rows. Build
|
|
8226
8373
|
* with `new ObservationFilter()` then chain `.withSystem(system, codes)`.
|
|
@@ -11049,6 +11196,160 @@ class PppFloatSolution {
|
|
|
11049
11196
|
if (Symbol.dispose) PppFloatSolution.prototype[Symbol.dispose] = PppFloatSolution.prototype.free;
|
|
11050
11197
|
exports.PppFloatSolution = PppFloatSolution;
|
|
11051
11198
|
|
|
11199
|
+
/**
|
|
11200
|
+
* A reusable precise-ephemeris interpolant with cached per-satellite nodes.
|
|
11201
|
+
*
|
|
11202
|
+
* Build this handle once from a parsed [`Sp3`] product, raw precise samples, or
|
|
11203
|
+
* a [`PreciseEphemerisSampleSource`], then reuse it for many state or range
|
|
11204
|
+
* queries. The handle delegates to
|
|
11205
|
+
* `sidereon_core::ephemeris::PreciseEphemerisInterpolant`; ECEF positions are
|
|
11206
|
+
* metres, clocks are seconds, and query epochs are seconds since J2000 in the
|
|
11207
|
+
* source time scale.
|
|
11208
|
+
*/
|
|
11209
|
+
class PreciseEphemerisInterpolant {
|
|
11210
|
+
static __wrap(ptr) {
|
|
11211
|
+
const obj = Object.create(PreciseEphemerisInterpolant.prototype);
|
|
11212
|
+
obj.__wbg_ptr = ptr;
|
|
11213
|
+
PreciseEphemerisInterpolantFinalization.register(obj, obj.__wbg_ptr, obj);
|
|
11214
|
+
return obj;
|
|
11215
|
+
}
|
|
11216
|
+
__destroy_into_raw() {
|
|
11217
|
+
const ptr = this.__wbg_ptr;
|
|
11218
|
+
this.__wbg_ptr = 0;
|
|
11219
|
+
PreciseEphemerisInterpolantFinalization.unregister(this);
|
|
11220
|
+
return ptr;
|
|
11221
|
+
}
|
|
11222
|
+
free() {
|
|
11223
|
+
const ptr = this.__destroy_into_raw();
|
|
11224
|
+
wasm.__wbg_preciseephemerisinterpolant_free(ptr, 0);
|
|
11225
|
+
}
|
|
11226
|
+
/**
|
|
11227
|
+
* Build a cached interpolant from an existing sample-backed precise source.
|
|
11228
|
+
* @param {PreciseEphemerisSampleSource} source
|
|
11229
|
+
* @returns {PreciseEphemerisInterpolant}
|
|
11230
|
+
*/
|
|
11231
|
+
static fromPreciseEphemerisSamples(source) {
|
|
11232
|
+
_assertClass(source, PreciseEphemerisSampleSource);
|
|
11233
|
+
const ret = wasm.preciseephemerisinterpolant_fromPreciseEphemerisSamples(source.__wbg_ptr);
|
|
11234
|
+
return PreciseEphemerisInterpolant.__wrap(ret);
|
|
11235
|
+
}
|
|
11236
|
+
/**
|
|
11237
|
+
* Build a cached interpolant directly from precise samples.
|
|
11238
|
+
*
|
|
11239
|
+
* `samples` is the same array accepted by
|
|
11240
|
+
* [`preciseEphemerisSamplesFromSamples`]: each item has `{ sat, epoch,
|
|
11241
|
+
* positionEcefM, clockS?, clockEvent? }`, with epochs in seconds since
|
|
11242
|
+
* J2000 and positions in ECEF metres. Throws a `TypeError` for malformed
|
|
11243
|
+
* JS input and a `RangeError` for sample validation failures.
|
|
11244
|
+
* @param {any} samples
|
|
11245
|
+
* @returns {PreciseEphemerisInterpolant}
|
|
11246
|
+
*/
|
|
11247
|
+
static fromSamples(samples) {
|
|
11248
|
+
const ret = wasm.preciseephemerisinterpolant_fromSamples(samples);
|
|
11249
|
+
if (ret[2]) {
|
|
11250
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
11251
|
+
}
|
|
11252
|
+
return PreciseEphemerisInterpolant.__wrap(ret[0]);
|
|
11253
|
+
}
|
|
11254
|
+
/**
|
|
11255
|
+
* Build a cached interpolant from a parsed SP3 precise product.
|
|
11256
|
+
*
|
|
11257
|
+
* Nodes are copied from the product's native SP3 records. Query epochs are
|
|
11258
|
+
* seconds since J2000 in the SP3 product time scale.
|
|
11259
|
+
* @param {Sp3} sp3
|
|
11260
|
+
* @returns {PreciseEphemerisInterpolant}
|
|
11261
|
+
*/
|
|
11262
|
+
static fromSp3(sp3) {
|
|
11263
|
+
_assertClass(sp3, Sp3);
|
|
11264
|
+
const ret = wasm.preciseephemerisinterpolant_fromSp3(sp3.__wbg_ptr);
|
|
11265
|
+
return PreciseEphemerisInterpolant.__wrap(ret);
|
|
11266
|
+
}
|
|
11267
|
+
/**
|
|
11268
|
+
* Query ECEF position and optional clock for parallel satellite and epoch
|
|
11269
|
+
* arrays using this cached interpolant.
|
|
11270
|
+
*
|
|
11271
|
+
* `satellites[i]` is evaluated at `epochsJ2000S[i]`, where epochs are
|
|
11272
|
+
* seconds since J2000 on this handle's time scale. The returned plain
|
|
11273
|
+
* object has aligned `positionsEcefM`, `clocksS`, `statuses`, and
|
|
11274
|
+
* `elementResults` arrays.
|
|
11275
|
+
* @param {any} satellites
|
|
11276
|
+
* @param {any} epochs_j2000_s
|
|
11277
|
+
* @returns {any}
|
|
11278
|
+
*/
|
|
11279
|
+
observableStatesAtJ2000S(satellites, epochs_j2000_s) {
|
|
11280
|
+
const ret = wasm.preciseephemerisinterpolant_observableStatesAtJ2000S(this.__wbg_ptr, satellites, epochs_j2000_s);
|
|
11281
|
+
if (ret[2]) {
|
|
11282
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
11283
|
+
}
|
|
11284
|
+
return takeFromExternrefTable0(ret[0]);
|
|
11285
|
+
}
|
|
11286
|
+
/**
|
|
11287
|
+
* Query ECEF position and optional clock for many satellites at one epoch
|
|
11288
|
+
* using this cached interpolant.
|
|
11289
|
+
*
|
|
11290
|
+
* `epochJ2000S` is seconds since J2000 on this handle's time scale. The
|
|
11291
|
+
* returned object follows the same contract as
|
|
11292
|
+
* [`observableStatesAtJ2000S`](Self::observable_states_at_j2000_s).
|
|
11293
|
+
* @param {any} satellites
|
|
11294
|
+
* @param {number} epoch_j2000_s
|
|
11295
|
+
* @returns {any}
|
|
11296
|
+
*/
|
|
11297
|
+
observableStatesAtSharedJ2000S(satellites, epoch_j2000_s) {
|
|
11298
|
+
const ret = wasm.preciseephemerisinterpolant_observableStatesAtSharedJ2000S(this.__wbg_ptr, satellites, epoch_j2000_s);
|
|
11299
|
+
if (ret[2]) {
|
|
11300
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
11301
|
+
}
|
|
11302
|
+
return takeFromExternrefTable0(ret[0]);
|
|
11303
|
+
}
|
|
11304
|
+
/**
|
|
11305
|
+
* Predict geometric ranges for many `(satellite, receiver, epoch)`
|
|
11306
|
+
* requests using this cached interpolant.
|
|
11307
|
+
*
|
|
11308
|
+
* `requests` is an array of `{ sat, receiverEcefM, tRxJ2000S }` objects.
|
|
11309
|
+
* Positions are ECEF metres and epochs are seconds since J2000 on this
|
|
11310
|
+
* handle's time scale. The output matches [`Sp3.predictRanges`].
|
|
11311
|
+
* @param {any} requests
|
|
11312
|
+
* @param {any} options
|
|
11313
|
+
* @returns {any}
|
|
11314
|
+
*/
|
|
11315
|
+
predictRanges(requests, options) {
|
|
11316
|
+
const ret = wasm.preciseephemerisinterpolant_predictRanges(this.__wbg_ptr, requests, options);
|
|
11317
|
+
if (ret[2]) {
|
|
11318
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
11319
|
+
}
|
|
11320
|
+
return takeFromExternrefTable0(ret[0]);
|
|
11321
|
+
}
|
|
11322
|
+
/**
|
|
11323
|
+
* Satellite tokens this handle can interpolate, ascending.
|
|
11324
|
+
* @returns {string[]}
|
|
11325
|
+
*/
|
|
11326
|
+
get satellites() {
|
|
11327
|
+
const ret = wasm.preciseephemerisinterpolant_satellites(this.__wbg_ptr);
|
|
11328
|
+
var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();
|
|
11329
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
11330
|
+
return v1;
|
|
11331
|
+
}
|
|
11332
|
+
/**
|
|
11333
|
+
* Source time-scale abbreviation used by this handle's J2000-second axis,
|
|
11334
|
+
* such as `"GPST"`.
|
|
11335
|
+
* @returns {string}
|
|
11336
|
+
*/
|
|
11337
|
+
get timeScale() {
|
|
11338
|
+
let deferred1_0;
|
|
11339
|
+
let deferred1_1;
|
|
11340
|
+
try {
|
|
11341
|
+
const ret = wasm.preciseephemerisinterpolant_timeScale(this.__wbg_ptr);
|
|
11342
|
+
deferred1_0 = ret[0];
|
|
11343
|
+
deferred1_1 = ret[1];
|
|
11344
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
11345
|
+
} finally {
|
|
11346
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
11347
|
+
}
|
|
11348
|
+
}
|
|
11349
|
+
}
|
|
11350
|
+
if (Symbol.dispose) PreciseEphemerisInterpolant.prototype[Symbol.dispose] = PreciseEphemerisInterpolant.prototype.free;
|
|
11351
|
+
exports.PreciseEphemerisInterpolant = PreciseEphemerisInterpolant;
|
|
11352
|
+
|
|
11052
11353
|
/**
|
|
11053
11354
|
* A precise-ephemeris source built from samples rather than parsed SP3 text.
|
|
11054
11355
|
*
|
|
@@ -11073,6 +11374,44 @@ class PreciseEphemerisSampleSource {
|
|
|
11073
11374
|
const ptr = this.__destroy_into_raw();
|
|
11074
11375
|
wasm.__wbg_preciseephemerissamplesource_free(ptr, 0);
|
|
11075
11376
|
}
|
|
11377
|
+
/**
|
|
11378
|
+
* Query ECEF position and optional clock for parallel satellite and epoch
|
|
11379
|
+
* arrays against this sample-backed precise source.
|
|
11380
|
+
*
|
|
11381
|
+
* `satellites[i]` is evaluated at `epochsJ2000S[i]`, where epochs are
|
|
11382
|
+
* seconds since J2000 on the source time scale. The returned plain object
|
|
11383
|
+
* has aligned `positionsEcefM`, `clocksS`, `statuses`, and
|
|
11384
|
+
* `elementResults` arrays. Failed elements use the core missing-position
|
|
11385
|
+
* sentinel and carry the scalar engine error in `elementResults[i].error`.
|
|
11386
|
+
* @param {any} satellites
|
|
11387
|
+
* @param {any} epochs_j2000_s
|
|
11388
|
+
* @returns {any}
|
|
11389
|
+
*/
|
|
11390
|
+
observableStatesAtJ2000S(satellites, epochs_j2000_s) {
|
|
11391
|
+
const ret = wasm.preciseephemerissamplesource_observableStatesAtJ2000S(this.__wbg_ptr, satellites, epochs_j2000_s);
|
|
11392
|
+
if (ret[2]) {
|
|
11393
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
11394
|
+
}
|
|
11395
|
+
return takeFromExternrefTable0(ret[0]);
|
|
11396
|
+
}
|
|
11397
|
+
/**
|
|
11398
|
+
* Query ECEF position and optional clock for many satellites at one epoch
|
|
11399
|
+
* against this sample-backed precise source.
|
|
11400
|
+
*
|
|
11401
|
+
* `epochJ2000S` is seconds since J2000 on the source time scale. The
|
|
11402
|
+
* returned plain object follows the same contract as
|
|
11403
|
+
* [`observableStatesAtJ2000S`](Self::observable_states_at_j2000_s).
|
|
11404
|
+
* @param {any} satellites
|
|
11405
|
+
* @param {number} epoch_j2000_s
|
|
11406
|
+
* @returns {any}
|
|
11407
|
+
*/
|
|
11408
|
+
observableStatesAtSharedJ2000S(satellites, epoch_j2000_s) {
|
|
11409
|
+
const ret = wasm.preciseephemerissamplesource_observableStatesAtSharedJ2000S(this.__wbg_ptr, satellites, epoch_j2000_s);
|
|
11410
|
+
if (ret[2]) {
|
|
11411
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
11412
|
+
}
|
|
11413
|
+
return takeFromExternrefTable0(ret[0]);
|
|
11414
|
+
}
|
|
11076
11415
|
/**
|
|
11077
11416
|
* Predict geometric ranges for many requests in one call. See the shared
|
|
11078
11417
|
* [`predictRanges`](crate::precise_samples::predict_ranges_over) contract;
|
|
@@ -12328,6 +12667,15 @@ class RtkFixedSolution {
|
|
|
12328
12667
|
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
12329
12668
|
return v1;
|
|
12330
12669
|
}
|
|
12670
|
+
/**
|
|
12671
|
+
* Geometry observability and covariance-validation diagnostics for the
|
|
12672
|
+
* float design used by the integer-fixed solve.
|
|
12673
|
+
* @returns {GeometryQuality}
|
|
12674
|
+
*/
|
|
12675
|
+
get geometryQuality() {
|
|
12676
|
+
const ret = wasm.rtkfixedsolution_geometryQuality(this.__wbg_ptr);
|
|
12677
|
+
return GeometryQuality.__wrap(ret);
|
|
12678
|
+
}
|
|
12331
12679
|
/**
|
|
12332
12680
|
* @returns {number}
|
|
12333
12681
|
*/
|
|
@@ -12359,6 +12707,24 @@ class RtkFixedSolution {
|
|
|
12359
12707
|
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
12360
12708
|
}
|
|
12361
12709
|
}
|
|
12710
|
+
/**
|
|
12711
|
+
* Whether residual-based RAIM can test the float design used by the
|
|
12712
|
+
* integer-fixed solve.
|
|
12713
|
+
* @returns {boolean}
|
|
12714
|
+
*/
|
|
12715
|
+
get raimCheckable() {
|
|
12716
|
+
const ret = wasm.rtkfixedsolution_raimCheckable(this.__wbg_ptr);
|
|
12717
|
+
return ret !== 0;
|
|
12718
|
+
}
|
|
12719
|
+
/**
|
|
12720
|
+
* Observation redundancy, `nObs - nParams`, for the float design used by
|
|
12721
|
+
* the integer-fixed solve.
|
|
12722
|
+
* @returns {number}
|
|
12723
|
+
*/
|
|
12724
|
+
get redundancy() {
|
|
12725
|
+
const ret = wasm.rtkfixedsolution_redundancy(this.__wbg_ptr);
|
|
12726
|
+
return ret;
|
|
12727
|
+
}
|
|
12362
12728
|
}
|
|
12363
12729
|
if (Symbol.dispose) RtkFixedSolution.prototype[Symbol.dispose] = RtkFixedSolution.prototype.free;
|
|
12364
12730
|
exports.RtkFixedSolution = RtkFixedSolution;
|
|
@@ -12415,6 +12781,17 @@ class RtkFloatSolution {
|
|
|
12415
12781
|
const ret = wasm.rtkfloatsolution_converged(this.__wbg_ptr);
|
|
12416
12782
|
return ret !== 0;
|
|
12417
12783
|
}
|
|
12784
|
+
/**
|
|
12785
|
+
* Geometry observability and covariance-validation diagnostics for the
|
|
12786
|
+
* final double-difference design. `ZeroRedundancy` bounds are unvalidated
|
|
12787
|
+
* for snapshot solves, `Weak` bounds are unclamped, and rank-deficient
|
|
12788
|
+
* designs are returned as a singular-geometry `Error`.
|
|
12789
|
+
* @returns {GeometryQuality}
|
|
12790
|
+
*/
|
|
12791
|
+
get geometryQuality() {
|
|
12792
|
+
const ret = wasm.rtkfloatsolution_geometryQuality(this.__wbg_ptr);
|
|
12793
|
+
return GeometryQuality.__wrap(ret);
|
|
12794
|
+
}
|
|
12418
12795
|
/**
|
|
12419
12796
|
* @returns {number}
|
|
12420
12797
|
*/
|
|
@@ -12436,6 +12813,22 @@ class RtkFloatSolution {
|
|
|
12436
12813
|
const ret = wasm.rtkfloatsolution_phaseRmsM(this.__wbg_ptr);
|
|
12437
12814
|
return ret;
|
|
12438
12815
|
}
|
|
12816
|
+
/**
|
|
12817
|
+
* Whether residual-based RAIM can test the float design.
|
|
12818
|
+
* @returns {boolean}
|
|
12819
|
+
*/
|
|
12820
|
+
get raimCheckable() {
|
|
12821
|
+
const ret = wasm.rtkfloatsolution_raimCheckable(this.__wbg_ptr);
|
|
12822
|
+
return ret !== 0;
|
|
12823
|
+
}
|
|
12824
|
+
/**
|
|
12825
|
+
* Observation redundancy, `nObs - nParams`, for the float design.
|
|
12826
|
+
* @returns {number}
|
|
12827
|
+
*/
|
|
12828
|
+
get redundancy() {
|
|
12829
|
+
const ret = wasm.rtkfloatsolution_redundancy(this.__wbg_ptr);
|
|
12830
|
+
return ret;
|
|
12831
|
+
}
|
|
12439
12832
|
/**
|
|
12440
12833
|
* @returns {number}
|
|
12441
12834
|
*/
|
|
@@ -13142,6 +13535,44 @@ class Sp3 {
|
|
|
13142
13535
|
}
|
|
13143
13536
|
return Sp3Interpolation.__wrap(ret[0]);
|
|
13144
13537
|
}
|
|
13538
|
+
/**
|
|
13539
|
+
* Query ECEF position and optional clock for parallel satellite and epoch
|
|
13540
|
+
* arrays against this parsed SP3 product.
|
|
13541
|
+
*
|
|
13542
|
+
* `satellites[i]` is evaluated at `epochsJ2000S[i]`, where epochs are
|
|
13543
|
+
* seconds since J2000 in the product time scale. The returned plain object
|
|
13544
|
+
* has aligned `positionsEcefM`, `clocksS`, `statuses`, and
|
|
13545
|
+
* `elementResults` arrays. Failed elements use the core missing-position
|
|
13546
|
+
* sentinel and carry the scalar engine error in `elementResults[i].error`.
|
|
13547
|
+
* @param {any} satellites
|
|
13548
|
+
* @param {any} epochs_j2000_s
|
|
13549
|
+
* @returns {any}
|
|
13550
|
+
*/
|
|
13551
|
+
observableStatesAtJ2000S(satellites, epochs_j2000_s) {
|
|
13552
|
+
const ret = wasm.sp3_observableStatesAtJ2000S(this.__wbg_ptr, satellites, epochs_j2000_s);
|
|
13553
|
+
if (ret[2]) {
|
|
13554
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
13555
|
+
}
|
|
13556
|
+
return takeFromExternrefTable0(ret[0]);
|
|
13557
|
+
}
|
|
13558
|
+
/**
|
|
13559
|
+
* Query ECEF position and optional clock for many satellites at one epoch
|
|
13560
|
+
* against this parsed SP3 product.
|
|
13561
|
+
*
|
|
13562
|
+
* `epochJ2000S` is seconds since J2000 in the product time scale. The
|
|
13563
|
+
* returned object follows the same contract as
|
|
13564
|
+
* [`observableStatesAtJ2000S`](Self::observable_states_at_j2000_s).
|
|
13565
|
+
* @param {any} satellites
|
|
13566
|
+
* @param {number} epoch_j2000_s
|
|
13567
|
+
* @returns {any}
|
|
13568
|
+
*/
|
|
13569
|
+
observableStatesAtSharedJ2000S(satellites, epoch_j2000_s) {
|
|
13570
|
+
const ret = wasm.sp3_observableStatesAtSharedJ2000S(this.__wbg_ptr, satellites, epoch_j2000_s);
|
|
13571
|
+
if (ret[2]) {
|
|
13572
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
13573
|
+
}
|
|
13574
|
+
return takeFromExternrefTable0(ret[0]);
|
|
13575
|
+
}
|
|
13145
13576
|
/**
|
|
13146
13577
|
* Predict geometric ranges for many `(satellite, receiver, epoch)` requests
|
|
13147
13578
|
* against this ephemeris in one call. `requests` is an array of
|
|
@@ -14450,6 +14881,17 @@ class SppSolution {
|
|
|
14450
14881
|
}
|
|
14451
14882
|
return v1;
|
|
14452
14883
|
}
|
|
14884
|
+
/**
|
|
14885
|
+
* Geometry observability and covariance-validation diagnostics for this
|
|
14886
|
+
* solved design. `ZeroRedundancy` marks unvalidated snapshot covariance
|
|
14887
|
+
* bounds, `Weak` leaves large bounds unclamped, and rank-deficient designs
|
|
14888
|
+
* are returned as a singular-geometry `Error` rather than a solution.
|
|
14889
|
+
* @returns {GeometryQuality}
|
|
14890
|
+
*/
|
|
14891
|
+
get geometryQuality() {
|
|
14892
|
+
const ret = wasm.sppsolution_geometryQuality(this.__wbg_ptr);
|
|
14893
|
+
return GeometryQuality.__wrap(ret);
|
|
14894
|
+
}
|
|
14453
14895
|
/**
|
|
14454
14896
|
* ECEF position as a `Float64Array` `[x, y, z]`, metres.
|
|
14455
14897
|
* @returns {Float64Array}
|
|
@@ -14460,6 +14902,22 @@ class SppSolution {
|
|
|
14460
14902
|
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
14461
14903
|
return v1;
|
|
14462
14904
|
}
|
|
14905
|
+
/**
|
|
14906
|
+
* Whether residual-based RAIM can test the accepted solve.
|
|
14907
|
+
* @returns {boolean}
|
|
14908
|
+
*/
|
|
14909
|
+
get raimCheckable() {
|
|
14910
|
+
const ret = wasm.sppsolution_raimCheckable(this.__wbg_ptr);
|
|
14911
|
+
return ret !== 0;
|
|
14912
|
+
}
|
|
14913
|
+
/**
|
|
14914
|
+
* Degrees of freedom in the accepted solve: `usedCount - (3 + clocks)`.
|
|
14915
|
+
* @returns {number}
|
|
14916
|
+
*/
|
|
14917
|
+
get redundancy() {
|
|
14918
|
+
const ret = wasm.sppsolution_redundancy(this.__wbg_ptr);
|
|
14919
|
+
return ret;
|
|
14920
|
+
}
|
|
14463
14921
|
/**
|
|
14464
14922
|
* Post-fit residuals, metres, index-aligned to `usedSats`.
|
|
14465
14923
|
* @returns {Float64Array}
|
|
@@ -15915,6 +16373,82 @@ function allanDeviation(series, tau0_s, averaging_factors) {
|
|
|
15915
16373
|
}
|
|
15916
16374
|
exports.allanDeviation = allanDeviation;
|
|
15917
16375
|
|
|
16376
|
+
/**
|
|
16377
|
+
* Alpha-beta measurement update applied to a predicted scalar state.
|
|
16378
|
+
*
|
|
16379
|
+
* `predicted` is `{ level, rate }`, `measurement` has the same unit as
|
|
16380
|
+
* `level`, `dt` is seconds, and `gains` is `{ alpha, beta }`.
|
|
16381
|
+
* @param {any} predicted
|
|
16382
|
+
* @param {number} measurement
|
|
16383
|
+
* @param {number} dt
|
|
16384
|
+
* @param {any} gains
|
|
16385
|
+
* @returns {any}
|
|
16386
|
+
*/
|
|
16387
|
+
function alphaBetaApplyMeasurement(predicted, measurement, dt, gains) {
|
|
16388
|
+
const ret = wasm.alphaBetaApplyMeasurement(predicted, measurement, dt, gains);
|
|
16389
|
+
if (ret[2]) {
|
|
16390
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16391
|
+
}
|
|
16392
|
+
return takeFromExternrefTable0(ret[0]);
|
|
16393
|
+
}
|
|
16394
|
+
exports.alphaBetaApplyMeasurement = alphaBetaApplyMeasurement;
|
|
16395
|
+
|
|
16396
|
+
/**
|
|
16397
|
+
* Run one alpha-beta predict and measurement update.
|
|
16398
|
+
*
|
|
16399
|
+
* `state` is `{ level, rate }`, `measurement` has the same unit as `level`,
|
|
16400
|
+
* `dt` is seconds, and `gains` is `{ alpha, beta }`. Returns `{ predicted,
|
|
16401
|
+
* updated, innovation }`.
|
|
16402
|
+
* @param {any} state
|
|
16403
|
+
* @param {number} measurement
|
|
16404
|
+
* @param {number} dt
|
|
16405
|
+
* @param {any} gains
|
|
16406
|
+
* @returns {any}
|
|
16407
|
+
*/
|
|
16408
|
+
function alphaBetaFilterStep(state, measurement, dt, gains) {
|
|
16409
|
+
const ret = wasm.alphaBetaFilterStep(state, measurement, dt, gains);
|
|
16410
|
+
if (ret[2]) {
|
|
16411
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16412
|
+
}
|
|
16413
|
+
return takeFromExternrefTable0(ret[0]);
|
|
16414
|
+
}
|
|
16415
|
+
exports.alphaBetaFilterStep = alphaBetaFilterStep;
|
|
16416
|
+
|
|
16417
|
+
/**
|
|
16418
|
+
* Alpha-beta constant-rate prediction.
|
|
16419
|
+
*
|
|
16420
|
+
* `state` is `{ level, rate }` and `dt` is the positive propagation interval in
|
|
16421
|
+
* seconds. Returns the predicted `{ level, rate }`.
|
|
16422
|
+
* @param {any} state
|
|
16423
|
+
* @param {number} dt
|
|
16424
|
+
* @returns {any}
|
|
16425
|
+
*/
|
|
16426
|
+
function alphaBetaPredict(state, dt) {
|
|
16427
|
+
const ret = wasm.alphaBetaPredict(state, dt);
|
|
16428
|
+
if (ret[2]) {
|
|
16429
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16430
|
+
}
|
|
16431
|
+
return takeFromExternrefTable0(ret[0]);
|
|
16432
|
+
}
|
|
16433
|
+
exports.alphaBetaPredict = alphaBetaPredict;
|
|
16434
|
+
|
|
16435
|
+
/**
|
|
16436
|
+
* Steady-state alpha-beta gains from a positive tracking index.
|
|
16437
|
+
*
|
|
16438
|
+
* Returns `{ alpha, beta }`, where `alpha` is the level gain and `beta` maps
|
|
16439
|
+
* innovation to rate through `beta * innovation / dt`.
|
|
16440
|
+
* @param {number} tracking_index
|
|
16441
|
+
* @returns {any}
|
|
16442
|
+
*/
|
|
16443
|
+
function alphaBetaSteadyStateGains(tracking_index) {
|
|
16444
|
+
const ret = wasm.alphaBetaSteadyStateGains(tracking_index);
|
|
16445
|
+
if (ret[2]) {
|
|
16446
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16447
|
+
}
|
|
16448
|
+
return takeFromExternrefTable0(ret[0]);
|
|
16449
|
+
}
|
|
16450
|
+
exports.alphaBetaSteadyStateGains = alphaBetaSteadyStateGains;
|
|
16451
|
+
|
|
15918
16452
|
/**
|
|
15919
16453
|
* On-sky angle in degrees between two direction vectors.
|
|
15920
16454
|
* @param {Float64Array} a
|
|
@@ -16187,6 +16721,92 @@ function carrierFrequencyHz(system, band) {
|
|
|
16187
16721
|
}
|
|
16188
16722
|
exports.carrierFrequencyHz = carrierFrequencyHz;
|
|
16189
16723
|
|
|
16724
|
+
/**
|
|
16725
|
+
* CA-CFAR false alarm probability from searched-cell count, absolute
|
|
16726
|
+
* threshold, and mean noise level.
|
|
16727
|
+
* @param {number} searched_cells
|
|
16728
|
+
* @param {number} threshold
|
|
16729
|
+
* @param {number} noise_level
|
|
16730
|
+
* @returns {number}
|
|
16731
|
+
*/
|
|
16732
|
+
function cfarCaFalseAlarmProbability(searched_cells, threshold, noise_level) {
|
|
16733
|
+
const ret = wasm.cfarCaFalseAlarmProbability(searched_cells, threshold, noise_level);
|
|
16734
|
+
if (ret[2]) {
|
|
16735
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16736
|
+
}
|
|
16737
|
+
return ret[0];
|
|
16738
|
+
}
|
|
16739
|
+
exports.cfarCaFalseAlarmProbability = cfarCaFalseAlarmProbability;
|
|
16740
|
+
|
|
16741
|
+
/**
|
|
16742
|
+
* CA-CFAR threshold multiplier from searched-cell count and target false alarm
|
|
16743
|
+
* probability.
|
|
16744
|
+
* @param {number} searched_cells
|
|
16745
|
+
* @param {number} false_alarm_probability
|
|
16746
|
+
* @returns {number}
|
|
16747
|
+
*/
|
|
16748
|
+
function cfarCaMultiplierFromPfa(searched_cells, false_alarm_probability) {
|
|
16749
|
+
const ret = wasm.cfarCaMultiplierFromPfa(searched_cells, false_alarm_probability);
|
|
16750
|
+
if (ret[2]) {
|
|
16751
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16752
|
+
}
|
|
16753
|
+
return ret[0];
|
|
16754
|
+
}
|
|
16755
|
+
exports.cfarCaMultiplierFromPfa = cfarCaMultiplierFromPfa;
|
|
16756
|
+
|
|
16757
|
+
/**
|
|
16758
|
+
* CA-CFAR false alarm probability from searched-cell count and multiplier.
|
|
16759
|
+
* @param {number} searched_cells
|
|
16760
|
+
* @param {number} multiplier
|
|
16761
|
+
* @returns {number}
|
|
16762
|
+
*/
|
|
16763
|
+
function cfarCaPfaFromMultiplier(searched_cells, multiplier) {
|
|
16764
|
+
const ret = wasm.cfarCaPfaFromMultiplier(searched_cells, multiplier);
|
|
16765
|
+
if (ret[2]) {
|
|
16766
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16767
|
+
}
|
|
16768
|
+
return ret[0];
|
|
16769
|
+
}
|
|
16770
|
+
exports.cfarCaPfaFromMultiplier = cfarCaPfaFromMultiplier;
|
|
16771
|
+
|
|
16772
|
+
/**
|
|
16773
|
+
* CA-CFAR absolute threshold from searched-cell count, target false alarm
|
|
16774
|
+
* probability, and mean noise level.
|
|
16775
|
+
* @param {number} searched_cells
|
|
16776
|
+
* @param {number} false_alarm_probability
|
|
16777
|
+
* @param {number} noise_level
|
|
16778
|
+
* @returns {number}
|
|
16779
|
+
*/
|
|
16780
|
+
function cfarCaThreshold(searched_cells, false_alarm_probability, noise_level) {
|
|
16781
|
+
const ret = wasm.cfarCaThreshold(searched_cells, false_alarm_probability, noise_level);
|
|
16782
|
+
if (ret[2]) {
|
|
16783
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16784
|
+
}
|
|
16785
|
+
return ret[0];
|
|
16786
|
+
}
|
|
16787
|
+
exports.cfarCaThreshold = cfarCaThreshold;
|
|
16788
|
+
|
|
16789
|
+
/**
|
|
16790
|
+
* Compute the closed-form Chan-Ho seed used by [`locateSource`].
|
|
16791
|
+
*
|
|
16792
|
+
* `mode` is `"toa"`, `"tdoa"`, or `{ mode: "tdoa", referenceSensor }`.
|
|
16793
|
+
* Per-sensor speed overrides are not used by the closed-form equations, but
|
|
16794
|
+
* they are used by [`locateSource`] during iterative refinement.
|
|
16795
|
+
* @param {any} sensors
|
|
16796
|
+
* @param {any} arrival_times_s
|
|
16797
|
+
* @param {number} propagation_speed_m_s
|
|
16798
|
+
* @param {any} mode
|
|
16799
|
+
* @returns {any}
|
|
16800
|
+
*/
|
|
16801
|
+
function chanHoInitialGuess(sensors, arrival_times_s, propagation_speed_m_s, mode) {
|
|
16802
|
+
const ret = wasm.chanHoInitialGuess(sensors, arrival_times_s, propagation_speed_m_s, mode);
|
|
16803
|
+
if (ret[2]) {
|
|
16804
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
16805
|
+
}
|
|
16806
|
+
return takeFromExternrefTable0(ret[0]);
|
|
16807
|
+
}
|
|
16808
|
+
exports.chanHoInitialGuess = chanHoInitialGuess;
|
|
16809
|
+
|
|
16190
16810
|
/**
|
|
16191
16811
|
* Returns `true` when a diff has any findings.
|
|
16192
16812
|
* @param {any} diff
|
|
@@ -17330,6 +17950,41 @@ function estimateDecayWithSpaceWeather(drag, table, request) {
|
|
|
17330
17950
|
}
|
|
17331
17951
|
exports.estimateDecayWithSpaceWeather = estimateDecayWithSpaceWeather;
|
|
17332
17952
|
|
|
17953
|
+
/**
|
|
17954
|
+
* Exponentially weighted moving-average update.
|
|
17955
|
+
*
|
|
17956
|
+
* `alpha` must be in `[0, 1]`; the returned value is
|
|
17957
|
+
* `previous + alpha * (sample - previous)`.
|
|
17958
|
+
* @param {number} previous
|
|
17959
|
+
* @param {number} sample
|
|
17960
|
+
* @param {number} alpha
|
|
17961
|
+
* @returns {number}
|
|
17962
|
+
*/
|
|
17963
|
+
function ewmaUpdate(previous, sample, alpha) {
|
|
17964
|
+
const ret = wasm.ewmaUpdate(previous, sample, alpha);
|
|
17965
|
+
if (ret[2]) {
|
|
17966
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
17967
|
+
}
|
|
17968
|
+
return ret[0];
|
|
17969
|
+
}
|
|
17970
|
+
exports.ewmaUpdate = ewmaUpdate;
|
|
17971
|
+
|
|
17972
|
+
/**
|
|
17973
|
+
* EWMA update with `alpha = 1 / 2^shift`.
|
|
17974
|
+
* @param {number} previous
|
|
17975
|
+
* @param {number} sample
|
|
17976
|
+
* @param {number} shift
|
|
17977
|
+
* @returns {number}
|
|
17978
|
+
*/
|
|
17979
|
+
function ewmaUpdatePowerOfTwo(previous, sample, shift) {
|
|
17980
|
+
const ret = wasm.ewmaUpdatePowerOfTwo(previous, sample, shift);
|
|
17981
|
+
if (ret[2]) {
|
|
17982
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
17983
|
+
}
|
|
17984
|
+
return ret[0];
|
|
17985
|
+
}
|
|
17986
|
+
exports.ewmaUpdatePowerOfTwo = ewmaUpdatePowerOfTwo;
|
|
17987
|
+
|
|
17333
17988
|
/**
|
|
17334
17989
|
* Find Moon elevation threshold crossings (moonrise / moonset) over a UTC
|
|
17335
17990
|
* window.
|
|
@@ -18512,6 +19167,26 @@ function jarqueBera(x) {
|
|
|
18512
19167
|
}
|
|
18513
19168
|
exports.jarqueBera = jarqueBera;
|
|
18514
19169
|
|
|
19170
|
+
/**
|
|
19171
|
+
* Steady-state gains for a scalar constant-velocity Kalman filter.
|
|
19172
|
+
*
|
|
19173
|
+
* `trackingIndex`, `dt`, and `measurementVariance` must be positive. Returns
|
|
19174
|
+
* `{ positionGain, rateGain }`; `rateGain * dt` equals the alpha-beta `beta`
|
|
19175
|
+
* gain for the same tracking index.
|
|
19176
|
+
* @param {number} tracking_index
|
|
19177
|
+
* @param {number} dt
|
|
19178
|
+
* @param {number} measurement_variance
|
|
19179
|
+
* @returns {any}
|
|
19180
|
+
*/
|
|
19181
|
+
function kalmanCvSteadyStateGains(tracking_index, dt, measurement_variance) {
|
|
19182
|
+
const ret = wasm.kalmanCvSteadyStateGains(tracking_index, dt, measurement_variance);
|
|
19183
|
+
if (ret[2]) {
|
|
19184
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
19185
|
+
}
|
|
19186
|
+
return takeFromExternrefTable0(ret[0]);
|
|
19187
|
+
}
|
|
19188
|
+
exports.kalmanCvSteadyStateGains = kalmanCvSteadyStateGains;
|
|
19189
|
+
|
|
18515
19190
|
/**
|
|
18516
19191
|
* GPS broadcast Klobuchar ionospheric group delay in the model's native units
|
|
18517
19192
|
* (positive metres).
|
|
@@ -19082,6 +19757,30 @@ function loadSp3(bytes) {
|
|
|
19082
19757
|
}
|
|
19083
19758
|
exports.loadSp3 = loadSp3;
|
|
19084
19759
|
|
|
19760
|
+
/**
|
|
19761
|
+
* Locate a source from sensor arrival times.
|
|
19762
|
+
*
|
|
19763
|
+
* `sensors` is an array of `{ positionM, propagationSpeedMS? }`; each
|
|
19764
|
+
* `positionM` is a 2D or 3D Cartesian metre vector and all sensors must share
|
|
19765
|
+
* the same dimension. `arrivalTimesS` is an aligned seconds array,
|
|
19766
|
+
* `propagationSpeedMS` is the call-level speed in metres per second, and
|
|
19767
|
+
* `options` may include `mode`, `referenceSensor`, `timingSigmaS`, `loss`,
|
|
19768
|
+
* `fScaleS`, `ftol`, `xtol`, `gtol`, and `maxNfev`.
|
|
19769
|
+
* @param {any} sensors
|
|
19770
|
+
* @param {any} arrival_times_s
|
|
19771
|
+
* @param {number} propagation_speed_m_s
|
|
19772
|
+
* @param {any} options
|
|
19773
|
+
* @returns {any}
|
|
19774
|
+
*/
|
|
19775
|
+
function locateSource(sensors, arrival_times_s, propagation_speed_m_s, options) {
|
|
19776
|
+
const ret = wasm.locateSource(sensors, arrival_times_s, propagation_speed_m_s, options);
|
|
19777
|
+
if (ret[2]) {
|
|
19778
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
19779
|
+
}
|
|
19780
|
+
return takeFromExternrefTable0(ret[0]);
|
|
19781
|
+
}
|
|
19782
|
+
exports.locateSource = locateSource;
|
|
19783
|
+
|
|
19085
19784
|
/**
|
|
19086
19785
|
* @param {bigint} start_unix_us
|
|
19087
19786
|
* @param {bigint} end_unix_us
|
|
@@ -19136,6 +19835,35 @@ function lvlhRotation(position_km, velocity_km_s) {
|
|
|
19136
19835
|
}
|
|
19137
19836
|
exports.lvlhRotation = lvlhRotation;
|
|
19138
19837
|
|
|
19838
|
+
/**
|
|
19839
|
+
* Gaussian consistency factor applied by [`madSpread`].
|
|
19840
|
+
* @returns {number}
|
|
19841
|
+
*/
|
|
19842
|
+
function madGaussianConsistency() {
|
|
19843
|
+
const ret = wasm.madGaussianConsistency();
|
|
19844
|
+
return ret;
|
|
19845
|
+
}
|
|
19846
|
+
exports.madGaussianConsistency = madGaussianConsistency;
|
|
19847
|
+
|
|
19848
|
+
/**
|
|
19849
|
+
* Median absolute deviation spread estimate.
|
|
19850
|
+
*
|
|
19851
|
+
* `values` is a JS number array. The returned spread is
|
|
19852
|
+
* `MAD_GAUSSIAN_CONSISTENCY * median(abs(value - median(values)))`, floored by
|
|
19853
|
+
* `scaleFloor`.
|
|
19854
|
+
* @param {any} values
|
|
19855
|
+
* @param {number} scale_floor
|
|
19856
|
+
* @returns {number}
|
|
19857
|
+
*/
|
|
19858
|
+
function madSpread(values, scale_floor) {
|
|
19859
|
+
const ret = wasm.madSpread(values, scale_floor);
|
|
19860
|
+
if (ret[2]) {
|
|
19861
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
19862
|
+
}
|
|
19863
|
+
return ret[0];
|
|
19864
|
+
}
|
|
19865
|
+
exports.madSpread = madSpread;
|
|
19866
|
+
|
|
19139
19867
|
/**
|
|
19140
19868
|
* @param {number} radius_km
|
|
19141
19869
|
* @returns {number}
|
|
@@ -19568,6 +20296,69 @@ function nequickGStecTecu(_eval) {
|
|
|
19568
20296
|
}
|
|
19569
20297
|
exports.nequickGStecTecu = nequickGStecTecu;
|
|
19570
20298
|
|
|
20299
|
+
/**
|
|
20300
|
+
* Scalar normalized innovation squared statistic.
|
|
20301
|
+
* @param {number} innovation
|
|
20302
|
+
* @param {number} innovation_variance
|
|
20303
|
+
* @returns {number}
|
|
20304
|
+
*/
|
|
20305
|
+
function nis(innovation, innovation_variance) {
|
|
20306
|
+
const ret = wasm.nis(innovation, innovation_variance);
|
|
20307
|
+
if (ret[2]) {
|
|
20308
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
20309
|
+
}
|
|
20310
|
+
return ret[0];
|
|
20311
|
+
}
|
|
20312
|
+
exports.nis = nis;
|
|
20313
|
+
|
|
20314
|
+
/**
|
|
20315
|
+
* Bar-Shalom expected NIS value for `dof` measurement degrees of freedom.
|
|
20316
|
+
* @param {number} dof
|
|
20317
|
+
* @returns {number}
|
|
20318
|
+
*/
|
|
20319
|
+
function nisExpectedValue(dof) {
|
|
20320
|
+
const ret = wasm.nisExpectedValue(dof);
|
|
20321
|
+
if (ret[2]) {
|
|
20322
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
20323
|
+
}
|
|
20324
|
+
return ret[0];
|
|
20325
|
+
}
|
|
20326
|
+
exports.nisExpectedValue = nisExpectedValue;
|
|
20327
|
+
|
|
20328
|
+
/**
|
|
20329
|
+
* Test a scalar innovation against a chi-square NIS gate.
|
|
20330
|
+
*
|
|
20331
|
+
* Returns `{ nis, threshold, inGate, dof }`, with `confidence` in `(0, 1)`.
|
|
20332
|
+
* @param {number} innovation
|
|
20333
|
+
* @param {number} innovation_variance
|
|
20334
|
+
* @param {number} dof
|
|
20335
|
+
* @param {number} confidence
|
|
20336
|
+
* @returns {any}
|
|
20337
|
+
*/
|
|
20338
|
+
function nisGate(innovation, innovation_variance, dof, confidence) {
|
|
20339
|
+
const ret = wasm.nisGate(innovation, innovation_variance, dof, confidence);
|
|
20340
|
+
if (ret[2]) {
|
|
20341
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
20342
|
+
}
|
|
20343
|
+
return takeFromExternrefTable0(ret[0]);
|
|
20344
|
+
}
|
|
20345
|
+
exports.nisGate = nisGate;
|
|
20346
|
+
|
|
20347
|
+
/**
|
|
20348
|
+
* Chi-square NIS gate threshold for `dof` and confidence probability.
|
|
20349
|
+
* @param {number} dof
|
|
20350
|
+
* @param {number} confidence
|
|
20351
|
+
* @returns {number}
|
|
20352
|
+
*/
|
|
20353
|
+
function nisGateThreshold(dof, confidence) {
|
|
20354
|
+
const ret = wasm.nisGateThreshold(dof, confidence);
|
|
20355
|
+
if (ret[2]) {
|
|
20356
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
20357
|
+
}
|
|
20358
|
+
return ret[0];
|
|
20359
|
+
}
|
|
20360
|
+
exports.nisGateThreshold = nisGateThreshold;
|
|
20361
|
+
|
|
19571
20362
|
/**
|
|
19572
20363
|
* Parse bytes and return grouped epoch snapshots directly.
|
|
19573
20364
|
* @param {Uint8Array} bytes
|
|
@@ -19655,6 +20446,21 @@ function normalCovariance(jacobian, m, n, variance_scale) {
|
|
|
19655
20446
|
}
|
|
19656
20447
|
exports.normalCovariance = normalCovariance;
|
|
19657
20448
|
|
|
20449
|
+
/**
|
|
20450
|
+
* Scalar normalized innovation `innovation / sqrt(innovationVariance)`.
|
|
20451
|
+
* @param {number} innovation
|
|
20452
|
+
* @param {number} innovation_variance
|
|
20453
|
+
* @returns {number}
|
|
20454
|
+
*/
|
|
20455
|
+
function normalizedInnovation(innovation, innovation_variance) {
|
|
20456
|
+
const ret = wasm.normalizedInnovation(innovation, innovation_variance);
|
|
20457
|
+
if (ret[2]) {
|
|
20458
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
20459
|
+
}
|
|
20460
|
+
return ret[0];
|
|
20461
|
+
}
|
|
20462
|
+
exports.normalizedInnovation = normalizedInnovation;
|
|
20463
|
+
|
|
19658
20464
|
/**
|
|
19659
20465
|
* Build the NTRIP connection request bytes for a config object.
|
|
19660
20466
|
* @param {any} config
|
|
@@ -19671,6 +20477,43 @@ function ntripRequestBytes(config) {
|
|
|
19671
20477
|
}
|
|
19672
20478
|
exports.ntripRequestBytes = ntripRequestBytes;
|
|
19673
20479
|
|
|
20480
|
+
/**
|
|
20481
|
+
* Stable string label for an [`ObservabilityTier`] enum value.
|
|
20482
|
+
* @param {ObservabilityTier} tier
|
|
20483
|
+
* @returns {string}
|
|
20484
|
+
*/
|
|
20485
|
+
function observabilityTierLabel(tier) {
|
|
20486
|
+
let deferred1_0;
|
|
20487
|
+
let deferred1_1;
|
|
20488
|
+
try {
|
|
20489
|
+
const ret = wasm.observabilityTierLabel(tier);
|
|
20490
|
+
deferred1_0 = ret[0];
|
|
20491
|
+
deferred1_1 = ret[1];
|
|
20492
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
20493
|
+
} finally {
|
|
20494
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
20495
|
+
}
|
|
20496
|
+
}
|
|
20497
|
+
exports.observabilityTierLabel = observabilityTierLabel;
|
|
20498
|
+
|
|
20499
|
+
/**
|
|
20500
|
+
* Missing-position sentinel used in failed observable-state batch elements.
|
|
20501
|
+
*
|
|
20502
|
+
* The returned JS value is `[NaN, NaN, NaN]`, matching
|
|
20503
|
+
* `sidereon_core::ephemeris::OBSERVABLE_STATE_MISSING_POSITION_ECEF_M`. Always
|
|
20504
|
+
* check `elementResults[i].ok` or `statuses[i]` before using
|
|
20505
|
+
* `positionsEcefM[i]`.
|
|
20506
|
+
* @returns {any}
|
|
20507
|
+
*/
|
|
20508
|
+
function observableStateMissingPositionEcefM() {
|
|
20509
|
+
const ret = wasm.observableStateMissingPositionEcefM();
|
|
20510
|
+
if (ret[2]) {
|
|
20511
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
20512
|
+
}
|
|
20513
|
+
return takeFromExternrefTable0(ret[0]);
|
|
20514
|
+
}
|
|
20515
|
+
exports.observableStateMissingPositionEcefM = observableStateMissingPositionEcefM;
|
|
20516
|
+
|
|
19674
20517
|
/**
|
|
19675
20518
|
* Predict observables for one satellite from a broadcast ephemeris store.
|
|
19676
20519
|
* Delegates to `sidereon_core::observables::predict`.
|
|
@@ -21892,6 +22735,78 @@ function solveWithFallback(precise, broadcast, request, policy) {
|
|
|
21892
22735
|
}
|
|
21893
22736
|
exports.solveWithFallback = solveWithFallback;
|
|
21894
22737
|
|
|
22738
|
+
/**
|
|
22739
|
+
* Compute the timing Cramer-Rao lower bound for a proposed source position.
|
|
22740
|
+
*
|
|
22741
|
+
* The covariance is `(H^T H)^-1 * timingSigmaS^2`; position blocks are square
|
|
22742
|
+
* metres and origin-time variance is square seconds.
|
|
22743
|
+
* @param {any} sensors
|
|
22744
|
+
* @param {any} source_position_m
|
|
22745
|
+
* @param {number} propagation_speed_m_s
|
|
22746
|
+
* @param {number} timing_sigma_s
|
|
22747
|
+
* @returns {any}
|
|
22748
|
+
*/
|
|
22749
|
+
function sourceCrlb(sensors, source_position_m, propagation_speed_m_s, timing_sigma_s) {
|
|
22750
|
+
const ret = wasm.sourceCrlb(sensors, source_position_m, propagation_speed_m_s, timing_sigma_s);
|
|
22751
|
+
if (ret[2]) {
|
|
22752
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
22753
|
+
}
|
|
22754
|
+
return takeFromExternrefTable0(ret[0]);
|
|
22755
|
+
}
|
|
22756
|
+
exports.sourceCrlb = sourceCrlb;
|
|
22757
|
+
|
|
22758
|
+
/**
|
|
22759
|
+
* Compute timing DOP for a proposed source position.
|
|
22760
|
+
*
|
|
22761
|
+
* `sourcePositionM` is a 2D or 3D Cartesian metre vector in the same frame as
|
|
22762
|
+
* the sensors. The returned DOP values multiply timing sigma in seconds to
|
|
22763
|
+
* produce metres in the caller's Cartesian axes.
|
|
22764
|
+
* @param {any} sensors
|
|
22765
|
+
* @param {any} source_position_m
|
|
22766
|
+
* @param {number} propagation_speed_m_s
|
|
22767
|
+
* @returns {any}
|
|
22768
|
+
*/
|
|
22769
|
+
function sourceDop(sensors, source_position_m, propagation_speed_m_s) {
|
|
22770
|
+
const ret = wasm.sourceDop(sensors, source_position_m, propagation_speed_m_s);
|
|
22771
|
+
if (ret[2]) {
|
|
22772
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
22773
|
+
}
|
|
22774
|
+
return takeFromExternrefTable0(ret[0]);
|
|
22775
|
+
}
|
|
22776
|
+
exports.sourceDop = sourceDop;
|
|
22777
|
+
|
|
22778
|
+
/**
|
|
22779
|
+
* Return the plain mode object for TDOA solves against `referenceSensor`.
|
|
22780
|
+
* @param {number} reference_sensor
|
|
22781
|
+
* @returns {any}
|
|
22782
|
+
*/
|
|
22783
|
+
function sourceSolveModeTdoa(reference_sensor) {
|
|
22784
|
+
const ret = wasm.sourceSolveModeTdoa(reference_sensor);
|
|
22785
|
+
if (ret[2]) {
|
|
22786
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
22787
|
+
}
|
|
22788
|
+
return takeFromExternrefTable0(ret[0]);
|
|
22789
|
+
}
|
|
22790
|
+
exports.sourceSolveModeTdoa = sourceSolveModeTdoa;
|
|
22791
|
+
|
|
22792
|
+
/**
|
|
22793
|
+
* Return the plain mode value for absolute time-of-arrival solves.
|
|
22794
|
+
* @returns {string}
|
|
22795
|
+
*/
|
|
22796
|
+
function sourceSolveModeToa() {
|
|
22797
|
+
let deferred1_0;
|
|
22798
|
+
let deferred1_1;
|
|
22799
|
+
try {
|
|
22800
|
+
const ret = wasm.sourceSolveModeToa();
|
|
22801
|
+
deferred1_0 = ret[0];
|
|
22802
|
+
deferred1_1 = ret[1];
|
|
22803
|
+
return getStringFromWasm0(ret[0], ret[1]);
|
|
22804
|
+
} finally {
|
|
22805
|
+
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
22806
|
+
}
|
|
22807
|
+
}
|
|
22808
|
+
exports.sourceSolveModeToa = sourceSolveModeToa;
|
|
22809
|
+
|
|
21895
22810
|
/**
|
|
21896
22811
|
* Extract a parsed SP3 product as the canonical precise-ephemeris samples, one
|
|
21897
22812
|
* per real position record in ascending epoch order.
|
|
@@ -23176,6 +24091,9 @@ const FrameStatesFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
|
23176
24091
|
const GeoidGridFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
23177
24092
|
? { register: () => {}, unregister: () => {} }
|
|
23178
24093
|
: new FinalizationRegistry(ptr => wasm.__wbg_geoidgrid_free(ptr, 1));
|
|
24094
|
+
const GeometryQualityFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
24095
|
+
? { register: () => {}, unregister: () => {} }
|
|
24096
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_geometryquality_free(ptr, 1));
|
|
23179
24097
|
const GlonassRecordJsFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
23180
24098
|
? { register: () => {}, unregister: () => {} }
|
|
23181
24099
|
: new FinalizationRegistry(ptr => wasm.__wbg_glonassrecordjs_free(ptr, 1));
|
|
@@ -23362,6 +24280,9 @@ const PppFixedSolutionFinalization = (typeof FinalizationRegistry === 'undefined
|
|
|
23362
24280
|
const PppFloatSolutionFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
23363
24281
|
? { register: () => {}, unregister: () => {} }
|
|
23364
24282
|
: new FinalizationRegistry(ptr => wasm.__wbg_pppfloatsolution_free(ptr, 1));
|
|
24283
|
+
const PreciseEphemerisInterpolantFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
24284
|
+
? { register: () => {}, unregister: () => {} }
|
|
24285
|
+
: new FinalizationRegistry(ptr => wasm.__wbg_preciseephemerisinterpolant_free(ptr, 1));
|
|
23365
24286
|
const PreciseEphemerisSampleSourceFinalization = (typeof FinalizationRegistry === 'undefined')
|
|
23366
24287
|
? { register: () => {}, unregister: () => {} }
|
|
23367
24288
|
: new FinalizationRegistry(ptr => wasm.__wbg_preciseephemerissamplesource_free(ptr, 1));
|