@neilberkman/sidereon 0.8.1 → 0.9.1
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/README.md +123 -76
- package/package.json +18 -2
- package/pkg/sidereon.d.ts +5060 -1415
- package/pkg/sidereon.js +8715 -850
- package/pkg/sidereon_bg.wasm +0 -0
- package/pkg/sidereon_bg.wasm.d.ts +1012 -521
- package/pkg-node/sidereon.d.ts +3286 -132
- package/pkg-node/sidereon.js +8880 -852
- package/pkg-node/sidereon_bg.wasm +0 -0
- package/pkg-node/sidereon_bg.wasm.d.ts +1012 -521
- package/types/sidereon-extra.d.ts +1417 -7
package/pkg-node/sidereon.d.ts
CHANGED
|
@@ -145,6 +145,12 @@ export class Antex {
|
|
|
145
145
|
* Return the satellite antenna for `prn` valid at `epoch`, or `undefined`.
|
|
146
146
|
*/
|
|
147
147
|
satelliteAntenna(prn: string, epoch: AntexDateTime): Antenna | undefined;
|
|
148
|
+
/**
|
|
149
|
+
* Serialize to standard ANTEX 1.4 text. Deterministic: the same product
|
|
150
|
+
* always produces byte-identical text, and re-parsing the output yields an
|
|
151
|
+
* equal product.
|
|
152
|
+
*/
|
|
153
|
+
toAntexString(): string;
|
|
148
154
|
/**
|
|
149
155
|
* Number of antenna blocks parsed from the product.
|
|
150
156
|
*/
|
|
@@ -210,6 +216,23 @@ export class AppliedCorrections {
|
|
|
210
216
|
readonly dropped: string[];
|
|
211
217
|
}
|
|
212
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Total mass density and temperature at altitude from NRLMSISE-00.
|
|
221
|
+
*/
|
|
222
|
+
export class AtmosphereDensity {
|
|
223
|
+
private constructor();
|
|
224
|
+
free(): void;
|
|
225
|
+
[Symbol.dispose](): void;
|
|
226
|
+
/**
|
|
227
|
+
* Total mass density, kilograms per cubic metre.
|
|
228
|
+
*/
|
|
229
|
+
readonly densityKgM3: number;
|
|
230
|
+
/**
|
|
231
|
+
* Temperature at the requested altitude, kelvin.
|
|
232
|
+
*/
|
|
233
|
+
readonly temperatureK: number;
|
|
234
|
+
}
|
|
235
|
+
|
|
213
236
|
/**
|
|
214
237
|
* A parsed broadcast ephemeris store from a RINEX NAV file. `records` are the
|
|
215
238
|
* usable GPS/Galileo/BeiDou records selected by the core default SPP policy.
|
|
@@ -230,6 +253,23 @@ export class BroadcastEphemeris {
|
|
|
230
253
|
* fields are `null` where no compared epoch populated them.
|
|
231
254
|
*/
|
|
232
255
|
compareToSp3(precise: Sp3, satellites: string[], from_j2000_s: number, to_j2000_s: number, step_s: number): any;
|
|
256
|
+
/**
|
|
257
|
+
* Compare this broadcast product against a precise SP3 product over a regular
|
|
258
|
+
* sampling window, letting the core window driver build the per-epoch grid.
|
|
259
|
+
*
|
|
260
|
+
* The window-form sibling of [`compareToSp3`]: instead of building the
|
|
261
|
+
* per-epoch keys here, this hands the core
|
|
262
|
+
* `sidereon_core::broadcast_comparison::compare_window` a `CompareWindow`
|
|
263
|
+
* (the inclusive `[fromJ2000S, toJ2000S]` broadcast span, the precise split
|
|
264
|
+
* Julian-date anchor for the window start, the `stepS` sampling step, and the
|
|
265
|
+
* velocity finite-difference half step) so the grid sampling, the final snap
|
|
266
|
+
* to the window end, and the lockstep precise-date advance all run in core.
|
|
267
|
+
* The precise anchor is derived from `fromJ2000S` (both products share GPS
|
|
268
|
+
* system time, as in [`compareToSp3`]), and `velocityHalfS` defaults to
|
|
269
|
+
* `round(stepS / 2)`. Returns the same `{ overall, perSatellite, missing }`
|
|
270
|
+
* report shape.
|
|
271
|
+
*/
|
|
272
|
+
compareWindowToSp3(precise: Sp3, satellites: string[], from_j2000_s: number, to_j2000_s: number, step_s: number, velocity_half_s?: number | null): any;
|
|
233
273
|
/**
|
|
234
274
|
* Solve a receiver position from broadcast ephemeris ALONE: the supported
|
|
235
275
|
* real-time / offline single-point-positioning mode. `request` is the same
|
|
@@ -237,6 +277,14 @@ export class BroadcastEphemeris {
|
|
|
237
277
|
* solving against this broadcast store as an ephemeris source.
|
|
238
278
|
*/
|
|
239
279
|
solveBroadcast(request: any): SppSolution;
|
|
280
|
+
/**
|
|
281
|
+
* Serialize the usable GPS, Galileo, and BeiDou broadcast records to
|
|
282
|
+
* standard RINEX 3 navigation text. Deterministic: the same record set
|
|
283
|
+
* always produces byte-identical text, and re-parsing the output yields the
|
|
284
|
+
* same records. GLONASS state-vector records are not part of the Keplerian
|
|
285
|
+
* broadcast-orbit grammar this writer emits and are therefore not included.
|
|
286
|
+
*/
|
|
287
|
+
toRinexString(): string;
|
|
240
288
|
/**
|
|
241
289
|
* Number of usable GLONASS records.
|
|
242
290
|
*/
|
|
@@ -577,23 +625,62 @@ export class CdmObject {
|
|
|
577
625
|
[Symbol.dispose](): void;
|
|
578
626
|
/**
|
|
579
627
|
* Build a CDM object. `positionKm` / `velocityKmS` are length-3
|
|
580
|
-
* `Float64Array`s; `covarianceRtn` is the length-6 RTN lower triangle
|
|
581
|
-
* `[CR_R, CT_R, CT_T, CN_R, CN_T, CN_N]`. `meta` carries the optional
|
|
582
|
-
*
|
|
628
|
+
* `Float64Array`s; `covarianceRtn` is the length-6 RTN position lower triangle
|
|
629
|
+
* `[CR_R, CT_R, CT_T, CN_R, CN_T, CN_N]`. `meta` carries the optional CCSDS
|
|
630
|
+
* metadata block (`objectDesignator`, `catalogName`, `objectName`,
|
|
631
|
+
* `internationalDesignator`, `objectType`, `operatorContactPosition`,
|
|
632
|
+
* `operatorOrganization`, `operatorPhone`, `operatorEmail`, `ephemerisName`,
|
|
633
|
+
* `covarianceMethod`, `maneuverable`, `orbitCenter`, `refFrame`,
|
|
634
|
+
* `gravityModel`, `atmosphericModel`, `nBodyPerturbations`,
|
|
635
|
+
* `solarRadPressure`, `earthTides`, `intrackThrust`) and the optional
|
|
636
|
+
* `velocityCovarianceRtn`, a length-15 `Float64Array` of the RTN
|
|
637
|
+
* velocity-covariance rows that complete the 6x6 matrix.
|
|
583
638
|
*/
|
|
584
639
|
constructor(position_km: Float64Array, velocity_km_s: Float64Array, covariance_rtn: Float64Array, meta: any);
|
|
640
|
+
/**
|
|
641
|
+
* Atmospheric model.
|
|
642
|
+
*/
|
|
643
|
+
readonly atmosphericModel: string | undefined;
|
|
585
644
|
/**
|
|
586
645
|
* Catalog name.
|
|
587
646
|
*/
|
|
588
647
|
readonly catalogName: string | undefined;
|
|
648
|
+
/**
|
|
649
|
+
* Covariance method.
|
|
650
|
+
*/
|
|
651
|
+
readonly covarianceMethod: string | undefined;
|
|
589
652
|
/**
|
|
590
653
|
* RTN position-covariance lower triangle, length-6 `Float64Array`.
|
|
591
654
|
*/
|
|
592
655
|
readonly covarianceRtn: Float64Array;
|
|
656
|
+
/**
|
|
657
|
+
* Earth-tides indicator.
|
|
658
|
+
*/
|
|
659
|
+
readonly earthTides: string | undefined;
|
|
660
|
+
/**
|
|
661
|
+
* Ephemeris name.
|
|
662
|
+
*/
|
|
663
|
+
readonly ephemerisName: string | undefined;
|
|
664
|
+
/**
|
|
665
|
+
* Gravity model.
|
|
666
|
+
*/
|
|
667
|
+
readonly gravityModel: string | undefined;
|
|
593
668
|
/**
|
|
594
669
|
* International designator (COSPAR ID).
|
|
595
670
|
*/
|
|
596
671
|
readonly internationalDesignator: string | undefined;
|
|
672
|
+
/**
|
|
673
|
+
* In-track-thrust indicator.
|
|
674
|
+
*/
|
|
675
|
+
readonly intrackThrust: string | undefined;
|
|
676
|
+
/**
|
|
677
|
+
* Maneuverability indicator.
|
|
678
|
+
*/
|
|
679
|
+
readonly maneuverable: string | undefined;
|
|
680
|
+
/**
|
|
681
|
+
* N-body perturbations indicator.
|
|
682
|
+
*/
|
|
683
|
+
readonly nBodyPerturbations: string | undefined;
|
|
597
684
|
/**
|
|
598
685
|
* Object designator.
|
|
599
686
|
*/
|
|
@@ -606,6 +693,26 @@ export class CdmObject {
|
|
|
606
693
|
* Object type.
|
|
607
694
|
*/
|
|
608
695
|
readonly objectType: string | undefined;
|
|
696
|
+
/**
|
|
697
|
+
* Operator contact position.
|
|
698
|
+
*/
|
|
699
|
+
readonly operatorContactPosition: string | undefined;
|
|
700
|
+
/**
|
|
701
|
+
* Operator email.
|
|
702
|
+
*/
|
|
703
|
+
readonly operatorEmail: string | undefined;
|
|
704
|
+
/**
|
|
705
|
+
* Operator organization.
|
|
706
|
+
*/
|
|
707
|
+
readonly operatorOrganization: string | undefined;
|
|
708
|
+
/**
|
|
709
|
+
* Operator phone.
|
|
710
|
+
*/
|
|
711
|
+
readonly operatorPhone: string | undefined;
|
|
712
|
+
/**
|
|
713
|
+
* Orbit center.
|
|
714
|
+
*/
|
|
715
|
+
readonly orbitCenter: string | undefined;
|
|
609
716
|
/**
|
|
610
717
|
* Position vector, kilometres, length-3 `Float64Array`.
|
|
611
718
|
*/
|
|
@@ -614,6 +721,16 @@ export class CdmObject {
|
|
|
614
721
|
* Reference frame.
|
|
615
722
|
*/
|
|
616
723
|
readonly refFrame: string | undefined;
|
|
724
|
+
/**
|
|
725
|
+
* Solar-radiation-pressure indicator.
|
|
726
|
+
*/
|
|
727
|
+
readonly solarRadPressure: string | undefined;
|
|
728
|
+
/**
|
|
729
|
+
* RTN velocity-covariance rows completing the 6x6 matrix, a length-15
|
|
730
|
+
* `Float64Array` in CCSDS order (`CRDOT_R` .. `CNDOT_NDOT`), or `undefined`
|
|
731
|
+
* when the producer carried only the position covariance block.
|
|
732
|
+
*/
|
|
733
|
+
readonly velocityCovarianceRtn: Float64Array | undefined;
|
|
617
734
|
/**
|
|
618
735
|
* Velocity vector, km/s, length-3 `Float64Array`.
|
|
619
736
|
*/
|
|
@@ -643,6 +760,39 @@ export class ChecksumWarning {
|
|
|
643
760
|
readonly lineLabel: string;
|
|
644
761
|
}
|
|
645
762
|
|
|
763
|
+
/**
|
|
764
|
+
* Civil calendar fields from a no-leap core time conversion.
|
|
765
|
+
*/
|
|
766
|
+
export class CivilDateTime {
|
|
767
|
+
private constructor();
|
|
768
|
+
free(): void;
|
|
769
|
+
[Symbol.dispose](): void;
|
|
770
|
+
/**
|
|
771
|
+
* Civil day of month.
|
|
772
|
+
*/
|
|
773
|
+
readonly day: bigint;
|
|
774
|
+
/**
|
|
775
|
+
* Civil hour of day.
|
|
776
|
+
*/
|
|
777
|
+
readonly hour: bigint;
|
|
778
|
+
/**
|
|
779
|
+
* Civil minute of hour.
|
|
780
|
+
*/
|
|
781
|
+
readonly minute: bigint;
|
|
782
|
+
/**
|
|
783
|
+
* Civil month, 1-12.
|
|
784
|
+
*/
|
|
785
|
+
readonly month: bigint;
|
|
786
|
+
/**
|
|
787
|
+
* Whole civil second of minute.
|
|
788
|
+
*/
|
|
789
|
+
readonly second: bigint;
|
|
790
|
+
/**
|
|
791
|
+
* Civil year.
|
|
792
|
+
*/
|
|
793
|
+
readonly year: bigint;
|
|
794
|
+
}
|
|
795
|
+
|
|
646
796
|
/**
|
|
647
797
|
* A civil GPS-time epoch for RINEX clock interpolation. Calendar fields are
|
|
648
798
|
* interpreted in GPS time; `gpsSeconds` is seconds since 1980-01-06 GPST.
|
|
@@ -762,6 +912,90 @@ export class ConjunctionState {
|
|
|
762
912
|
readonly velocityKmS: Float64Array;
|
|
763
913
|
}
|
|
764
914
|
|
|
915
|
+
/**
|
|
916
|
+
* A built-once constellation of already-initialized SGP4 satellites for repeated
|
|
917
|
+
* batch operations.
|
|
918
|
+
*
|
|
919
|
+
* Build it once from parsed [`Tle`]s, then call [`Constellation.propagate`] (and
|
|
920
|
+
* `visible` / `lookAngleArcs` / `groundTracks` / `passes`) as often as you like:
|
|
921
|
+
* it OWNS its satellites and BORROWS them on each call, so unlike the free
|
|
922
|
+
* [`propagateBatch`] (which consumes the `Tle` handles it is given) the same
|
|
923
|
+
* `Constellation` drives a live scene across frames with no re-parse and no
|
|
924
|
+
* per-frame handle churn. This is the JS form of Elixir's `Sidereon.Constellation`.
|
|
925
|
+
*
|
|
926
|
+
* It does no parsing or I/O: TLE text becomes satellites at the interface
|
|
927
|
+
* boundary ([`Tle`] / [`parseTleFile`]); the constellation only batches the core
|
|
928
|
+
* geometry over the satellites it was handed.
|
|
929
|
+
*/
|
|
930
|
+
export class Constellation {
|
|
931
|
+
free(): void;
|
|
932
|
+
[Symbol.dispose](): void;
|
|
933
|
+
/**
|
|
934
|
+
* Sub-satellite WGS84 ground tracks for every satellite over a shared epoch
|
|
935
|
+
* grid, in fleet order (element `i` is satellite `i`'s track), each reduced
|
|
936
|
+
* TEME->GCRS->ITRS->geodetic by the engine's validated transforms. A satellite
|
|
937
|
+
* that fails yields an empty track, keeping the result index-aligned. The
|
|
938
|
+
* batched form of [`Tle.groundTrack`].
|
|
939
|
+
*/
|
|
940
|
+
groundTracks(epochs_unix_us: BigInt64Array): GroundTrack[];
|
|
941
|
+
/**
|
|
942
|
+
* Topocentric az/el/range arcs from `station` for every satellite over a
|
|
943
|
+
* shared epoch grid, in fleet order (element `i` is satellite `i`'s arc). A
|
|
944
|
+
* satellite that fails to propagate yields an empty arc, so the result stays
|
|
945
|
+
* index-aligned with the constellation. The batched form of [`Tle.lookAngles`].
|
|
946
|
+
*/
|
|
947
|
+
lookAngleArcs(station: GroundStation, epochs_unix_us: BigInt64Array): LookAngles[];
|
|
948
|
+
/**
|
|
949
|
+
* Build a constellation from already-parsed [`Tle`]s, taking ownership of
|
|
950
|
+
* them. Each `Tle` keeps the opsmode it was constructed with, and its NORAD
|
|
951
|
+
* catalog number becomes the satellite's id in `visible`. The input order is
|
|
952
|
+
* the fleet order (the leading axis of every batch result and the
|
|
953
|
+
* `satelliteIndex` of every pass). The `Tle` handles are consumed; clone first
|
|
954
|
+
* (`tle.clone()`) to keep a per-satellite handle.
|
|
955
|
+
*/
|
|
956
|
+
constructor(satellites: Tle[]);
|
|
957
|
+
/**
|
|
958
|
+
* Passes over `station` within `[startUnixUs, endUnixUs)` for every satellite,
|
|
959
|
+
* flattened across the constellation: each [`FleetPass`] carries the
|
|
960
|
+
* `satelliteIndex` (fleet-order) it belongs to. `elevationMaskDeg` defaults to
|
|
961
|
+
* 0, `stepSeconds` to 30, `timeToleranceS` to 1e-3. A satellite that fails to
|
|
962
|
+
* scan contributes no passes. Throws a `RangeError` on a non-positive step or
|
|
963
|
+
* an end at or before the start.
|
|
964
|
+
*/
|
|
965
|
+
passes(station: GroundStation, start_unix_us: bigint, end_unix_us: bigint, elevation_mask_deg?: number | null, step_seconds?: number | null, time_tolerance_s?: number | null): FleetPass[];
|
|
966
|
+
/**
|
|
967
|
+
* Propagate the whole constellation over a shared epoch grid in one call,
|
|
968
|
+
* borrowing it (NOT consumed, so the same `Constellation` drives every frame).
|
|
969
|
+
*
|
|
970
|
+
* `epochsUnixUs` is a `BigInt64Array` of unix-microsecond UTC epochs shared
|
|
971
|
+
* by every satellite. Element `(i, j)` of the result is satellite `i`
|
|
972
|
+
* propagated to epoch `j`, bit-for-bit identical to the per-satellite
|
|
973
|
+
* [`Tle.propagate`] path. A satellite that fails to propagate yields `NaN`
|
|
974
|
+
* for all of its epochs, keeping the result index-aligned (mirroring Elixir's
|
|
975
|
+
* `propagate_all`, which surfaces per-satellite outcomes rather than failing
|
|
976
|
+
* the whole batch). An empty constellation or empty epoch grid yields empty
|
|
977
|
+
* arrays.
|
|
978
|
+
*/
|
|
979
|
+
propagate(epochs_unix_us: BigInt64Array): FleetPropagation;
|
|
980
|
+
/**
|
|
981
|
+
* Satellites above `minElevationDeg` from `station` at a single epoch, each
|
|
982
|
+
* with its catalog number and topocentric az/el/range, sorted by elevation
|
|
983
|
+
* (highest first). The constellation form of the core `visibleFromSatellites`
|
|
984
|
+
* (Elixir `Constellation.visible_from`). Throws on an invalid station or
|
|
985
|
+
* elevation threshold.
|
|
986
|
+
*/
|
|
987
|
+
visible(station: GroundStation, epoch_unix_us: bigint, min_elevation_deg: number): VisibleSatellite[];
|
|
988
|
+
/**
|
|
989
|
+
* The satellites' NORAD catalog numbers, in fleet order.
|
|
990
|
+
*/
|
|
991
|
+
readonly catalogNumbers: string[];
|
|
992
|
+
/**
|
|
993
|
+
* Number of satellites in the constellation (the leading axis of every batch
|
|
994
|
+
* result).
|
|
995
|
+
*/
|
|
996
|
+
readonly satelliteCount: number;
|
|
997
|
+
}
|
|
998
|
+
|
|
765
999
|
/**
|
|
766
1000
|
* Coherent GPS C/A correlation result.
|
|
767
1001
|
*/
|
|
@@ -783,6 +1017,49 @@ export class CorrelationResult {
|
|
|
783
1017
|
readonly q: number;
|
|
784
1018
|
}
|
|
785
1019
|
|
|
1020
|
+
/**
|
|
1021
|
+
* A computed look-angle grid for a set of satellites and ground stations at one
|
|
1022
|
+
* epoch. Build with [`coverageLookAngles`].
|
|
1023
|
+
*/
|
|
1024
|
+
export class CoverageGrid {
|
|
1025
|
+
private constructor();
|
|
1026
|
+
free(): void;
|
|
1027
|
+
[Symbol.dispose](): void;
|
|
1028
|
+
/**
|
|
1029
|
+
* Number of visible satellites per station at `minElevationDeg`, as a flat
|
|
1030
|
+
* array of length `stationCount`. Delegates to
|
|
1031
|
+
* `sidereon_core::astro::coverage::access_counts`.
|
|
1032
|
+
*/
|
|
1033
|
+
accessCounts(min_elevation_deg: number): Uint32Array;
|
|
1034
|
+
/**
|
|
1035
|
+
* The look angle for one satellite/station pair as `[azimuthDeg,
|
|
1036
|
+
* elevationDeg, rangeKm]`, or `undefined` when that cell failed (the
|
|
1037
|
+
* satellite was below the horizon geometry the kernel rejects) or the
|
|
1038
|
+
* indices are out of range.
|
|
1039
|
+
*/
|
|
1040
|
+
lookAngle(satellite_index: number, station_index: number): Float64Array | undefined;
|
|
1041
|
+
/**
|
|
1042
|
+
* Maximum successful elevation per station, degrees, as a flat array of
|
|
1043
|
+
* length `stationCount`. A station with no successful cell reports `NaN`.
|
|
1044
|
+
* Delegates to `sidereon_core::astro::coverage::max_elevation`.
|
|
1045
|
+
*/
|
|
1046
|
+
maxElevationDeg(): Float64Array;
|
|
1047
|
+
/**
|
|
1048
|
+
* Row-major `[satellite][station]` visibility mask at `minElevationDeg`, as a
|
|
1049
|
+
* flat `Uint8Array` of `1` (visible) / `0`. Error cells are not visible.
|
|
1050
|
+
* Delegates to `sidereon_core::astro::coverage::visible_mask`.
|
|
1051
|
+
*/
|
|
1052
|
+
visibleMask(min_elevation_deg: number): Uint8Array;
|
|
1053
|
+
/**
|
|
1054
|
+
* Number of satellites (grid rows).
|
|
1055
|
+
*/
|
|
1056
|
+
readonly satelliteCount: number;
|
|
1057
|
+
/**
|
|
1058
|
+
* Number of ground stations (grid columns).
|
|
1059
|
+
*/
|
|
1060
|
+
readonly stationCount: number;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
786
1063
|
/**
|
|
787
1064
|
* A DGNSS rover solve: the corrected SPP solution plus the base-relative
|
|
788
1065
|
* baseline.
|
|
@@ -860,6 +1137,50 @@ export class Dop {
|
|
|
860
1137
|
* Position DOP.
|
|
861
1138
|
*/
|
|
862
1139
|
readonly pdop: number;
|
|
1140
|
+
/**
|
|
1141
|
+
* Per-clock-column time DOP: entry `i` is the cofactor standard deviation
|
|
1142
|
+
* of the `i`-th clock state, indexed by clock column rather than tagged by
|
|
1143
|
+
* constellation. The geometry-only `dop` path (`fromAzEl`,
|
|
1144
|
+
* `fromLineOfSight`, `gnssDop`) carries no constellation context, so it
|
|
1145
|
+
* leaves this **empty**; read the lone clock's value off [`tdop`](Self::tdop).
|
|
1146
|
+
* Per-system entries are only populated on the multi-clock SPP path; pair
|
|
1147
|
+
* them with that solve's system ordering via `SppSolution.systemTdops`.
|
|
1148
|
+
*/
|
|
1149
|
+
readonly systemTdops: Float64Array;
|
|
1150
|
+
/**
|
|
1151
|
+
* Time DOP.
|
|
1152
|
+
*/
|
|
1153
|
+
readonly tdop: number;
|
|
1154
|
+
/**
|
|
1155
|
+
* Vertical DOP.
|
|
1156
|
+
*/
|
|
1157
|
+
readonly vdop: number;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
/**
|
|
1161
|
+
* Exact DOP at one epoch: the scalars plus the satellites that contributed
|
|
1162
|
+
* rows, from `gnssDopAtEpoch`.
|
|
1163
|
+
*/
|
|
1164
|
+
export class DopGeometry {
|
|
1165
|
+
private constructor();
|
|
1166
|
+
free(): void;
|
|
1167
|
+
[Symbol.dispose](): void;
|
|
1168
|
+
/**
|
|
1169
|
+
* Geometric DOP.
|
|
1170
|
+
*/
|
|
1171
|
+
readonly gdop: number;
|
|
1172
|
+
/**
|
|
1173
|
+
* Horizontal DOP.
|
|
1174
|
+
*/
|
|
1175
|
+
readonly hdop: number;
|
|
1176
|
+
/**
|
|
1177
|
+
* Position DOP.
|
|
1178
|
+
*/
|
|
1179
|
+
readonly pdop: number;
|
|
1180
|
+
/**
|
|
1181
|
+
* Satellite tokens that contributed line-of-sight rows.
|
|
1182
|
+
*/
|
|
1183
|
+
readonly satellites: string[];
|
|
863
1184
|
/**
|
|
864
1185
|
* Time DOP.
|
|
865
1186
|
*/
|
|
@@ -920,6 +1241,64 @@ export class DopSeries {
|
|
|
920
1241
|
readonly vdop: Float64Array;
|
|
921
1242
|
}
|
|
922
1243
|
|
|
1244
|
+
/**
|
|
1245
|
+
* One sampled exact-DOP point over a uniform window, from `gnssDopSeriesWindow`.
|
|
1246
|
+
*/
|
|
1247
|
+
export class DopSeriesSample {
|
|
1248
|
+
private constructor();
|
|
1249
|
+
free(): void;
|
|
1250
|
+
[Symbol.dispose](): void;
|
|
1251
|
+
/**
|
|
1252
|
+
* Geometric DOP.
|
|
1253
|
+
*/
|
|
1254
|
+
readonly gdop: number;
|
|
1255
|
+
/**
|
|
1256
|
+
* Horizontal DOP.
|
|
1257
|
+
*/
|
|
1258
|
+
readonly hdop: number;
|
|
1259
|
+
/**
|
|
1260
|
+
* Position DOP.
|
|
1261
|
+
*/
|
|
1262
|
+
readonly pdop: number;
|
|
1263
|
+
/**
|
|
1264
|
+
* Satellite tokens that contributed rows at this sample.
|
|
1265
|
+
*/
|
|
1266
|
+
readonly satellites: string[];
|
|
1267
|
+
/**
|
|
1268
|
+
* Zero-based sample index from the window start.
|
|
1269
|
+
*/
|
|
1270
|
+
readonly stepIndex: number;
|
|
1271
|
+
/**
|
|
1272
|
+
* Time DOP.
|
|
1273
|
+
*/
|
|
1274
|
+
readonly tdop: number;
|
|
1275
|
+
/**
|
|
1276
|
+
* Vertical DOP.
|
|
1277
|
+
*/
|
|
1278
|
+
readonly vdop: number;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1281
|
+
/**
|
|
1282
|
+
* Range-rate and Doppler result for a carrier frequency.
|
|
1283
|
+
*/
|
|
1284
|
+
export class DopplerShift {
|
|
1285
|
+
private constructor();
|
|
1286
|
+
free(): void;
|
|
1287
|
+
[Symbol.dispose](): void;
|
|
1288
|
+
/**
|
|
1289
|
+
* Carrier Doppler shift, hertz; positive means a frequency increase.
|
|
1290
|
+
*/
|
|
1291
|
+
readonly dopplerHz: number;
|
|
1292
|
+
/**
|
|
1293
|
+
* Dimensionless Doppler ratio; positive means approaching the station.
|
|
1294
|
+
*/
|
|
1295
|
+
readonly dopplerRatio: number;
|
|
1296
|
+
/**
|
|
1297
|
+
* Range rate, kilometres per second; positive means receding.
|
|
1298
|
+
*/
|
|
1299
|
+
readonly rangeRateKmS: number;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
923
1302
|
/**
|
|
924
1303
|
* Orthonormal encounter frame built from two relative states.
|
|
925
1304
|
*/
|
|
@@ -988,6 +1367,37 @@ export class Ephemeris {
|
|
|
988
1367
|
readonly velocityKmS: Float64Array;
|
|
989
1368
|
}
|
|
990
1369
|
|
|
1370
|
+
/**
|
|
1371
|
+
* A confidence ellipse from a 2x2 covariance block: semi-axes scaled by the
|
|
1372
|
+
* two-degree-of-freedom chi-square quantile `-2 ln(1 - confidence)`.
|
|
1373
|
+
*/
|
|
1374
|
+
export class ErrorEllipse2 {
|
|
1375
|
+
private constructor();
|
|
1376
|
+
free(): void;
|
|
1377
|
+
[Symbol.dispose](): void;
|
|
1378
|
+
/**
|
|
1379
|
+
* Two-degree-of-freedom chi-square scale `-2 ln(1 - confidence)`.
|
|
1380
|
+
*/
|
|
1381
|
+
readonly chiSquareScale: number;
|
|
1382
|
+
/**
|
|
1383
|
+
* Requested confidence probability in `(0, 1)`.
|
|
1384
|
+
*/
|
|
1385
|
+
readonly confidence: number;
|
|
1386
|
+
/**
|
|
1387
|
+
* Semi-major-axis orientation in radians, from the first (row/col 0) axis
|
|
1388
|
+
* toward the second (row/col 1) axis.
|
|
1389
|
+
*/
|
|
1390
|
+
readonly orientationRad: number;
|
|
1391
|
+
/**
|
|
1392
|
+
* Semi-major axis length (same unit as the square root of the covariance).
|
|
1393
|
+
*/
|
|
1394
|
+
readonly semiMajor: number;
|
|
1395
|
+
/**
|
|
1396
|
+
* Semi-minor axis length.
|
|
1397
|
+
*/
|
|
1398
|
+
readonly semiMinor: number;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
991
1401
|
/**
|
|
992
1402
|
* A fault-detection-and-exclusion result: the surviving solution, the excluded
|
|
993
1403
|
* satellites in exclusion order, and the number of exclusions performed.
|
|
@@ -1027,65 +1437,191 @@ export class FdeSolution {
|
|
|
1027
1437
|
}
|
|
1028
1438
|
|
|
1029
1439
|
/**
|
|
1030
|
-
*
|
|
1031
|
-
* `
|
|
1440
|
+
* One pass in a [`Constellation.passes`] result: the pass geometry plus the
|
|
1441
|
+
* fleet-order `satelliteIndex` of the satellite it belongs to (map that index to
|
|
1442
|
+
* your own per-satellite metadata).
|
|
1032
1443
|
*/
|
|
1033
|
-
export class
|
|
1444
|
+
export class FleetPass {
|
|
1034
1445
|
private constructor();
|
|
1035
1446
|
free(): void;
|
|
1036
1447
|
[Symbol.dispose](): void;
|
|
1037
1448
|
/**
|
|
1038
|
-
*
|
|
1449
|
+
* AOS (acquisition of signal), unix microseconds.
|
|
1039
1450
|
*/
|
|
1040
|
-
readonly
|
|
1451
|
+
readonly aosUnixUs: bigint;
|
|
1041
1452
|
/**
|
|
1042
|
-
*
|
|
1453
|
+
* Culmination (peak elevation) time, unix microseconds.
|
|
1043
1454
|
*/
|
|
1044
|
-
readonly
|
|
1455
|
+
readonly culminationUnixUs: bigint;
|
|
1045
1456
|
/**
|
|
1046
|
-
*
|
|
1457
|
+
* LOS (loss of signal), unix microseconds.
|
|
1047
1458
|
*/
|
|
1048
|
-
readonly
|
|
1459
|
+
readonly losUnixUs: bigint;
|
|
1460
|
+
/**
|
|
1461
|
+
* Peak elevation during the pass, degrees.
|
|
1462
|
+
*/
|
|
1463
|
+
readonly maxElevationDeg: number;
|
|
1464
|
+
/**
|
|
1465
|
+
* Fleet-order index of the satellite this pass belongs to.
|
|
1466
|
+
*/
|
|
1467
|
+
readonly satelliteIndex: number;
|
|
1049
1468
|
}
|
|
1050
1469
|
|
|
1051
1470
|
/**
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1471
|
+
* TEME states from a batched fleet SGP4 propagation. Each array is flat
|
|
1472
|
+
* row-major with shape `(satelliteCount, epochCount, 3)`: satellite `i`'s arc
|
|
1473
|
+
* occupies the contiguous slice `[i * epochCount * 3 .. (i + 1) * epochCount *
|
|
1474
|
+
* 3]`, and within it epoch `j` is `[.. j * 3 + 3]`. Satellite `i`'s arc equals
|
|
1475
|
+
* the [`TlePropagation`] from `satellites[i].propagate(epochsUnixUs)`.
|
|
1054
1476
|
*/
|
|
1055
|
-
export class
|
|
1477
|
+
export class FleetPropagation {
|
|
1056
1478
|
private constructor();
|
|
1057
1479
|
free(): void;
|
|
1058
1480
|
[Symbol.dispose](): void;
|
|
1059
1481
|
/**
|
|
1060
|
-
*
|
|
1482
|
+
* Number of epochs each satellite was propagated to (the second axis).
|
|
1061
1483
|
*/
|
|
1062
|
-
readonly
|
|
1484
|
+
readonly epochCount: number;
|
|
1063
1485
|
/**
|
|
1064
|
-
*
|
|
1486
|
+
* TEME positions, km, flat row-major `(satelliteCount, epochCount, 3)`,
|
|
1487
|
+
* length `3 * satelliteCount * epochCount`.
|
|
1065
1488
|
*/
|
|
1066
|
-
readonly
|
|
1489
|
+
readonly positionKm: Float64Array;
|
|
1067
1490
|
/**
|
|
1068
|
-
*
|
|
1491
|
+
* Number of satellites in the fleet (the leading axis).
|
|
1069
1492
|
*/
|
|
1070
|
-
readonly
|
|
1493
|
+
readonly satelliteCount: number;
|
|
1071
1494
|
/**
|
|
1072
|
-
*
|
|
1495
|
+
* TEME velocities, km/s, flat row-major `(satelliteCount, epochCount, 3)`,
|
|
1496
|
+
* length `3 * satelliteCount * epochCount`.
|
|
1073
1497
|
*/
|
|
1074
|
-
readonly
|
|
1498
|
+
readonly velocityKmS: Float64Array;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
/**
|
|
1502
|
+
* A forgiving RTCM 3 stream scanner: slides over a byte buffer, resynchronizes
|
|
1503
|
+
* on the next `0xD3` preamble whenever the length overruns or the CRC fails, and
|
|
1504
|
+
* yields only frames whose CRC verifies, exactly as a receiver locks onto a
|
|
1505
|
+
* serial feed.
|
|
1506
|
+
*
|
|
1507
|
+
* Wraps `sidereon_core::rtcm::FrameScanner`: construction runs the scan to
|
|
1508
|
+
* completion (the core iterator owns the scanning logic) and `next()` walks the
|
|
1509
|
+
* yielded frames.
|
|
1510
|
+
*/
|
|
1511
|
+
export class FrameScanner {
|
|
1512
|
+
free(): void;
|
|
1513
|
+
[Symbol.dispose](): void;
|
|
1075
1514
|
/**
|
|
1076
|
-
*
|
|
1515
|
+
* Begin scanning `bytes` from the start.
|
|
1077
1516
|
*/
|
|
1078
|
-
|
|
1517
|
+
constructor(bytes: Uint8Array);
|
|
1079
1518
|
/**
|
|
1080
|
-
*
|
|
1519
|
+
* The next CRC-valid frame as `{ body, frameLen }` (`body` a `Uint8Array`,
|
|
1520
|
+
* the message body between the length word and the CRC), or `undefined` when
|
|
1521
|
+
* the scan is exhausted.
|
|
1081
1522
|
*/
|
|
1082
|
-
|
|
1523
|
+
next(): any;
|
|
1083
1524
|
/**
|
|
1084
|
-
*
|
|
1525
|
+
* The total number of CRC-valid frames the scan found.
|
|
1085
1526
|
*/
|
|
1086
|
-
readonly
|
|
1087
|
-
|
|
1088
|
-
|
|
1527
|
+
readonly length: number;
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
/**
|
|
1531
|
+
* A batch of transformed states from [`temeToGcrs`]: flat row-major
|
|
1532
|
+
* `positionKm` and `velocityKmS` `Float64Array`s, each length `3 * epochCount`.
|
|
1533
|
+
*/
|
|
1534
|
+
export class FrameStates {
|
|
1535
|
+
private constructor();
|
|
1536
|
+
free(): void;
|
|
1537
|
+
[Symbol.dispose](): void;
|
|
1538
|
+
/**
|
|
1539
|
+
* Number of states in the batch.
|
|
1540
|
+
*/
|
|
1541
|
+
readonly epochCount: number;
|
|
1542
|
+
/**
|
|
1543
|
+
* Transformed positions, kilometres, flat row-major `(n, 3)`.
|
|
1544
|
+
*/
|
|
1545
|
+
readonly positionKm: Float64Array;
|
|
1546
|
+
/**
|
|
1547
|
+
* Transformed velocities, km/s, flat row-major `(n, 3)`.
|
|
1548
|
+
*/
|
|
1549
|
+
readonly velocityKmS: Float64Array;
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
/**
|
|
1553
|
+
* A regular latitude/longitude grid of geoid undulation samples with bilinear
|
|
1554
|
+
* interpolation, wrapping a real (loaded) geoid model.
|
|
1555
|
+
*/
|
|
1556
|
+
export class GeoidGrid {
|
|
1557
|
+
free(): void;
|
|
1558
|
+
[Symbol.dispose](): void;
|
|
1559
|
+
/**
|
|
1560
|
+
* Parse a grid from the documented whitespace-delimited text format (a
|
|
1561
|
+
* six-field header `lat_min lon_min dlat dlon n_lat n_lon` followed by
|
|
1562
|
+
* `n_lat * n_lon` samples in metres). Throws an `Error` on a malformed
|
|
1563
|
+
* header or sample. Delegates to
|
|
1564
|
+
* `sidereon_core::geoid::GeoidGrid::from_text`.
|
|
1565
|
+
*/
|
|
1566
|
+
static fromText(text: string): GeoidGrid;
|
|
1567
|
+
/**
|
|
1568
|
+
* Build a grid from its origin, spacing, dimensions, and row-major samples
|
|
1569
|
+
* (metres, latitude ascending outer, longitude ascending inner). Throws an
|
|
1570
|
+
* `Error` when a dimension is zero, the sample count is not `nLat * nLon`, a
|
|
1571
|
+
* spacing/origin is non-finite or a spacing is non-positive, or a sample is
|
|
1572
|
+
* non-finite. Delegates to `sidereon_core::geoid::GeoidGrid::new`.
|
|
1573
|
+
*/
|
|
1574
|
+
constructor(lat_min_deg: number, lon_min_deg: number, dlat_deg: number, dlon_deg: number, n_lat: number, n_lon: number, values_m: Float64Array);
|
|
1575
|
+
/**
|
|
1576
|
+
* Bilinearly interpolated undulation `N` (metres) at a geodetic position in
|
|
1577
|
+
* degrees (latitude positive north, longitude positive east).
|
|
1578
|
+
*/
|
|
1579
|
+
undulationDeg(lat_deg: number, lon_deg: number): number;
|
|
1580
|
+
/**
|
|
1581
|
+
* Bilinearly interpolated undulation `N` (metres) at a geodetic position in
|
|
1582
|
+
* radians (latitude positive north, longitude positive east).
|
|
1583
|
+
*/
|
|
1584
|
+
undulationRad(lat_rad: number, lon_rad: number): number;
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
/**
|
|
1588
|
+
* One GLONASS broadcast state-vector record. `toeUtcJ2000S` is UTC seconds past
|
|
1589
|
+
* J2000; position is PZ-90.11 ECEF metres, velocity m/s, acceleration m/s^2.
|
|
1590
|
+
*/
|
|
1591
|
+
export class GlonassRecordJs {
|
|
1592
|
+
private constructor();
|
|
1593
|
+
free(): void;
|
|
1594
|
+
[Symbol.dispose](): void;
|
|
1595
|
+
/**
|
|
1596
|
+
* Lunisolar acceleration `[ax, ay, az]`, metres per second squared.
|
|
1597
|
+
*/
|
|
1598
|
+
readonly accelerationMS2: Float64Array;
|
|
1599
|
+
/**
|
|
1600
|
+
* Broadcast clock bias, seconds.
|
|
1601
|
+
*/
|
|
1602
|
+
readonly clockBiasS: number;
|
|
1603
|
+
/**
|
|
1604
|
+
* FDMA frequency-channel number.
|
|
1605
|
+
*/
|
|
1606
|
+
readonly freqChannel: number;
|
|
1607
|
+
/**
|
|
1608
|
+
* Relative frequency offset.
|
|
1609
|
+
*/
|
|
1610
|
+
readonly gammaN: number;
|
|
1611
|
+
/**
|
|
1612
|
+
* PZ-90.11 ECEF position `[x, y, z]`, metres.
|
|
1613
|
+
*/
|
|
1614
|
+
readonly positionM: Float64Array;
|
|
1615
|
+
/**
|
|
1616
|
+
* RINEX satellite token such as `"R10"`.
|
|
1617
|
+
*/
|
|
1618
|
+
readonly satellite: string;
|
|
1619
|
+
/**
|
|
1620
|
+
* Satellite health; 0 is healthy.
|
|
1621
|
+
*/
|
|
1622
|
+
readonly svHealth: number;
|
|
1623
|
+
/**
|
|
1624
|
+
* Reference epoch, UTC seconds past J2000.
|
|
1089
1625
|
*/
|
|
1090
1626
|
readonly toeUtcJ2000S: number;
|
|
1091
1627
|
/**
|
|
@@ -1094,6 +1630,35 @@ export class GlonassRecordJs {
|
|
|
1094
1630
|
readonly velocityMS: Float64Array;
|
|
1095
1631
|
}
|
|
1096
1632
|
|
|
1633
|
+
/**
|
|
1634
|
+
* One sampled rise/set/peak visibility pass, from `gnssPasses`.
|
|
1635
|
+
*/
|
|
1636
|
+
export class GnssPass {
|
|
1637
|
+
private constructor();
|
|
1638
|
+
free(): void;
|
|
1639
|
+
[Symbol.dispose](): void;
|
|
1640
|
+
/**
|
|
1641
|
+
* Maximum sampled elevation in the pass, degrees.
|
|
1642
|
+
*/
|
|
1643
|
+
readonly peakElevationDeg: number;
|
|
1644
|
+
/**
|
|
1645
|
+
* Zero-based sample index of the maximum sampled elevation.
|
|
1646
|
+
*/
|
|
1647
|
+
readonly peakStepIndex: number;
|
|
1648
|
+
/**
|
|
1649
|
+
* Zero-based sample index of the first above-mask sample.
|
|
1650
|
+
*/
|
|
1651
|
+
readonly riseStepIndex: number;
|
|
1652
|
+
/**
|
|
1653
|
+
* Satellite token, e.g. `"G05"`.
|
|
1654
|
+
*/
|
|
1655
|
+
readonly satellite: string;
|
|
1656
|
+
/**
|
|
1657
|
+
* Zero-based sample index of the last above-mask sample.
|
|
1658
|
+
*/
|
|
1659
|
+
readonly setStepIndex: number;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1097
1662
|
/**
|
|
1098
1663
|
* A GNSS constellation. The JS value matches the variant order below.
|
|
1099
1664
|
*/
|
|
@@ -1128,6 +1693,45 @@ export enum GnssSystem {
|
|
|
1128
1693
|
Sbas = 6,
|
|
1129
1694
|
}
|
|
1130
1695
|
|
|
1696
|
+
/**
|
|
1697
|
+
* Per-epoch visible-satellite count over a sampled window, from
|
|
1698
|
+
* `gnssVisibilitySeries`.
|
|
1699
|
+
*/
|
|
1700
|
+
export class GnssVisibilityCount {
|
|
1701
|
+
private constructor();
|
|
1702
|
+
free(): void;
|
|
1703
|
+
[Symbol.dispose](): void;
|
|
1704
|
+
/**
|
|
1705
|
+
* Number of satellites visible at this sample.
|
|
1706
|
+
*/
|
|
1707
|
+
readonly nVisible: number;
|
|
1708
|
+
/**
|
|
1709
|
+
* Zero-based sample index from the window start.
|
|
1710
|
+
*/
|
|
1711
|
+
readonly stepIndex: number;
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
/**
|
|
1715
|
+
* One satellite above the elevation mask at a single epoch, from `gnssVisible`.
|
|
1716
|
+
*/
|
|
1717
|
+
export class GnssVisibleSatellite {
|
|
1718
|
+
private constructor();
|
|
1719
|
+
free(): void;
|
|
1720
|
+
[Symbol.dispose](): void;
|
|
1721
|
+
/**
|
|
1722
|
+
* Topocentric azimuth in `[0, 360)`, degrees.
|
|
1723
|
+
*/
|
|
1724
|
+
readonly azimuthDeg: number;
|
|
1725
|
+
/**
|
|
1726
|
+
* Topocentric elevation, degrees.
|
|
1727
|
+
*/
|
|
1728
|
+
readonly elevationDeg: number;
|
|
1729
|
+
/**
|
|
1730
|
+
* Satellite token, e.g. `"G05"`.
|
|
1731
|
+
*/
|
|
1732
|
+
readonly satellite: string;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1131
1735
|
/**
|
|
1132
1736
|
* A GNSS week number plus time-of-week, tagged by constellation.
|
|
1133
1737
|
*/
|
|
@@ -1177,6 +1781,34 @@ export class GroundStation {
|
|
|
1177
1781
|
readonly longitudeDeg: number;
|
|
1178
1782
|
}
|
|
1179
1783
|
|
|
1784
|
+
/**
|
|
1785
|
+
* Sub-satellite ground-track points from a batched [`Tle.groundTrack`] call.
|
|
1786
|
+
* Each array is a `Float64Array` of length `epochCount`, aligned to the input
|
|
1787
|
+
* epoch grid. WGS84 geodetic: latitude/longitude in degrees, ellipsoidal height
|
|
1788
|
+
* in kilometres.
|
|
1789
|
+
*/
|
|
1790
|
+
export class GroundTrack {
|
|
1791
|
+
private constructor();
|
|
1792
|
+
free(): void;
|
|
1793
|
+
[Symbol.dispose](): void;
|
|
1794
|
+
/**
|
|
1795
|
+
* Ellipsoidal height above the WGS84 ellipsoid, kilometres.
|
|
1796
|
+
*/
|
|
1797
|
+
readonly altKm: Float64Array;
|
|
1798
|
+
/**
|
|
1799
|
+
* Number of epochs evaluated.
|
|
1800
|
+
*/
|
|
1801
|
+
readonly epochCount: number;
|
|
1802
|
+
/**
|
|
1803
|
+
* Geodetic latitude of the sub-satellite point, degrees north.
|
|
1804
|
+
*/
|
|
1805
|
+
readonly latDeg: Float64Array;
|
|
1806
|
+
/**
|
|
1807
|
+
* Geodetic longitude of the sub-satellite point, degrees east in `[-180, 180]`.
|
|
1808
|
+
*/
|
|
1809
|
+
readonly lonDeg: Float64Array;
|
|
1810
|
+
}
|
|
1811
|
+
|
|
1180
1812
|
/**
|
|
1181
1813
|
* A point in time, tagged UTC, with the precise time scales resolved.
|
|
1182
1814
|
*
|
|
@@ -1276,6 +1908,49 @@ export class Instant {
|
|
|
1276
1908
|
readonly ut1JdSplit: JulianDate;
|
|
1277
1909
|
}
|
|
1278
1910
|
|
|
1911
|
+
/**
|
|
1912
|
+
* A determined orbit state: position and velocity at one epoch.
|
|
1913
|
+
*/
|
|
1914
|
+
export class IodState {
|
|
1915
|
+
private constructor();
|
|
1916
|
+
free(): void;
|
|
1917
|
+
[Symbol.dispose](): void;
|
|
1918
|
+
/**
|
|
1919
|
+
* Position `[x, y, z]`, kilometres.
|
|
1920
|
+
*/
|
|
1921
|
+
readonly positionKm: Float64Array;
|
|
1922
|
+
/**
|
|
1923
|
+
* Velocity `[vx, vy, vz]`, kilometres per second.
|
|
1924
|
+
*/
|
|
1925
|
+
readonly velocityKmS: Float64Array;
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
/**
|
|
1929
|
+
* A Gibbs / Herrick-Gibbs velocity solve: the velocity at the middle position
|
|
1930
|
+
* and the geometry diagnostics.
|
|
1931
|
+
*/
|
|
1932
|
+
export class IodVelocity {
|
|
1933
|
+
private constructor();
|
|
1934
|
+
free(): void;
|
|
1935
|
+
[Symbol.dispose](): void;
|
|
1936
|
+
/**
|
|
1937
|
+
* Coplanarity angle of the three position vectors, radians.
|
|
1938
|
+
*/
|
|
1939
|
+
readonly coplanarityRad: number;
|
|
1940
|
+
/**
|
|
1941
|
+
* Angle between the first and second position vectors, radians.
|
|
1942
|
+
*/
|
|
1943
|
+
readonly theta12Rad: number;
|
|
1944
|
+
/**
|
|
1945
|
+
* Angle between the second and third position vectors, radians.
|
|
1946
|
+
*/
|
|
1947
|
+
readonly theta23Rad: number;
|
|
1948
|
+
/**
|
|
1949
|
+
* Velocity at the middle position `[vx, vy, vz]`, kilometres per second.
|
|
1950
|
+
*/
|
|
1951
|
+
readonly velocityKmS: Float64Array;
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1279
1954
|
/**
|
|
1280
1955
|
* A parsed IONEX vertical-TEC product. Create with [`load_ionex`].
|
|
1281
1956
|
*/
|
|
@@ -1294,6 +1969,13 @@ export class Ionex {
|
|
|
1294
1969
|
* a `RangeError` on non-finite input and an `Error` on out-of-range input.
|
|
1295
1970
|
*/
|
|
1296
1971
|
slantDelay(lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, epoch_j2000_s: number, frequency_hz: number): number;
|
|
1972
|
+
/**
|
|
1973
|
+
* Serialize to standard IONEX text. Deterministic: the same product always
|
|
1974
|
+
* produces byte-identical text, and re-parsing the output yields an equal
|
|
1975
|
+
* product (the canonical node axes, geometry, exponent, map epochs, and
|
|
1976
|
+
* every TEC/RMS value).
|
|
1977
|
+
*/
|
|
1978
|
+
toIonexString(): string;
|
|
1297
1979
|
/**
|
|
1298
1980
|
* Mean Earth radius used by the geometry, kilometres.
|
|
1299
1981
|
*/
|
|
@@ -1430,6 +2112,19 @@ export class JulianDate {
|
|
|
1430
2112
|
private constructor();
|
|
1431
2113
|
free(): void;
|
|
1432
2114
|
[Symbol.dispose](): void;
|
|
2115
|
+
/**
|
|
2116
|
+
* Build the no-leap civil UTC two-part Julian date for calendar fields.
|
|
2117
|
+
*
|
|
2118
|
+
* Delegates to `sidereon_core::astro::time::model::Instant::from_utc_civil`:
|
|
2119
|
+
* `(year, month, day, hour, minute, second)` are marshalled through the
|
|
2120
|
+
* engine's `split_julian_date`, tagged UTC, with no leap second applied
|
|
2121
|
+
* (the civil convention the ionosphere / troposphere dispatchers consume).
|
|
2122
|
+
* This is distinct from the leap-aware `Instant`, whose TT/UT1/TDB scales
|
|
2123
|
+
* run the full UTC conversion. `second` may be fractional. Throws a
|
|
2124
|
+
* `RangeError` on an out-of-day field whose residual leaves the one-day
|
|
2125
|
+
* fraction window.
|
|
2126
|
+
*/
|
|
2127
|
+
static fromUtcCivil(year: number, month: number, day: number, hour?: number | null, minute?: number | null, second?: number | null): JulianDate;
|
|
1433
2128
|
/**
|
|
1434
2129
|
* Residual day fraction relative to `whole`.
|
|
1435
2130
|
*/
|
|
@@ -1487,6 +2182,23 @@ export class KlobucharAlphaBetaJs {
|
|
|
1487
2182
|
readonly beta: Float64Array;
|
|
1488
2183
|
}
|
|
1489
2184
|
|
|
2185
|
+
/**
|
|
2186
|
+
* The two transfer velocity vectors of a Lambert solution.
|
|
2187
|
+
*/
|
|
2188
|
+
export class LambertTransfer {
|
|
2189
|
+
private constructor();
|
|
2190
|
+
free(): void;
|
|
2191
|
+
[Symbol.dispose](): void;
|
|
2192
|
+
/**
|
|
2193
|
+
* Transfer velocity at `r2` (arrival) `[vx, vy, vz]`, km/s.
|
|
2194
|
+
*/
|
|
2195
|
+
readonly arrivalVelocityKmS: Float64Array;
|
|
2196
|
+
/**
|
|
2197
|
+
* Transfer velocity at `r1` (departure) `[vx, vy, vz]`, km/s.
|
|
2198
|
+
*/
|
|
2199
|
+
readonly departureVelocityKmS: Float64Array;
|
|
2200
|
+
}
|
|
2201
|
+
|
|
1490
2202
|
/**
|
|
1491
2203
|
* Provenance and coverage of the embedded IERS leap-second (TAI-UTC) table.
|
|
1492
2204
|
*/
|
|
@@ -1512,6 +2224,95 @@ export class LeapSecondTable {
|
|
|
1512
2224
|
readonly source: string;
|
|
1513
2225
|
}
|
|
1514
2226
|
|
|
2227
|
+
/**
|
|
2228
|
+
* A serial leave-one-out sweep: the base solve over all rows plus one re-solve
|
|
2229
|
+
* per masked row, with the per-row optimum-cost shift.
|
|
2230
|
+
*/
|
|
2231
|
+
export class LeastSquaresDropOneReport {
|
|
2232
|
+
private constructor();
|
|
2233
|
+
free(): void;
|
|
2234
|
+
[Symbol.dispose](): void;
|
|
2235
|
+
/**
|
|
2236
|
+
* The solve with residual row `index` masked out. Throws a `RangeError` for
|
|
2237
|
+
* an out-of-range index.
|
|
2238
|
+
*/
|
|
2239
|
+
dropAt(index: number): LeastSquaresResult;
|
|
2240
|
+
/**
|
|
2241
|
+
* The solve over the full residual.
|
|
2242
|
+
*/
|
|
2243
|
+
readonly base: LeastSquaresResult;
|
|
2244
|
+
/**
|
|
2245
|
+
* `costDeltas[i] = dropAt(i).cost - base.cost`: how much the optimum cost
|
|
2246
|
+
* moves when row `i` is removed. `Float64Array` of length `count`.
|
|
2247
|
+
*/
|
|
2248
|
+
readonly costDeltas: Float64Array;
|
|
2249
|
+
/**
|
|
2250
|
+
* Number of masked-row re-solves (equals the residual-row count `m`).
|
|
2251
|
+
*/
|
|
2252
|
+
readonly count: number;
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
/**
|
|
2256
|
+
* The outcome of one trust-region least-squares solve, mirroring the fields of
|
|
2257
|
+
* `scipy.optimize.least_squares`'s `OptimizeResult`.
|
|
2258
|
+
*/
|
|
2259
|
+
export class LeastSquaresResult {
|
|
2260
|
+
private constructor();
|
|
2261
|
+
free(): void;
|
|
2262
|
+
[Symbol.dispose](): void;
|
|
2263
|
+
/**
|
|
2264
|
+
* Optimal cost `0.5 * sum(residual^2)` (after robust reweighting when a
|
|
2265
|
+
* non-linear loss is used).
|
|
2266
|
+
*/
|
|
2267
|
+
readonly cost: number;
|
|
2268
|
+
/**
|
|
2269
|
+
* Residual vector at the solution, `Float64Array` of length `m`.
|
|
2270
|
+
*/
|
|
2271
|
+
readonly fun: Float64Array;
|
|
2272
|
+
/**
|
|
2273
|
+
* Gradient `J^T f` at the solution, `Float64Array` of length `n`.
|
|
2274
|
+
*/
|
|
2275
|
+
readonly grad: Float64Array;
|
|
2276
|
+
/**
|
|
2277
|
+
* Row-major `m`-by-`n` Jacobian at the solution, flat `Float64Array` of
|
|
2278
|
+
* length `m * n`.
|
|
2279
|
+
*/
|
|
2280
|
+
readonly jac: Float64Array;
|
|
2281
|
+
/**
|
|
2282
|
+
* Residual row count `m`.
|
|
2283
|
+
*/
|
|
2284
|
+
readonly m: number;
|
|
2285
|
+
/**
|
|
2286
|
+
* Parameter count `n`.
|
|
2287
|
+
*/
|
|
2288
|
+
readonly n: number;
|
|
2289
|
+
/**
|
|
2290
|
+
* Number of residual evaluations.
|
|
2291
|
+
*/
|
|
2292
|
+
readonly nfev: number;
|
|
2293
|
+
/**
|
|
2294
|
+
* Number of Jacobian evaluations.
|
|
2295
|
+
*/
|
|
2296
|
+
readonly njev: number;
|
|
2297
|
+
/**
|
|
2298
|
+
* First-order optimality `||J^T f||_inf` at the solution.
|
|
2299
|
+
*/
|
|
2300
|
+
readonly optimality: number;
|
|
2301
|
+
/**
|
|
2302
|
+
* SciPy-compatible termination status: `0` max evaluations, `1` gtol,
|
|
2303
|
+
* `2` ftol, `3` xtol, `4` both ftol and xtol.
|
|
2304
|
+
*/
|
|
2305
|
+
readonly status: number;
|
|
2306
|
+
/**
|
|
2307
|
+
* Whether the solve converged (`status > 0`).
|
|
2308
|
+
*/
|
|
2309
|
+
readonly success: boolean;
|
|
2310
|
+
/**
|
|
2311
|
+
* Solution parameter vector, `Float64Array` of length `n`.
|
|
2312
|
+
*/
|
|
2313
|
+
readonly x: Float64Array;
|
|
2314
|
+
}
|
|
2315
|
+
|
|
1515
2316
|
/**
|
|
1516
2317
|
* Link-budget inputs for [`LinkBudget.margin`].
|
|
1517
2318
|
*/
|
|
@@ -1550,46 +2351,291 @@ export class LinkBudget {
|
|
|
1550
2351
|
}
|
|
1551
2352
|
|
|
1552
2353
|
/**
|
|
1553
|
-
*
|
|
1554
|
-
*
|
|
2354
|
+
* Decoded LNAV clock and ephemeris parameters (engineering units). Integer
|
|
2355
|
+
* fields are recovered exactly; scaled fields are the transmitted integer times
|
|
2356
|
+
* the IS-GPS-200 LSB. `l2_p_data_flag` is encode-only and not recovered.
|
|
1555
2357
|
*/
|
|
1556
|
-
export class
|
|
2358
|
+
export class LnavDecoded {
|
|
1557
2359
|
private constructor();
|
|
1558
2360
|
free(): void;
|
|
1559
2361
|
[Symbol.dispose](): void;
|
|
1560
2362
|
/**
|
|
1561
|
-
*
|
|
2363
|
+
* Clock bias coefficient, seconds.
|
|
1562
2364
|
*/
|
|
1563
|
-
readonly
|
|
2365
|
+
readonly af0: number;
|
|
1564
2366
|
/**
|
|
1565
|
-
*
|
|
2367
|
+
* Clock drift coefficient, seconds per second.
|
|
1566
2368
|
*/
|
|
1567
|
-
readonly
|
|
2369
|
+
readonly af1: number;
|
|
1568
2370
|
/**
|
|
1569
|
-
*
|
|
2371
|
+
* Clock drift-rate coefficient, seconds per second squared.
|
|
1570
2372
|
*/
|
|
1571
|
-
readonly
|
|
2373
|
+
readonly af2: number;
|
|
1572
2374
|
/**
|
|
1573
|
-
*
|
|
2375
|
+
* Age of data offset.
|
|
1574
2376
|
*/
|
|
1575
|
-
readonly
|
|
1576
|
-
}
|
|
1577
|
-
|
|
1578
|
-
/**
|
|
1579
|
-
* Niell hydrostatic and wet mapping factors, dimensionless.
|
|
1580
|
-
*/
|
|
1581
|
-
export class MappingFactors {
|
|
1582
|
-
private constructor();
|
|
1583
|
-
free(): void;
|
|
1584
|
-
[Symbol.dispose](): void;
|
|
2377
|
+
readonly aodo: number;
|
|
1585
2378
|
/**
|
|
1586
|
-
*
|
|
2379
|
+
* Cosine harmonic correction to inclination, radians.
|
|
1587
2380
|
*/
|
|
1588
|
-
readonly
|
|
2381
|
+
readonly cic: number;
|
|
1589
2382
|
/**
|
|
1590
|
-
*
|
|
2383
|
+
* Sine harmonic correction to inclination, radians.
|
|
1591
2384
|
*/
|
|
1592
|
-
readonly
|
|
2385
|
+
readonly cis: number;
|
|
2386
|
+
/**
|
|
2387
|
+
* Cosine harmonic correction to orbit radius, metres.
|
|
2388
|
+
*/
|
|
2389
|
+
readonly crc: number;
|
|
2390
|
+
/**
|
|
2391
|
+
* Sine harmonic correction to orbit radius, metres.
|
|
2392
|
+
*/
|
|
2393
|
+
readonly crs: number;
|
|
2394
|
+
/**
|
|
2395
|
+
* Cosine harmonic correction to argument of latitude, radians.
|
|
2396
|
+
*/
|
|
2397
|
+
readonly cuc: number;
|
|
2398
|
+
/**
|
|
2399
|
+
* Sine harmonic correction to argument of latitude, radians.
|
|
2400
|
+
*/
|
|
2401
|
+
readonly cus: number;
|
|
2402
|
+
/**
|
|
2403
|
+
* Mean motion difference, radians per second.
|
|
2404
|
+
*/
|
|
2405
|
+
readonly deltaN: number;
|
|
2406
|
+
/**
|
|
2407
|
+
* Eccentricity.
|
|
2408
|
+
*/
|
|
2409
|
+
readonly eccentricity: number;
|
|
2410
|
+
/**
|
|
2411
|
+
* Fit-interval flag.
|
|
2412
|
+
*/
|
|
2413
|
+
readonly fitIntervalFlag: number;
|
|
2414
|
+
/**
|
|
2415
|
+
* Inclination at reference time, radians.
|
|
2416
|
+
*/
|
|
2417
|
+
readonly i0: number;
|
|
2418
|
+
/**
|
|
2419
|
+
* Rate of inclination, radians per second.
|
|
2420
|
+
*/
|
|
2421
|
+
readonly idot: number;
|
|
2422
|
+
/**
|
|
2423
|
+
* Issue of data, clock.
|
|
2424
|
+
*/
|
|
2425
|
+
readonly iodc: number;
|
|
2426
|
+
/**
|
|
2427
|
+
* Issue of data, ephemeris.
|
|
2428
|
+
*/
|
|
2429
|
+
readonly iode: number;
|
|
2430
|
+
/**
|
|
2431
|
+
* L2 code indicator.
|
|
2432
|
+
*/
|
|
2433
|
+
readonly l2Code: number;
|
|
2434
|
+
/**
|
|
2435
|
+
* Mean anomaly at reference time, radians.
|
|
2436
|
+
*/
|
|
2437
|
+
readonly m0: number;
|
|
2438
|
+
/**
|
|
2439
|
+
* Argument of perigee, radians.
|
|
2440
|
+
*/
|
|
2441
|
+
readonly omega: number;
|
|
2442
|
+
/**
|
|
2443
|
+
* Longitude of ascending node at weekly epoch, radians.
|
|
2444
|
+
*/
|
|
2445
|
+
readonly omega0: number;
|
|
2446
|
+
/**
|
|
2447
|
+
* Rate of right ascension, radians per second.
|
|
2448
|
+
*/
|
|
2449
|
+
readonly omegaDot: number;
|
|
2450
|
+
/**
|
|
2451
|
+
* Square root of the semi-major axis, sqrt(metres).
|
|
2452
|
+
*/
|
|
2453
|
+
readonly sqrtA: number;
|
|
2454
|
+
/**
|
|
2455
|
+
* SV health bits.
|
|
2456
|
+
*/
|
|
2457
|
+
readonly svHealth: number;
|
|
2458
|
+
/**
|
|
2459
|
+
* Group delay differential, seconds.
|
|
2460
|
+
*/
|
|
2461
|
+
readonly tgd: number;
|
|
2462
|
+
/**
|
|
2463
|
+
* Clock reference time, seconds.
|
|
2464
|
+
*/
|
|
2465
|
+
readonly toc: number;
|
|
2466
|
+
/**
|
|
2467
|
+
* Ephemeris reference time, seconds.
|
|
2468
|
+
*/
|
|
2469
|
+
readonly toe: number;
|
|
2470
|
+
/**
|
|
2471
|
+
* User range accuracy index.
|
|
2472
|
+
*/
|
|
2473
|
+
readonly uraIndex: number;
|
|
2474
|
+
/**
|
|
2475
|
+
* GPS week number.
|
|
2476
|
+
*/
|
|
2477
|
+
readonly weekNumber: number;
|
|
2478
|
+
}
|
|
2479
|
+
|
|
2480
|
+
/**
|
|
2481
|
+
* The three 300-bit LNAV subframes produced by [`lnavEncode`].
|
|
2482
|
+
*/
|
|
2483
|
+
export class LnavSubframes {
|
|
2484
|
+
private constructor();
|
|
2485
|
+
free(): void;
|
|
2486
|
+
[Symbol.dispose](): void;
|
|
2487
|
+
/**
|
|
2488
|
+
* Subframe 1 (clock/health) as a 300-element `Uint8Array` of `0`/`1` bits.
|
|
2489
|
+
*/
|
|
2490
|
+
readonly subframe1: Uint8Array;
|
|
2491
|
+
/**
|
|
2492
|
+
* Subframe 2 (ephemeris part 1) as a 300-element `Uint8Array`.
|
|
2493
|
+
*/
|
|
2494
|
+
readonly subframe2: Uint8Array;
|
|
2495
|
+
/**
|
|
2496
|
+
* Subframe 3 (ephemeris part 2) as a 300-element `Uint8Array`.
|
|
2497
|
+
*/
|
|
2498
|
+
readonly subframe3: Uint8Array;
|
|
2499
|
+
}
|
|
2500
|
+
|
|
2501
|
+
/**
|
|
2502
|
+
* Topocentric look angles from a batched arc, each a `Float64Array` of length
|
|
2503
|
+
* `epochCount`.
|
|
2504
|
+
*/
|
|
2505
|
+
export class LookAngles {
|
|
2506
|
+
private constructor();
|
|
2507
|
+
free(): void;
|
|
2508
|
+
[Symbol.dispose](): void;
|
|
2509
|
+
/**
|
|
2510
|
+
* Azimuth, degrees clockwise from north.
|
|
2511
|
+
*/
|
|
2512
|
+
readonly azimuthDeg: Float64Array;
|
|
2513
|
+
/**
|
|
2514
|
+
* Elevation, degrees above the horizon.
|
|
2515
|
+
*/
|
|
2516
|
+
readonly elevationDeg: Float64Array;
|
|
2517
|
+
/**
|
|
2518
|
+
* Number of epochs evaluated.
|
|
2519
|
+
*/
|
|
2520
|
+
readonly epochCount: number;
|
|
2521
|
+
/**
|
|
2522
|
+
* Slant range, kilometres.
|
|
2523
|
+
*/
|
|
2524
|
+
readonly rangeKm: Float64Array;
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2527
|
+
/**
|
|
2528
|
+
* Niell hydrostatic and wet mapping factors, dimensionless.
|
|
2529
|
+
*/
|
|
2530
|
+
export class MappingFactors {
|
|
2531
|
+
private constructor();
|
|
2532
|
+
free(): void;
|
|
2533
|
+
[Symbol.dispose](): void;
|
|
2534
|
+
/**
|
|
2535
|
+
* Hydrostatic mapping factor (includes the height correction).
|
|
2536
|
+
*/
|
|
2537
|
+
readonly dry: number;
|
|
2538
|
+
/**
|
|
2539
|
+
* Wet mapping factor.
|
|
2540
|
+
*/
|
|
2541
|
+
readonly wet: number;
|
|
2542
|
+
}
|
|
2543
|
+
|
|
2544
|
+
/**
|
|
2545
|
+
* One refined Moon elevation threshold crossing (moonrise / moonset).
|
|
2546
|
+
*/
|
|
2547
|
+
export class MoonElevationCrossing {
|
|
2548
|
+
private constructor();
|
|
2549
|
+
free(): void;
|
|
2550
|
+
[Symbol.dispose](): void;
|
|
2551
|
+
/**
|
|
2552
|
+
* Topocentric Moon elevation at the refined instant, degrees.
|
|
2553
|
+
*/
|
|
2554
|
+
readonly elevationDeg: number;
|
|
2555
|
+
/**
|
|
2556
|
+
* Crossing direction: `"rising"` (moonrise) or `"setting"` (moonset).
|
|
2557
|
+
*/
|
|
2558
|
+
readonly kind: string;
|
|
2559
|
+
/**
|
|
2560
|
+
* Refined crossing instant, unix microseconds.
|
|
2561
|
+
*/
|
|
2562
|
+
readonly timeUnixUs: bigint;
|
|
2563
|
+
}
|
|
2564
|
+
|
|
2565
|
+
/**
|
|
2566
|
+
* One refined Moon meridian transit (culmination).
|
|
2567
|
+
*/
|
|
2568
|
+
export class MoonTransit {
|
|
2569
|
+
private constructor();
|
|
2570
|
+
free(): void;
|
|
2571
|
+
[Symbol.dispose](): void;
|
|
2572
|
+
/**
|
|
2573
|
+
* Topocentric Moon elevation at the refined instant, degrees.
|
|
2574
|
+
*/
|
|
2575
|
+
readonly elevationDeg: number;
|
|
2576
|
+
/**
|
|
2577
|
+
* Culmination kind: `"upper"` (due south, highest) or `"lower"` (due north,
|
|
2578
|
+
* lowest).
|
|
2579
|
+
*/
|
|
2580
|
+
readonly kind: string;
|
|
2581
|
+
/**
|
|
2582
|
+
* Refined culmination instant, unix microseconds.
|
|
2583
|
+
*/
|
|
2584
|
+
readonly timeUnixUs: bigint;
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
/**
|
|
2588
|
+
* One solved moving-baseline epoch.
|
|
2589
|
+
*/
|
|
2590
|
+
export class MovingBaselineSolution {
|
|
2591
|
+
private constructor();
|
|
2592
|
+
free(): void;
|
|
2593
|
+
[Symbol.dispose](): void;
|
|
2594
|
+
/**
|
|
2595
|
+
* Base receiver ECEF position (metres) used for this epoch, `[x, y, z]`.
|
|
2596
|
+
*/
|
|
2597
|
+
readonly basePositionM: Float64Array;
|
|
2598
|
+
/**
|
|
2599
|
+
* Euclidean baseline length, metres.
|
|
2600
|
+
*/
|
|
2601
|
+
readonly baselineLengthM: number;
|
|
2602
|
+
/**
|
|
2603
|
+
* Baseline vector `rover - base` (metres) in ECEF, `[dx, dy, dz]`. The
|
|
2604
|
+
* integer-fixed baseline when `status` is `"Fixed"`, else the float baseline.
|
|
2605
|
+
*/
|
|
2606
|
+
readonly baselineM: Float64Array;
|
|
2607
|
+
/**
|
|
2608
|
+
* The float baseline this epoch reduced through, `[dx, dy, dz]`, metres.
|
|
2609
|
+
*/
|
|
2610
|
+
readonly floatBaselineM: Float64Array;
|
|
2611
|
+
/**
|
|
2612
|
+
* Whether the float baseline solve converged.
|
|
2613
|
+
*/
|
|
2614
|
+
readonly floatConverged: boolean;
|
|
2615
|
+
/**
|
|
2616
|
+
* Integer ambiguity verdict for this epoch: `"Fixed"` or `"Float"`.
|
|
2617
|
+
*/
|
|
2618
|
+
readonly status: string;
|
|
2619
|
+
}
|
|
2620
|
+
|
|
2621
|
+
/**
|
|
2622
|
+
* A named entry from a parsed TLE file: the satellite's name line (empty for a
|
|
2623
|
+
* bare 2-line set) paired with its initialized [`Tle`].
|
|
2624
|
+
*/
|
|
2625
|
+
export class NamedTle {
|
|
2626
|
+
private constructor();
|
|
2627
|
+
free(): void;
|
|
2628
|
+
[Symbol.dispose](): void;
|
|
2629
|
+
/**
|
|
2630
|
+
* The satellite name from the preceding name line, with any CelesTrak `0 `
|
|
2631
|
+
* marker stripped. Empty string for a bare 2-line element set.
|
|
2632
|
+
*/
|
|
2633
|
+
readonly name: string;
|
|
2634
|
+
/**
|
|
2635
|
+
* The initialized two-line element set. Call `.propagate()` /
|
|
2636
|
+
* `.lookAngles()` / `.findPasses()` on it directly.
|
|
2637
|
+
*/
|
|
2638
|
+
readonly tle: Tle;
|
|
1593
2639
|
}
|
|
1594
2640
|
|
|
1595
2641
|
/**
|
|
@@ -1836,6 +2882,193 @@ export class ObservationValueSeries {
|
|
|
1836
2882
|
readonly values: Float64Array;
|
|
1837
2883
|
}
|
|
1838
2884
|
|
|
2885
|
+
/**
|
|
2886
|
+
* A canonical, format-agnostic CCSDS Orbit Ephemeris Message parsed from KVN or
|
|
2887
|
+
* XML.
|
|
2888
|
+
*/
|
|
2889
|
+
export class Oem {
|
|
2890
|
+
free(): void;
|
|
2891
|
+
[Symbol.dispose](): void;
|
|
2892
|
+
/**
|
|
2893
|
+
* Build an OEM from one or more segments. `meta` carries the optional header
|
|
2894
|
+
* fields (`ccsdsOemVers`, `creationDate`, `originator`).
|
|
2895
|
+
*/
|
|
2896
|
+
constructor(segments: OemSegment[], meta: any);
|
|
2897
|
+
/**
|
|
2898
|
+
* Encode this OEM to CCSDS OEM KVN text.
|
|
2899
|
+
*/
|
|
2900
|
+
toKvnString(): string;
|
|
2901
|
+
/**
|
|
2902
|
+
* Encode this OEM to CCSDS OEM XML text.
|
|
2903
|
+
*/
|
|
2904
|
+
toXmlString(): string;
|
|
2905
|
+
/**
|
|
2906
|
+
* CCSDS OEM version string.
|
|
2907
|
+
*/
|
|
2908
|
+
readonly ccsdsOemVers: string;
|
|
2909
|
+
/**
|
|
2910
|
+
* Creation date.
|
|
2911
|
+
*/
|
|
2912
|
+
readonly creationDate: string | undefined;
|
|
2913
|
+
/**
|
|
2914
|
+
* Originator.
|
|
2915
|
+
*/
|
|
2916
|
+
readonly originator: string | undefined;
|
|
2917
|
+
/**
|
|
2918
|
+
* Number of segments.
|
|
2919
|
+
*/
|
|
2920
|
+
readonly segmentCount: number;
|
|
2921
|
+
/**
|
|
2922
|
+
* Metadata/data segments in message order.
|
|
2923
|
+
*/
|
|
2924
|
+
readonly segments: OemSegment[];
|
|
2925
|
+
/**
|
|
2926
|
+
* Forgiving-parse count of ephemeris data lines skipped as malformed (KVN
|
|
2927
|
+
* only; 0 for a constructed or XML-parsed message).
|
|
2928
|
+
*/
|
|
2929
|
+
readonly skippedStates: number;
|
|
2930
|
+
}
|
|
2931
|
+
|
|
2932
|
+
/**
|
|
2933
|
+
* One OEM covariance block.
|
|
2934
|
+
*/
|
|
2935
|
+
export class OemCovariance {
|
|
2936
|
+
free(): void;
|
|
2937
|
+
[Symbol.dispose](): void;
|
|
2938
|
+
/**
|
|
2939
|
+
* Build an OEM covariance block. `matrix` is a length-36 row-major
|
|
2940
|
+
* `Float64Array` for the `[r, v]` state; it must be finite, symmetric, and
|
|
2941
|
+
* positive semidefinite. `covRefFrame` is the optional frame label.
|
|
2942
|
+
*/
|
|
2943
|
+
constructor(epoch: string, matrix: Float64Array, cov_ref_frame?: string | null);
|
|
2944
|
+
/**
|
|
2945
|
+
* Covariance reference-frame label, or `undefined`.
|
|
2946
|
+
*/
|
|
2947
|
+
readonly covRefFrame: string | undefined;
|
|
2948
|
+
/**
|
|
2949
|
+
* Epoch text.
|
|
2950
|
+
*/
|
|
2951
|
+
readonly epoch: string;
|
|
2952
|
+
/**
|
|
2953
|
+
* The 6x6 state covariance as a length-36 row-major `Float64Array`.
|
|
2954
|
+
*/
|
|
2955
|
+
readonly matrix: Float64Array;
|
|
2956
|
+
}
|
|
2957
|
+
|
|
2958
|
+
/**
|
|
2959
|
+
* OEM segment metadata: object identity, frame, time system, and span.
|
|
2960
|
+
*/
|
|
2961
|
+
export class OemMetadata {
|
|
2962
|
+
free(): void;
|
|
2963
|
+
[Symbol.dispose](): void;
|
|
2964
|
+
/**
|
|
2965
|
+
* Build OEM segment metadata. The seven leading arguments are required;
|
|
2966
|
+
* `meta` carries the optional fields (`useableStartTime`, `useableStopTime`,
|
|
2967
|
+
* `interpolation`, `interpolationDegree`).
|
|
2968
|
+
*/
|
|
2969
|
+
constructor(object_name: string, object_id: string, center_name: string, ref_frame: string, time_system: string, start_time: string, stop_time: string, meta: any);
|
|
2970
|
+
/**
|
|
2971
|
+
* Center name.
|
|
2972
|
+
*/
|
|
2973
|
+
readonly centerName: string;
|
|
2974
|
+
/**
|
|
2975
|
+
* Interpolation method label, or `undefined`.
|
|
2976
|
+
*/
|
|
2977
|
+
readonly interpolation: string | undefined;
|
|
2978
|
+
/**
|
|
2979
|
+
* Interpolation polynomial degree, or `undefined`.
|
|
2980
|
+
*/
|
|
2981
|
+
readonly interpolationDegree: number | undefined;
|
|
2982
|
+
/**
|
|
2983
|
+
* Object id (COSPAR international designator).
|
|
2984
|
+
*/
|
|
2985
|
+
readonly objectId: string;
|
|
2986
|
+
/**
|
|
2987
|
+
* Object name.
|
|
2988
|
+
*/
|
|
2989
|
+
readonly objectName: string;
|
|
2990
|
+
/**
|
|
2991
|
+
* Reference frame.
|
|
2992
|
+
*/
|
|
2993
|
+
readonly refFrame: string;
|
|
2994
|
+
/**
|
|
2995
|
+
* Segment start time text.
|
|
2996
|
+
*/
|
|
2997
|
+
readonly startTime: string;
|
|
2998
|
+
/**
|
|
2999
|
+
* Segment stop time text.
|
|
3000
|
+
*/
|
|
3001
|
+
readonly stopTime: string;
|
|
3002
|
+
/**
|
|
3003
|
+
* Time system.
|
|
3004
|
+
*/
|
|
3005
|
+
readonly timeSystem: string;
|
|
3006
|
+
/**
|
|
3007
|
+
* Useable start time text, or `undefined`.
|
|
3008
|
+
*/
|
|
3009
|
+
readonly useableStartTime: string | undefined;
|
|
3010
|
+
/**
|
|
3011
|
+
* Useable stop time text, or `undefined`.
|
|
3012
|
+
*/
|
|
3013
|
+
readonly useableStopTime: string | undefined;
|
|
3014
|
+
}
|
|
3015
|
+
|
|
3016
|
+
/**
|
|
3017
|
+
* One OEM metadata/data segment.
|
|
3018
|
+
*/
|
|
3019
|
+
export class OemSegment {
|
|
3020
|
+
free(): void;
|
|
3021
|
+
[Symbol.dispose](): void;
|
|
3022
|
+
/**
|
|
3023
|
+
* Build an OEM segment from its metadata, state samples, and (possibly
|
|
3024
|
+
* empty) covariance blocks.
|
|
3025
|
+
*/
|
|
3026
|
+
constructor(metadata: OemMetadata, states: OemState[], covariances: OemCovariance[]);
|
|
3027
|
+
/**
|
|
3028
|
+
* Covariance blocks in segment order.
|
|
3029
|
+
*/
|
|
3030
|
+
readonly covariances: OemCovariance[];
|
|
3031
|
+
/**
|
|
3032
|
+
* Segment metadata.
|
|
3033
|
+
*/
|
|
3034
|
+
readonly metadata: OemMetadata;
|
|
3035
|
+
/**
|
|
3036
|
+
* State samples in segment order.
|
|
3037
|
+
*/
|
|
3038
|
+
readonly states: OemState[];
|
|
3039
|
+
}
|
|
3040
|
+
|
|
3041
|
+
/**
|
|
3042
|
+
* One OEM Cartesian state sample.
|
|
3043
|
+
*/
|
|
3044
|
+
export class OemState {
|
|
3045
|
+
free(): void;
|
|
3046
|
+
[Symbol.dispose](): void;
|
|
3047
|
+
/**
|
|
3048
|
+
* Build an OEM state sample. `epoch` is carried as text; `positionKm` and
|
|
3049
|
+
* `velocityKmS` are length-3 `Float64Array`s. `accelerationKmS2` is an
|
|
3050
|
+
* optional length-3 `Float64Array` (pass `undefined` for a position/velocity
|
|
3051
|
+
* sample).
|
|
3052
|
+
*/
|
|
3053
|
+
constructor(epoch: string, position_km: Float64Array, velocity_km_s: Float64Array, acceleration_km_s2?: Float64Array | null);
|
|
3054
|
+
/**
|
|
3055
|
+
* Acceleration vector, km/s^2, length-3 `Float64Array`, or `undefined`.
|
|
3056
|
+
*/
|
|
3057
|
+
readonly accelerationKmS2: Float64Array | undefined;
|
|
3058
|
+
/**
|
|
3059
|
+
* Epoch text.
|
|
3060
|
+
*/
|
|
3061
|
+
readonly epoch: string;
|
|
3062
|
+
/**
|
|
3063
|
+
* Position vector, kilometres, length-3 `Float64Array`.
|
|
3064
|
+
*/
|
|
3065
|
+
readonly positionKm: Float64Array;
|
|
3066
|
+
/**
|
|
3067
|
+
* Velocity vector, km/s, length-3 `Float64Array`.
|
|
3068
|
+
*/
|
|
3069
|
+
readonly velocityKmS: Float64Array;
|
|
3070
|
+
}
|
|
3071
|
+
|
|
1839
3072
|
/**
|
|
1840
3073
|
* A canonical, format-agnostic CCSDS Orbit Mean-Elements Message.
|
|
1841
3074
|
*/
|
|
@@ -1905,102 +3138,455 @@ export class Omm {
|
|
|
1905
3138
|
*/
|
|
1906
3139
|
readonly inclinationDeg: number;
|
|
1907
3140
|
/**
|
|
1908
|
-
* Mean anomaly, degrees.
|
|
3141
|
+
* Mean anomaly, degrees.
|
|
3142
|
+
*/
|
|
3143
|
+
readonly meanAnomalyDeg: number;
|
|
3144
|
+
/**
|
|
3145
|
+
* Mean-element theory.
|
|
3146
|
+
*/
|
|
3147
|
+
readonly meanElementTheory: string | undefined;
|
|
3148
|
+
/**
|
|
3149
|
+
* Mean motion, rev/day.
|
|
3150
|
+
*/
|
|
3151
|
+
readonly meanMotion: number;
|
|
3152
|
+
/**
|
|
3153
|
+
* Second derivative of mean motion.
|
|
3154
|
+
*/
|
|
3155
|
+
readonly meanMotionDdot: number;
|
|
3156
|
+
/**
|
|
3157
|
+
* First derivative of mean motion.
|
|
3158
|
+
*/
|
|
3159
|
+
readonly meanMotionDot: number;
|
|
3160
|
+
/**
|
|
3161
|
+
* NORAD catalog number.
|
|
3162
|
+
*/
|
|
3163
|
+
readonly noradCatId: number;
|
|
3164
|
+
/**
|
|
3165
|
+
* Object id.
|
|
3166
|
+
*/
|
|
3167
|
+
readonly objectId: string | undefined;
|
|
3168
|
+
/**
|
|
3169
|
+
* Object name.
|
|
3170
|
+
*/
|
|
3171
|
+
readonly objectName: string | undefined;
|
|
3172
|
+
/**
|
|
3173
|
+
* Originator.
|
|
3174
|
+
*/
|
|
3175
|
+
readonly originator: string | undefined;
|
|
3176
|
+
/**
|
|
3177
|
+
* Right ascension of the ascending node, degrees.
|
|
3178
|
+
*/
|
|
3179
|
+
readonly raOfAscNodeDeg: number;
|
|
3180
|
+
/**
|
|
3181
|
+
* Reference frame.
|
|
3182
|
+
*/
|
|
3183
|
+
readonly refFrame: string | undefined;
|
|
3184
|
+
/**
|
|
3185
|
+
* Revolution number at epoch.
|
|
3186
|
+
*/
|
|
3187
|
+
readonly revAtEpoch: bigint;
|
|
3188
|
+
/**
|
|
3189
|
+
* Time system.
|
|
3190
|
+
*/
|
|
3191
|
+
readonly timeSystem: string | undefined;
|
|
3192
|
+
}
|
|
3193
|
+
|
|
3194
|
+
/**
|
|
3195
|
+
* UTC calendar epoch carried by an OMM `EPOCH` field.
|
|
3196
|
+
*/
|
|
3197
|
+
export class OmmEpoch {
|
|
3198
|
+
free(): void;
|
|
3199
|
+
[Symbol.dispose](): void;
|
|
3200
|
+
/**
|
|
3201
|
+
* Build an OMM epoch from UTC calendar fields. Throws a `RangeError` on an
|
|
3202
|
+
* out-of-range field.
|
|
3203
|
+
*/
|
|
3204
|
+
constructor(year: number, month: number, day: number, hour: number, minute: number, second: number, microsecond: number);
|
|
3205
|
+
/**
|
|
3206
|
+
* Calendar day.
|
|
3207
|
+
*/
|
|
3208
|
+
readonly day: number;
|
|
3209
|
+
/**
|
|
3210
|
+
* Hour of day.
|
|
3211
|
+
*/
|
|
3212
|
+
readonly hour: number;
|
|
3213
|
+
/**
|
|
3214
|
+
* ISO-8601 epoch text with microsecond precision.
|
|
3215
|
+
*/
|
|
3216
|
+
readonly iso8601: string;
|
|
3217
|
+
/**
|
|
3218
|
+
* Microsecond of second.
|
|
3219
|
+
*/
|
|
3220
|
+
readonly microsecond: number;
|
|
3221
|
+
/**
|
|
3222
|
+
* Minute of hour.
|
|
3223
|
+
*/
|
|
3224
|
+
readonly minute: number;
|
|
3225
|
+
/**
|
|
3226
|
+
* Calendar month.
|
|
3227
|
+
*/
|
|
3228
|
+
readonly month: number;
|
|
3229
|
+
/**
|
|
3230
|
+
* Second of minute.
|
|
3231
|
+
*/
|
|
3232
|
+
readonly second: number;
|
|
3233
|
+
/**
|
|
3234
|
+
* Calendar year.
|
|
3235
|
+
*/
|
|
3236
|
+
readonly year: number;
|
|
3237
|
+
}
|
|
3238
|
+
|
|
3239
|
+
/**
|
|
3240
|
+
* A canonical, format-agnostic CCSDS Orbit Parameter Message parsed from KVN or
|
|
3241
|
+
* XML.
|
|
3242
|
+
*/
|
|
3243
|
+
export class Opm {
|
|
3244
|
+
free(): void;
|
|
3245
|
+
[Symbol.dispose](): void;
|
|
3246
|
+
/**
|
|
3247
|
+
* Build an OPM from its blocks. `keplerian`, `spacecraft`, and `covariance`
|
|
3248
|
+
* are optional (pass `undefined`); `maneuvers` is an array (possibly empty).
|
|
3249
|
+
* `meta` carries the optional header fields (`ccsdsOpmVers`, `creationDate`,
|
|
3250
|
+
* `originator`).
|
|
3251
|
+
*/
|
|
3252
|
+
constructor(metadata: OpmMetadata, state: OpmState, keplerian: OpmKeplerian | null | undefined, spacecraft: OpmSpacecraft | null | undefined, covariance: OpmCovariance | null | undefined, maneuvers: OpmManeuver[], meta: any);
|
|
3253
|
+
/**
|
|
3254
|
+
* Encode this OPM to CCSDS OPM KVN text.
|
|
3255
|
+
*/
|
|
3256
|
+
toKvnString(): string;
|
|
3257
|
+
/**
|
|
3258
|
+
* Encode this OPM to CCSDS OPM XML text.
|
|
3259
|
+
*/
|
|
3260
|
+
toXmlString(): string;
|
|
3261
|
+
/**
|
|
3262
|
+
* CCSDS OPM version string.
|
|
3263
|
+
*/
|
|
3264
|
+
readonly ccsdsOpmVers: string;
|
|
3265
|
+
/**
|
|
3266
|
+
* Covariance block, or `undefined`.
|
|
3267
|
+
*/
|
|
3268
|
+
readonly covariance: OpmCovariance | undefined;
|
|
3269
|
+
/**
|
|
3270
|
+
* Creation date.
|
|
3271
|
+
*/
|
|
3272
|
+
readonly creationDate: string | undefined;
|
|
3273
|
+
/**
|
|
3274
|
+
* Keplerian-elements block, or `undefined`.
|
|
3275
|
+
*/
|
|
3276
|
+
readonly keplerian: OpmKeplerian | undefined;
|
|
3277
|
+
/**
|
|
3278
|
+
* Maneuver blocks in message order.
|
|
3279
|
+
*/
|
|
3280
|
+
readonly maneuvers: OpmManeuver[];
|
|
3281
|
+
/**
|
|
3282
|
+
* Metadata block.
|
|
3283
|
+
*/
|
|
3284
|
+
readonly metadata: OpmMetadata;
|
|
3285
|
+
/**
|
|
3286
|
+
* Originator.
|
|
3287
|
+
*/
|
|
3288
|
+
readonly originator: string | undefined;
|
|
3289
|
+
/**
|
|
3290
|
+
* Spacecraft-parameters block, or `undefined`.
|
|
3291
|
+
*/
|
|
3292
|
+
readonly spacecraft: OpmSpacecraft | undefined;
|
|
3293
|
+
/**
|
|
3294
|
+
* Cartesian state vector.
|
|
3295
|
+
*/
|
|
3296
|
+
readonly state: OpmState;
|
|
3297
|
+
}
|
|
3298
|
+
|
|
3299
|
+
/**
|
|
3300
|
+
* Optional OPM 6x6 state covariance.
|
|
3301
|
+
*/
|
|
3302
|
+
export class OpmCovariance {
|
|
3303
|
+
free(): void;
|
|
3304
|
+
[Symbol.dispose](): void;
|
|
3305
|
+
/**
|
|
3306
|
+
* Build the covariance block. `matrix` is a length-36 row-major
|
|
3307
|
+
* `Float64Array` for the `[r, v]` state; it must be finite, symmetric, and
|
|
3308
|
+
* positive semidefinite. `covRefFrame` is the optional frame label.
|
|
3309
|
+
*/
|
|
3310
|
+
constructor(matrix: Float64Array, cov_ref_frame?: string | null);
|
|
3311
|
+
/**
|
|
3312
|
+
* Covariance reference-frame label, or `undefined`.
|
|
3313
|
+
*/
|
|
3314
|
+
readonly covRefFrame: string | undefined;
|
|
3315
|
+
/**
|
|
3316
|
+
* The 6x6 state covariance as a length-36 row-major `Float64Array`.
|
|
3317
|
+
*/
|
|
3318
|
+
readonly matrix: Float64Array;
|
|
3319
|
+
}
|
|
3320
|
+
|
|
3321
|
+
/**
|
|
3322
|
+
* Optional OPM Keplerian-elements block.
|
|
3323
|
+
*/
|
|
3324
|
+
export class OpmKeplerian {
|
|
3325
|
+
free(): void;
|
|
3326
|
+
[Symbol.dispose](): void;
|
|
3327
|
+
/**
|
|
3328
|
+
* Build the Keplerian block. Supply exactly one of `trueAnomalyDeg` or
|
|
3329
|
+
* `meanAnomalyDeg`; throws a `TypeError` if neither or both are given.
|
|
3330
|
+
*/
|
|
3331
|
+
constructor(semi_major_axis_km: number, eccentricity: number, inclination_deg: number, ra_of_asc_node_deg: number, arg_of_pericenter_deg: number, gm_km3_s2: number, true_anomaly_deg?: number | null, mean_anomaly_deg?: number | null);
|
|
3332
|
+
/**
|
|
3333
|
+
* Argument of pericenter, degrees.
|
|
3334
|
+
*/
|
|
3335
|
+
readonly argOfPericenterDeg: number;
|
|
3336
|
+
/**
|
|
3337
|
+
* Eccentricity.
|
|
3338
|
+
*/
|
|
3339
|
+
readonly eccentricity: number;
|
|
3340
|
+
/**
|
|
3341
|
+
* Gravitational parameter, km^3/s^2.
|
|
3342
|
+
*/
|
|
3343
|
+
readonly gmKm3S2: number;
|
|
3344
|
+
/**
|
|
3345
|
+
* Inclination, degrees.
|
|
3346
|
+
*/
|
|
3347
|
+
readonly inclinationDeg: number;
|
|
3348
|
+
/**
|
|
3349
|
+
* Mean anomaly, degrees, or `undefined` when a true anomaly was supplied.
|
|
3350
|
+
*/
|
|
3351
|
+
readonly meanAnomalyDeg: number | undefined;
|
|
3352
|
+
/**
|
|
3353
|
+
* Right ascension of the ascending node, degrees.
|
|
3354
|
+
*/
|
|
3355
|
+
readonly raOfAscNodeDeg: number;
|
|
3356
|
+
/**
|
|
3357
|
+
* Semi-major axis, kilometres.
|
|
3358
|
+
*/
|
|
3359
|
+
readonly semiMajorAxisKm: number;
|
|
3360
|
+
/**
|
|
3361
|
+
* True anomaly, degrees, or `undefined` when a mean anomaly was supplied.
|
|
3362
|
+
*/
|
|
3363
|
+
readonly trueAnomalyDeg: number | undefined;
|
|
3364
|
+
}
|
|
3365
|
+
|
|
3366
|
+
/**
|
|
3367
|
+
* One OPM maneuver block. Every field is mandatory in CCSDS 502.0-B when a
|
|
3368
|
+
* maneuver is present.
|
|
3369
|
+
*/
|
|
3370
|
+
export class OpmManeuver {
|
|
3371
|
+
free(): void;
|
|
3372
|
+
[Symbol.dispose](): void;
|
|
3373
|
+
/**
|
|
3374
|
+
* Build a maneuver block. `dvKmS` is a length-3 `Float64Array` of the
|
|
3375
|
+
* delta-v in km/s.
|
|
3376
|
+
*/
|
|
3377
|
+
constructor(epoch_ignition: string, duration_s: number, delta_mass_kg: number, ref_frame: string, dv_km_s: Float64Array);
|
|
3378
|
+
/**
|
|
3379
|
+
* Change in mass, kilograms.
|
|
3380
|
+
*/
|
|
3381
|
+
readonly deltaMassKg: number;
|
|
3382
|
+
/**
|
|
3383
|
+
* Maneuver duration, seconds.
|
|
3384
|
+
*/
|
|
3385
|
+
readonly durationS: number;
|
|
3386
|
+
/**
|
|
3387
|
+
* Delta-v vector, km/s, length-3 `Float64Array`.
|
|
3388
|
+
*/
|
|
3389
|
+
readonly dvKmS: Float64Array;
|
|
3390
|
+
/**
|
|
3391
|
+
* Ignition epoch text.
|
|
3392
|
+
*/
|
|
3393
|
+
readonly epochIgnition: string;
|
|
3394
|
+
/**
|
|
3395
|
+
* Maneuver reference frame.
|
|
3396
|
+
*/
|
|
3397
|
+
readonly refFrame: string;
|
|
3398
|
+
}
|
|
3399
|
+
|
|
3400
|
+
/**
|
|
3401
|
+
* OPM metadata block: object identity, center, reference frame, and time system.
|
|
3402
|
+
*/
|
|
3403
|
+
export class OpmMetadata {
|
|
3404
|
+
free(): void;
|
|
3405
|
+
[Symbol.dispose](): void;
|
|
3406
|
+
/**
|
|
3407
|
+
* Build the OPM metadata block. Every field is mandatory in CCSDS 502.0-B.
|
|
3408
|
+
*/
|
|
3409
|
+
constructor(object_name: string, object_id: string, center_name: string, ref_frame: string, time_system: string);
|
|
3410
|
+
/**
|
|
3411
|
+
* Center name.
|
|
3412
|
+
*/
|
|
3413
|
+
readonly centerName: string;
|
|
3414
|
+
/**
|
|
3415
|
+
* Object id (COSPAR international designator).
|
|
3416
|
+
*/
|
|
3417
|
+
readonly objectId: string;
|
|
3418
|
+
/**
|
|
3419
|
+
* Object name.
|
|
3420
|
+
*/
|
|
3421
|
+
readonly objectName: string;
|
|
3422
|
+
/**
|
|
3423
|
+
* Reference frame.
|
|
3424
|
+
*/
|
|
3425
|
+
readonly refFrame: string;
|
|
3426
|
+
/**
|
|
3427
|
+
* Time system.
|
|
3428
|
+
*/
|
|
3429
|
+
readonly timeSystem: string;
|
|
3430
|
+
}
|
|
3431
|
+
|
|
3432
|
+
/**
|
|
3433
|
+
* Optional OPM spacecraft-parameters block. Every sub-field is individually
|
|
3434
|
+
* optional.
|
|
3435
|
+
*/
|
|
3436
|
+
export class OpmSpacecraft {
|
|
3437
|
+
free(): void;
|
|
3438
|
+
[Symbol.dispose](): void;
|
|
3439
|
+
/**
|
|
3440
|
+
* Build the spacecraft-parameters block. Pass `undefined` for absent fields.
|
|
1909
3441
|
*/
|
|
1910
|
-
|
|
3442
|
+
constructor(mass_kg?: number | null, solar_rad_area_m2?: number | null, solar_rad_coeff?: number | null, drag_area_m2?: number | null, drag_coeff?: number | null);
|
|
1911
3443
|
/**
|
|
1912
|
-
*
|
|
3444
|
+
* Drag area, square metres.
|
|
1913
3445
|
*/
|
|
1914
|
-
readonly
|
|
3446
|
+
readonly dragAreaM2: number | undefined;
|
|
1915
3447
|
/**
|
|
1916
|
-
*
|
|
3448
|
+
* Drag coefficient.
|
|
1917
3449
|
*/
|
|
1918
|
-
readonly
|
|
3450
|
+
readonly dragCoeff: number | undefined;
|
|
1919
3451
|
/**
|
|
1920
|
-
*
|
|
3452
|
+
* Mass, kilograms.
|
|
1921
3453
|
*/
|
|
1922
|
-
readonly
|
|
3454
|
+
readonly massKg: number | undefined;
|
|
1923
3455
|
/**
|
|
1924
|
-
*
|
|
3456
|
+
* Solar-radiation-pressure area, square metres.
|
|
1925
3457
|
*/
|
|
1926
|
-
readonly
|
|
3458
|
+
readonly solarRadAreaM2: number | undefined;
|
|
1927
3459
|
/**
|
|
1928
|
-
*
|
|
3460
|
+
* Solar-radiation-pressure coefficient.
|
|
1929
3461
|
*/
|
|
1930
|
-
readonly
|
|
3462
|
+
readonly solarRadCoeff: number | undefined;
|
|
3463
|
+
}
|
|
3464
|
+
|
|
3465
|
+
/**
|
|
3466
|
+
* OPM Cartesian state vector at the message epoch.
|
|
3467
|
+
*/
|
|
3468
|
+
export class OpmState {
|
|
3469
|
+
free(): void;
|
|
3470
|
+
[Symbol.dispose](): void;
|
|
1931
3471
|
/**
|
|
1932
|
-
*
|
|
3472
|
+
* Build the OPM state. `epoch` is carried as text; `positionKm` and
|
|
3473
|
+
* `velocityKmS` are length-3 `Float64Array`s in kilometres and km/s.
|
|
1933
3474
|
*/
|
|
1934
|
-
|
|
3475
|
+
constructor(epoch: string, position_km: Float64Array, velocity_km_s: Float64Array);
|
|
1935
3476
|
/**
|
|
1936
|
-
*
|
|
3477
|
+
* Epoch text.
|
|
1937
3478
|
*/
|
|
1938
|
-
readonly
|
|
3479
|
+
readonly epoch: string;
|
|
1939
3480
|
/**
|
|
1940
|
-
*
|
|
3481
|
+
* Position vector, kilometres, length-3 `Float64Array`.
|
|
1941
3482
|
*/
|
|
1942
|
-
readonly
|
|
3483
|
+
readonly positionKm: Float64Array;
|
|
1943
3484
|
/**
|
|
1944
|
-
*
|
|
3485
|
+
* Velocity vector, km/s, length-3 `Float64Array`.
|
|
1945
3486
|
*/
|
|
1946
|
-
readonly
|
|
3487
|
+
readonly velocityKmS: Float64Array;
|
|
3488
|
+
}
|
|
3489
|
+
|
|
3490
|
+
/**
|
|
3491
|
+
* The result of [`parseTleFile`]: the satellites that parsed, plus a count of
|
|
3492
|
+
* complete records that were skipped because SGP4 initialization failed.
|
|
3493
|
+
*/
|
|
3494
|
+
export class ParsedTleFile {
|
|
3495
|
+
private constructor();
|
|
3496
|
+
free(): void;
|
|
3497
|
+
[Symbol.dispose](): void;
|
|
1947
3498
|
/**
|
|
1948
|
-
*
|
|
3499
|
+
* Number of satellites that parsed (length of `satellites`).
|
|
1949
3500
|
*/
|
|
1950
|
-
readonly
|
|
3501
|
+
readonly count: number;
|
|
1951
3502
|
/**
|
|
1952
|
-
*
|
|
3503
|
+
* The successfully parsed satellites, in file order, each as a `{ name, tle }`.
|
|
1953
3504
|
*/
|
|
1954
|
-
readonly
|
|
3505
|
+
readonly satellites: NamedTle[];
|
|
1955
3506
|
/**
|
|
1956
|
-
*
|
|
3507
|
+
* How many complete `(line 1, line 2)` records were found but skipped
|
|
3508
|
+
* because their element set failed SGP4 initialization.
|
|
1957
3509
|
*/
|
|
1958
|
-
readonly
|
|
3510
|
+
readonly skipped: number;
|
|
1959
3511
|
}
|
|
1960
3512
|
|
|
1961
3513
|
/**
|
|
1962
|
-
*
|
|
3514
|
+
* A long span represented by contiguous independently-fitted reduced-orbit
|
|
3515
|
+
* segments. Carries the fitted segments and the time scale they were fitted in;
|
|
3516
|
+
* evaluate and drift queries reuse that scale.
|
|
1963
3517
|
*/
|
|
1964
|
-
export class
|
|
3518
|
+
export class PiecewiseOrbit {
|
|
3519
|
+
private constructor();
|
|
1965
3520
|
free(): void;
|
|
1966
3521
|
[Symbol.dispose](): void;
|
|
1967
3522
|
/**
|
|
1968
|
-
*
|
|
1969
|
-
*
|
|
3523
|
+
* Evaluate the piecewise model against `truth` ECEF samples, flagging the
|
|
3524
|
+
* first epoch whose error exceeds `thresholdM`. Truth samples outside the
|
|
3525
|
+
* model span are skipped. Delegates to
|
|
3526
|
+
* `sidereon_core::orbit::piecewise_drift`.
|
|
1970
3527
|
*/
|
|
1971
|
-
|
|
3528
|
+
drift(truth: any, threshold_m: number): ReducedOrbitDrift;
|
|
1972
3529
|
/**
|
|
1973
|
-
*
|
|
3530
|
+
* Sample an SP3 product and evaluate this piecewise model against those
|
|
3531
|
+
* positions. Delegates to
|
|
3532
|
+
* `sidereon_core::orbit::drift_piecewise_reduced_orbit_source`.
|
|
1974
3533
|
*/
|
|
1975
|
-
|
|
3534
|
+
driftSp3(sp3: Sp3, satellite: string, options: any): ReducedOrbitDrift;
|
|
1976
3535
|
/**
|
|
1977
|
-
*
|
|
3536
|
+
* Sample a TLE/SGP4 source in UTC and evaluate this piecewise model against
|
|
3537
|
+
* those positions. Delegates to
|
|
3538
|
+
* `sidereon_core::orbit::drift_piecewise_reduced_orbit_source`.
|
|
1978
3539
|
*/
|
|
1979
|
-
|
|
3540
|
+
driftTle(tle: Tle, options: any): ReducedOrbitDrift;
|
|
1980
3541
|
/**
|
|
1981
|
-
*
|
|
3542
|
+
* Evaluate the piecewise model position at `query` in `frame` (`"ecef"` or
|
|
3543
|
+
* `"gcrs"`). Delegates to `sidereon_core::orbit::piecewise_position`.
|
|
1982
3544
|
*/
|
|
1983
|
-
|
|
3545
|
+
position(query: any, frame: string): Float64Array;
|
|
1984
3546
|
/**
|
|
1985
|
-
*
|
|
3547
|
+
* Evaluate the piecewise model position and velocity at `query` in `frame`.
|
|
3548
|
+
* Delegates to `sidereon_core::orbit::piecewise_position_velocity`.
|
|
1986
3549
|
*/
|
|
1987
|
-
|
|
3550
|
+
positionVelocity(query: any, frame: string): ReducedOrbitState;
|
|
1988
3551
|
/**
|
|
1989
|
-
*
|
|
3552
|
+
* Zero-based index of the segment covering `query`. Delegates to
|
|
3553
|
+
* `sidereon_core::orbit::select_piecewise_segment`. Throws an `Error` when
|
|
3554
|
+
* the epoch is outside coverage.
|
|
1990
3555
|
*/
|
|
1991
|
-
|
|
3556
|
+
segmentIndexAt(query: any): number;
|
|
1992
3557
|
/**
|
|
1993
|
-
*
|
|
3558
|
+
* Model label, `"circular_secular"` or `"eccentric_secular"`.
|
|
1994
3559
|
*/
|
|
1995
|
-
readonly
|
|
3560
|
+
readonly model: string;
|
|
1996
3561
|
/**
|
|
1997
|
-
*
|
|
3562
|
+
* Number of contiguous fitted segments.
|
|
1998
3563
|
*/
|
|
1999
|
-
readonly
|
|
3564
|
+
readonly segmentCount: number;
|
|
2000
3565
|
/**
|
|
2001
|
-
*
|
|
3566
|
+
* Rounded segment length used to tile the requested window, seconds.
|
|
2002
3567
|
*/
|
|
2003
|
-
readonly
|
|
3568
|
+
readonly segmentSeconds: bigint;
|
|
3569
|
+
}
|
|
3570
|
+
|
|
3571
|
+
/**
|
|
3572
|
+
* Source-backed piecewise reduced-orbit fit result.
|
|
3573
|
+
*/
|
|
3574
|
+
export class PiecewiseOrbitSourceFit {
|
|
3575
|
+
private constructor();
|
|
3576
|
+
free(): void;
|
|
3577
|
+
[Symbol.dispose](): void;
|
|
3578
|
+
/**
|
|
3579
|
+
* The fitted piecewise reduced-orbit model.
|
|
3580
|
+
*/
|
|
3581
|
+
readonly orbit: PiecewiseOrbit;
|
|
3582
|
+
/**
|
|
3583
|
+
* Number of samples requested from the source.
|
|
3584
|
+
*/
|
|
3585
|
+
readonly requestedSamples: number;
|
|
3586
|
+
/**
|
|
3587
|
+
* Number of source samples used by all fitted segments.
|
|
3588
|
+
*/
|
|
3589
|
+
readonly usedSamples: number;
|
|
2004
3590
|
}
|
|
2005
3591
|
|
|
2006
3592
|
/**
|
|
@@ -2077,6 +3663,92 @@ export class PppFloatSolution {
|
|
|
2077
3663
|
readonly ztdResidualM: number | undefined;
|
|
2078
3664
|
}
|
|
2079
3665
|
|
|
3666
|
+
/**
|
|
3667
|
+
* The per-request results of a batch observable prediction, index-aligned to
|
|
3668
|
+
* the input requests. Each request independently either produced observables or
|
|
3669
|
+
* failed; query a request with [`PredictBatch.isOk`] /
|
|
3670
|
+
* [`PredictBatch.observables`] / [`PredictBatch.error`].
|
|
3671
|
+
*/
|
|
3672
|
+
export class PredictBatch {
|
|
3673
|
+
private constructor();
|
|
3674
|
+
free(): void;
|
|
3675
|
+
[Symbol.dispose](): void;
|
|
3676
|
+
/**
|
|
3677
|
+
* The failure message for request `index`, or `undefined` when it
|
|
3678
|
+
* succeeded. Throws a `RangeError` for an out-of-range index.
|
|
3679
|
+
*/
|
|
3680
|
+
error(index: number): string | undefined;
|
|
3681
|
+
/**
|
|
3682
|
+
* Whether request `index` produced observables. Throws a `RangeError` for
|
|
3683
|
+
* an out-of-range index.
|
|
3684
|
+
*/
|
|
3685
|
+
isOk(index: number): boolean;
|
|
3686
|
+
/**
|
|
3687
|
+
* The observables for request `index`. Throws a `RangeError` for an
|
|
3688
|
+
* out-of-range index and an `Error` carrying that request's failure message
|
|
3689
|
+
* when the prediction failed (check [`PredictBatch.isOk`] first).
|
|
3690
|
+
*/
|
|
3691
|
+
observables(index: number): PredictedObservables;
|
|
3692
|
+
/**
|
|
3693
|
+
* Number of requests in the batch.
|
|
3694
|
+
*/
|
|
3695
|
+
readonly count: number;
|
|
3696
|
+
}
|
|
3697
|
+
|
|
3698
|
+
/**
|
|
3699
|
+
* Predicted GNSS observables for one satellite at one receive epoch. Every
|
|
3700
|
+
* field is computed by `sidereon_core::observables::predict`.
|
|
3701
|
+
*/
|
|
3702
|
+
export class PredictedObservables {
|
|
3703
|
+
private constructor();
|
|
3704
|
+
free(): void;
|
|
3705
|
+
[Symbol.dispose](): void;
|
|
3706
|
+
/**
|
|
3707
|
+
* Topocentric azimuth in `[0, 360)`, degrees.
|
|
3708
|
+
*/
|
|
3709
|
+
readonly azimuthDeg: number;
|
|
3710
|
+
/**
|
|
3711
|
+
* Doppler shift at the option carrier frequency, hertz.
|
|
3712
|
+
*/
|
|
3713
|
+
readonly dopplerHz: number;
|
|
3714
|
+
/**
|
|
3715
|
+
* Topocentric elevation, degrees.
|
|
3716
|
+
*/
|
|
3717
|
+
readonly elevationDeg: number;
|
|
3718
|
+
/**
|
|
3719
|
+
* Geometric range after optional Sagnac rotation, metres.
|
|
3720
|
+
*/
|
|
3721
|
+
readonly geometricRangeM: number;
|
|
3722
|
+
/**
|
|
3723
|
+
* Receiver-to-satellite line-of-sight unit vector in ECEF, `[x, y, z]`.
|
|
3724
|
+
*/
|
|
3725
|
+
readonly losUnit: Float64Array;
|
|
3726
|
+
/**
|
|
3727
|
+
* Range-rate line-of-sight projection, metres per second.
|
|
3728
|
+
*/
|
|
3729
|
+
readonly rangeRateMS: number;
|
|
3730
|
+
/**
|
|
3731
|
+
* Satellite clock offset at transmit time, seconds, or `undefined`.
|
|
3732
|
+
*/
|
|
3733
|
+
readonly satClockS: number | undefined;
|
|
3734
|
+
/**
|
|
3735
|
+
* Sagnac-rotated satellite ECEF position, metres, `[x, y, z]`.
|
|
3736
|
+
*/
|
|
3737
|
+
readonly satPosEcefM: Float64Array;
|
|
3738
|
+
/**
|
|
3739
|
+
* Sagnac-rotated satellite ECEF velocity, metres per second, `[vx, vy, vz]`.
|
|
3740
|
+
*/
|
|
3741
|
+
readonly satVelocityMS: Float64Array;
|
|
3742
|
+
/**
|
|
3743
|
+
* Transmit-time offset from receive time, rounded to microseconds.
|
|
3744
|
+
*/
|
|
3745
|
+
readonly transmitOffsetUs: bigint;
|
|
3746
|
+
/**
|
|
3747
|
+
* Transmit time as seconds since J2000.
|
|
3748
|
+
*/
|
|
3749
|
+
readonly transmitTimeJ2000S: number;
|
|
3750
|
+
}
|
|
3751
|
+
|
|
2080
3752
|
/**
|
|
2081
3753
|
* Reason a satellite was dropped from paired pseudorange combination.
|
|
2082
3754
|
*/
|
|
@@ -2153,6 +3825,136 @@ export class RaimWeights {
|
|
|
2153
3825
|
readonly weights: Float64Array;
|
|
2154
3826
|
}
|
|
2155
3827
|
|
|
3828
|
+
/**
|
|
3829
|
+
* A fitted compact reduced-orbit model. Carries the fitted elements and the
|
|
3830
|
+
* time scale they were fitted in; evaluate and drift queries reuse that scale.
|
|
3831
|
+
*/
|
|
3832
|
+
export class ReducedOrbit {
|
|
3833
|
+
private constructor();
|
|
3834
|
+
free(): void;
|
|
3835
|
+
[Symbol.dispose](): void;
|
|
3836
|
+
/**
|
|
3837
|
+
* Evaluate the model against `truth` ECEF samples, flagging the first epoch
|
|
3838
|
+
* whose error exceeds `thresholdM`. Delegates to
|
|
3839
|
+
* `sidereon_core::orbit::drift`.
|
|
3840
|
+
*/
|
|
3841
|
+
drift(truth: any, threshold_m: number): ReducedOrbitDrift;
|
|
3842
|
+
/**
|
|
3843
|
+
* Sample an SP3 product and evaluate this model against those positions.
|
|
3844
|
+
* Delegates to `sidereon_core::orbit::drift_reduced_orbit_source`.
|
|
3845
|
+
*/
|
|
3846
|
+
driftSp3(sp3: Sp3, satellite: string, options: any): ReducedOrbitDrift;
|
|
3847
|
+
/**
|
|
3848
|
+
* Sample a TLE/SGP4 source in UTC and evaluate this model against those
|
|
3849
|
+
* positions. Delegates to
|
|
3850
|
+
* `sidereon_core::orbit::drift_reduced_orbit_source`.
|
|
3851
|
+
*/
|
|
3852
|
+
driftTle(tle: Tle, options: any): ReducedOrbitDrift;
|
|
3853
|
+
/**
|
|
3854
|
+
* Evaluate the model position at `query` in `frame` (`"ecef"` or
|
|
3855
|
+
* `"gcrs"`). Delegates to `sidereon_core::orbit::position`.
|
|
3856
|
+
*/
|
|
3857
|
+
position(query: any, frame: string): Float64Array;
|
|
3858
|
+
/**
|
|
3859
|
+
* Evaluate the model position and velocity at `query` in `frame`.
|
|
3860
|
+
* Delegates to `sidereon_core::orbit::position_velocity`.
|
|
3861
|
+
*/
|
|
3862
|
+
positionVelocity(query: any, frame: string): ReducedOrbitState;
|
|
3863
|
+
/**
|
|
3864
|
+
* Fitted mean elements as a `Float64Array`:
|
|
3865
|
+
* `[a_m, e, i, raan, raanRate, raanRateJ2, argLat, n]` for the circular
|
|
3866
|
+
* model, with `[h, k, argPerigee]` appended for the eccentric model.
|
|
3867
|
+
*/
|
|
3868
|
+
readonly elements: Float64Array;
|
|
3869
|
+
/**
|
|
3870
|
+
* Fit residual maximum over the samples, metres.
|
|
3871
|
+
*/
|
|
3872
|
+
readonly maxM: number;
|
|
3873
|
+
/**
|
|
3874
|
+
* Model label, `"circular_secular"` or `"eccentric_secular"`.
|
|
3875
|
+
*/
|
|
3876
|
+
readonly model: string;
|
|
3877
|
+
/**
|
|
3878
|
+
* Number of samples used in the fit.
|
|
3879
|
+
*/
|
|
3880
|
+
readonly nSamples: number;
|
|
3881
|
+
/**
|
|
3882
|
+
* Fit residual RMS over the samples, metres.
|
|
3883
|
+
*/
|
|
3884
|
+
readonly rmsM: number;
|
|
3885
|
+
}
|
|
3886
|
+
|
|
3887
|
+
/**
|
|
3888
|
+
* Model-vs-truth drift report from `drift`.
|
|
3889
|
+
*/
|
|
3890
|
+
export class ReducedOrbitDrift {
|
|
3891
|
+
private constructor();
|
|
3892
|
+
free(): void;
|
|
3893
|
+
[Symbol.dispose](): void;
|
|
3894
|
+
/**
|
|
3895
|
+
* Per-epoch position error magnitudes, metres, in input order.
|
|
3896
|
+
*/
|
|
3897
|
+
readonly errorsM: Float64Array;
|
|
3898
|
+
/**
|
|
3899
|
+
* Maximum error over the horizon, metres.
|
|
3900
|
+
*/
|
|
3901
|
+
readonly maxM: number;
|
|
3902
|
+
/**
|
|
3903
|
+
* Number of samples requested from the source or supplied by the caller.
|
|
3904
|
+
*/
|
|
3905
|
+
readonly requestedSamples: number;
|
|
3906
|
+
/**
|
|
3907
|
+
* Root-mean-square error over the horizon, metres.
|
|
3908
|
+
*/
|
|
3909
|
+
readonly rmsM: number;
|
|
3910
|
+
/**
|
|
3911
|
+
* Index of the first epoch whose error exceeds the threshold, or `-1`.
|
|
3912
|
+
*/
|
|
3913
|
+
readonly thresholdIndex: bigint;
|
|
3914
|
+
/**
|
|
3915
|
+
* Number of samples evaluated in the drift report.
|
|
3916
|
+
*/
|
|
3917
|
+
readonly usedSamples: number;
|
|
3918
|
+
}
|
|
3919
|
+
|
|
3920
|
+
/**
|
|
3921
|
+
* Source-backed reduced-orbit fit result.
|
|
3922
|
+
*/
|
|
3923
|
+
export class ReducedOrbitSourceFit {
|
|
3924
|
+
private constructor();
|
|
3925
|
+
free(): void;
|
|
3926
|
+
[Symbol.dispose](): void;
|
|
3927
|
+
/**
|
|
3928
|
+
* The fitted reduced-orbit model.
|
|
3929
|
+
*/
|
|
3930
|
+
readonly orbit: ReducedOrbit;
|
|
3931
|
+
/**
|
|
3932
|
+
* Number of samples requested from the source.
|
|
3933
|
+
*/
|
|
3934
|
+
readonly requestedSamples: number;
|
|
3935
|
+
/**
|
|
3936
|
+
* Number of source samples used by the fit.
|
|
3937
|
+
*/
|
|
3938
|
+
readonly usedSamples: number;
|
|
3939
|
+
}
|
|
3940
|
+
|
|
3941
|
+
/**
|
|
3942
|
+
* Receiver model position and velocity from `positionVelocity`.
|
|
3943
|
+
*/
|
|
3944
|
+
export class ReducedOrbitState {
|
|
3945
|
+
private constructor();
|
|
3946
|
+
free(): void;
|
|
3947
|
+
[Symbol.dispose](): void;
|
|
3948
|
+
/**
|
|
3949
|
+
* Model position `[x, y, z]`, metres.
|
|
3950
|
+
*/
|
|
3951
|
+
readonly positionM: Float64Array;
|
|
3952
|
+
/**
|
|
3953
|
+
* Model velocity `[vx, vy, vz]`, metres per second.
|
|
3954
|
+
*/
|
|
3955
|
+
readonly velocityMS: Float64Array;
|
|
3956
|
+
}
|
|
3957
|
+
|
|
2156
3958
|
/**
|
|
2157
3959
|
* A parsed RINEX clock product with satellite clock-bias interpolation.
|
|
2158
3960
|
*/
|
|
@@ -2174,6 +3976,12 @@ export class RinexClock {
|
|
|
2174
3976
|
* One satellite's clock series, or `undefined` if the satellite is absent.
|
|
2175
3977
|
*/
|
|
2176
3978
|
seriesFor(satellite_id: string): ClockSeries | undefined;
|
|
3979
|
+
/**
|
|
3980
|
+
* Serialize to standard RINEX clock text. Deterministic: the same product
|
|
3981
|
+
* always produces byte-identical text, and re-parsing the output reproduces
|
|
3982
|
+
* the same time scale and per-satellite bias series.
|
|
3983
|
+
*/
|
|
3984
|
+
toRinexString(): string;
|
|
2177
3985
|
/**
|
|
2178
3986
|
* Total number of parsed satellite clock samples.
|
|
2179
3987
|
*/
|
|
@@ -2219,6 +4027,12 @@ export class RinexObs {
|
|
|
2219
4027
|
* Extract single-frequency pseudoranges for one epoch.
|
|
2220
4028
|
*/
|
|
2221
4029
|
pseudoranges(epoch_index: number, policy?: SignalPolicy | null): PseudorangeSeries;
|
|
4030
|
+
/**
|
|
4031
|
+
* Serialize to standard RINEX 3 observation text. Deterministic: the same
|
|
4032
|
+
* product always produces byte-identical text, and re-parsing the output
|
|
4033
|
+
* reproduces the same header and epochs.
|
|
4034
|
+
*/
|
|
4035
|
+
toRinexString(): string;
|
|
2222
4036
|
/**
|
|
2223
4037
|
* Number of parsed epoch records.
|
|
2224
4038
|
*/
|
|
@@ -2456,6 +4270,21 @@ export class Sp3 {
|
|
|
2456
4270
|
private constructor();
|
|
2457
4271
|
free(): void;
|
|
2458
4272
|
[Symbol.dispose](): void;
|
|
4273
|
+
/**
|
|
4274
|
+
* Return a copy of `other` with its clocks shifted onto this product's
|
|
4275
|
+
* clock datum. Epochs without an offset estimate are left unchanged.
|
|
4276
|
+
* Delegates to `sidereon_core::ephemeris::align_clock_reference`.
|
|
4277
|
+
*/
|
|
4278
|
+
alignClockReference(other: Sp3, min_common?: number | null): Sp3;
|
|
4279
|
+
/**
|
|
4280
|
+
* Estimate `other`'s per-epoch common clock offset relative to this product.
|
|
4281
|
+
*
|
|
4282
|
+
* The result is one row per matched epoch with enough common clocked
|
|
4283
|
+
* satellites. Subtract `offsetS` from `other` clocks to put them on this
|
|
4284
|
+
* product's clock datum. Delegates to
|
|
4285
|
+
* `sidereon_core::ephemeris::clock_reference_offset`.
|
|
4286
|
+
*/
|
|
4287
|
+
clockReferenceOffset(other: Sp3, min_common?: number | null): Sp3ClockReferenceOffset[];
|
|
2459
4288
|
/**
|
|
2460
4289
|
* Compute DGNSS pseudorange corrections from a surveyed base station.
|
|
2461
4290
|
*
|
|
@@ -2502,6 +4331,16 @@ export class Sp3 {
|
|
|
2502
4331
|
* a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
2503
4332
|
*/
|
|
2504
4333
|
solveSpp(request: any): SppSolution;
|
|
4334
|
+
/**
|
|
4335
|
+
* Solve a batch of independent SPP epochs against this ephemeris in one call.
|
|
4336
|
+
*
|
|
4337
|
+
* `epochs` is an array of SPP request objects (the `SppRequest` shape) and
|
|
4338
|
+
* `options` the shared `{ withGeodetic?, maxPdop?, coarseSearchSeeds? }`
|
|
4339
|
+
* applied to every epoch. Returns an `SppBatchSolution` whose per-epoch
|
|
4340
|
+
* results are index-aligned to `epochs`; each epoch independently converged
|
|
4341
|
+
* or failed. Delegates to the serial reference batch kernel.
|
|
4342
|
+
*/
|
|
4343
|
+
solveSppBatch(epochs: any, options: any): SppBatchSolution;
|
|
2505
4344
|
/**
|
|
2506
4345
|
* The exact parsed state of `satellite` at record `epochIndex` (no
|
|
2507
4346
|
* interpolation). Throws a `RangeError` past the last epoch and a
|
|
@@ -2523,6 +4362,74 @@ export class Sp3 {
|
|
|
2523
4362
|
readonly satellites: string[];
|
|
2524
4363
|
}
|
|
2525
4364
|
|
|
4365
|
+
/**
|
|
4366
|
+
* Per-(epoch, satellite) agreement statistics for one accepted merged cell:
|
|
4367
|
+
* how tightly the consensus sources clustered about the combined value.
|
|
4368
|
+
*/
|
|
4369
|
+
export class Sp3AgreementMetric {
|
|
4370
|
+
private constructor();
|
|
4371
|
+
free(): void;
|
|
4372
|
+
[Symbol.dispose](): void;
|
|
4373
|
+
/**
|
|
4374
|
+
* Largest absolute clock deviation from the combined clock, seconds;
|
|
4375
|
+
* `undefined` when the cell carries no clock.
|
|
4376
|
+
*/
|
|
4377
|
+
readonly clockMaxS: number | undefined;
|
|
4378
|
+
/**
|
|
4379
|
+
* Number of sources in the accepted clock consensus (0 when the cell
|
|
4380
|
+
* carries no clock).
|
|
4381
|
+
*/
|
|
4382
|
+
readonly clockMembers: number;
|
|
4383
|
+
/**
|
|
4384
|
+
* RMS of the consensus members' deviation from the combined clock, seconds;
|
|
4385
|
+
* `undefined` when the cell carries no clock.
|
|
4386
|
+
*/
|
|
4387
|
+
readonly clockRmsS: number | undefined;
|
|
4388
|
+
/**
|
|
4389
|
+
* Cell epoch as seconds since J2000 in the product time scale.
|
|
4390
|
+
*/
|
|
4391
|
+
readonly epochJ2000Seconds: number;
|
|
4392
|
+
/**
|
|
4393
|
+
* Largest 3D distance of any consensus member from the combined position,
|
|
4394
|
+
* metres.
|
|
4395
|
+
*/
|
|
4396
|
+
readonly positionMaxM: number;
|
|
4397
|
+
/**
|
|
4398
|
+
* Number of sources in the accepted position consensus (>= 1).
|
|
4399
|
+
*/
|
|
4400
|
+
readonly positionMembers: number;
|
|
4401
|
+
/**
|
|
4402
|
+
* RMS of the consensus members' 3D distance from the combined position,
|
|
4403
|
+
* metres (zero for a single-source cell).
|
|
4404
|
+
*/
|
|
4405
|
+
readonly positionRmsM: number;
|
|
4406
|
+
/**
|
|
4407
|
+
* Satellite token, e.g. `"G01"`.
|
|
4408
|
+
*/
|
|
4409
|
+
readonly satellite: string;
|
|
4410
|
+
}
|
|
4411
|
+
|
|
4412
|
+
/**
|
|
4413
|
+
* One epoch's common clock offset between two SP3 products.
|
|
4414
|
+
*/
|
|
4415
|
+
export class Sp3ClockReferenceOffset {
|
|
4416
|
+
private constructor();
|
|
4417
|
+
free(): void;
|
|
4418
|
+
[Symbol.dispose](): void;
|
|
4419
|
+
/**
|
|
4420
|
+
* Matched epoch as seconds since J2000 in the product time scale.
|
|
4421
|
+
*/
|
|
4422
|
+
readonly epochJ2000Seconds: number;
|
|
4423
|
+
/**
|
|
4424
|
+
* `other - reference` clock datum, seconds.
|
|
4425
|
+
*/
|
|
4426
|
+
readonly offsetS: number;
|
|
4427
|
+
/**
|
|
4428
|
+
* Number of satellites used in the median offset estimate.
|
|
4429
|
+
*/
|
|
4430
|
+
readonly satellites: number;
|
|
4431
|
+
}
|
|
4432
|
+
|
|
2526
4433
|
/**
|
|
2527
4434
|
* A batch of interpolated SP3 states.
|
|
2528
4435
|
*/
|
|
@@ -2574,6 +4481,13 @@ export class Sp3MergeReport {
|
|
|
2574
4481
|
private constructor();
|
|
2575
4482
|
free(): void;
|
|
2576
4483
|
[Symbol.dispose](): void;
|
|
4484
|
+
/**
|
|
4485
|
+
* Per-(epoch, satellite) agreement statistics for every accepted cell, in
|
|
4486
|
+
* output (epoch, then satellite) order — one entry per cell written to the
|
|
4487
|
+
* merged product.
|
|
4488
|
+
*/
|
|
4489
|
+
readonly agreement: Sp3AgreementMetric[];
|
|
4490
|
+
readonly agreementCount: number;
|
|
2577
4491
|
readonly positionOutlierCount: number;
|
|
2578
4492
|
/**
|
|
2579
4493
|
* Cells where an accepted consensus rejected source outliers.
|
|
@@ -2672,6 +4586,29 @@ export class Sp3State {
|
|
|
2672
4586
|
readonly velocityMS: Float64Array | undefined;
|
|
2673
4587
|
}
|
|
2674
4588
|
|
|
4589
|
+
/**
|
|
4590
|
+
* Canonical quiet-Sun space-weather indices for NRLMSISE-00, mirrored from the
|
|
4591
|
+
* core so a JS caller can pass moderate-activity defaults to [`atmosphereDensity`]
|
|
4592
|
+
* without re-deriving the magic numbers.
|
|
4593
|
+
*/
|
|
4594
|
+
export class SpaceWeatherDefaults {
|
|
4595
|
+
private constructor();
|
|
4596
|
+
free(): void;
|
|
4597
|
+
[Symbol.dispose](): void;
|
|
4598
|
+
/**
|
|
4599
|
+
* Daily magnetic Ap index.
|
|
4600
|
+
*/
|
|
4601
|
+
readonly ap: number;
|
|
4602
|
+
/**
|
|
4603
|
+
* Daily F10.7 solar radio flux.
|
|
4604
|
+
*/
|
|
4605
|
+
readonly f107: number;
|
|
4606
|
+
/**
|
|
4607
|
+
* 81-day centred F10.7 average.
|
|
4608
|
+
*/
|
|
4609
|
+
readonly f107a: number;
|
|
4610
|
+
}
|
|
4611
|
+
|
|
2675
4612
|
/**
|
|
2676
4613
|
* A parsed in-memory JPL/NAIF SPK kernel.
|
|
2677
4614
|
*
|
|
@@ -2790,6 +4727,38 @@ export class SpkState {
|
|
|
2790
4727
|
readonly velocityKmS: Float64Array | undefined;
|
|
2791
4728
|
}
|
|
2792
4729
|
|
|
4730
|
+
/**
|
|
4731
|
+
* The per-epoch results of a batch SPP solve, index-aligned to the input epochs.
|
|
4732
|
+
* Each epoch independently either converged to a solution or failed; query an
|
|
4733
|
+
* epoch with [`SppBatchSolution.isOk`] / [`SppBatchSolution.solution`] /
|
|
4734
|
+
* [`SppBatchSolution.error`].
|
|
4735
|
+
*/
|
|
4736
|
+
export class SppBatchSolution {
|
|
4737
|
+
private constructor();
|
|
4738
|
+
free(): void;
|
|
4739
|
+
[Symbol.dispose](): void;
|
|
4740
|
+
/**
|
|
4741
|
+
* The solve-failure message for epoch `index`, or `undefined` when the epoch
|
|
4742
|
+
* converged. Throws a `RangeError` for an out-of-range index.
|
|
4743
|
+
*/
|
|
4744
|
+
error(index: number): string | undefined;
|
|
4745
|
+
/**
|
|
4746
|
+
* Whether epoch `index` converged to a solution. Throws a `RangeError` for
|
|
4747
|
+
* an out-of-range index.
|
|
4748
|
+
*/
|
|
4749
|
+
isOk(index: number): boolean;
|
|
4750
|
+
/**
|
|
4751
|
+
* The solution for epoch `index`. Throws a `RangeError` for an out-of-range
|
|
4752
|
+
* index and an `Error` carrying that epoch's solve-failure message when the
|
|
4753
|
+
* epoch did not converge (check [`SppBatchSolution.isOk`] first).
|
|
4754
|
+
*/
|
|
4755
|
+
solution(index: number): SppSolution;
|
|
4756
|
+
/**
|
|
4757
|
+
* Number of epochs in the batch (equals the input epoch count).
|
|
4758
|
+
*/
|
|
4759
|
+
readonly count: number;
|
|
4760
|
+
}
|
|
4761
|
+
|
|
2793
4762
|
/**
|
|
2794
4763
|
* The result of an SPP solve.
|
|
2795
4764
|
*/
|
|
@@ -2797,6 +4766,12 @@ export class SppSolution {
|
|
|
2797
4766
|
private constructor();
|
|
2798
4767
|
free(): void;
|
|
2799
4768
|
[Symbol.dispose](): void;
|
|
4769
|
+
/**
|
|
4770
|
+
* Dilution-of-precision scalars (GDOP/PDOP/HDOP/VDOP/TDOP) from the
|
|
4771
|
+
* converged geometry, or `undefined` when the converged geometry is
|
|
4772
|
+
* rank-deficient. The same `Dop` produced by [`gnssDop`](crate::gnss_dop).
|
|
4773
|
+
*/
|
|
4774
|
+
readonly dop: Dop | undefined;
|
|
2800
4775
|
/**
|
|
2801
4776
|
* `[latRad, lonRad, heightM]` as a `Float64Array` if the solve was asked
|
|
2802
4777
|
* for geodetic output, otherwise `undefined`.
|
|
@@ -2814,6 +4789,13 @@ export class SppSolution {
|
|
|
2814
4789
|
* Receiver clock bias, seconds.
|
|
2815
4790
|
*/
|
|
2816
4791
|
readonly rxClockS: number;
|
|
4792
|
+
/**
|
|
4793
|
+
* Per-constellation time (clock) DOP as a `{ system, tdop }[]`, one entry
|
|
4794
|
+
* per GNSS in the solve in ascending system order (the same order as the
|
|
4795
|
+
* per-system clocks). The first entry's `tdop` equals the reference clock's
|
|
4796
|
+
* `dop.tdop`. Empty when the converged geometry is rank-deficient.
|
|
4797
|
+
*/
|
|
4798
|
+
readonly systemTdops: any;
|
|
2817
4799
|
/**
|
|
2818
4800
|
* Satellite tokens used in the accepted solution, ascending.
|
|
2819
4801
|
*/
|
|
@@ -2893,6 +4875,14 @@ export enum TimeScale {
|
|
|
2893
4875
|
* BeiDou Time.
|
|
2894
4876
|
*/
|
|
2895
4877
|
Bdt = 6,
|
|
4878
|
+
/**
|
|
4879
|
+
* GLONASS system time (UTC(SU)-based, leap-second carrying).
|
|
4880
|
+
*/
|
|
4881
|
+
Glonasst = 7,
|
|
4882
|
+
/**
|
|
4883
|
+
* QZSS system time (steered to GPST).
|
|
4884
|
+
*/
|
|
4885
|
+
Qzsst = 8,
|
|
2896
4886
|
}
|
|
2897
4887
|
|
|
2898
4888
|
/**
|
|
@@ -2908,6 +4898,14 @@ export class Tle {
|
|
|
2908
4898
|
* an end at or before the start.
|
|
2909
4899
|
*/
|
|
2910
4900
|
findPasses(station: GroundStation, start_unix_us: bigint, end_unix_us: bigint, elevation_mask_deg?: number | null, step_seconds?: number | null, time_tolerance_s?: number | null): SatellitePass[];
|
|
4901
|
+
/**
|
|
4902
|
+
* Sub-satellite (ground-track) WGS84 geodetic points over a `BigInt64Array`
|
|
4903
|
+
* of unix-microsecond epochs. For each epoch the satellite is propagated to
|
|
4904
|
+
* TEME and reduced TEME->GCRS->ECEF->geodetic by the engine's own transforms,
|
|
4905
|
+
* honoring this `Tle`'s opsmode. Throws an `Error` on propagation or frame
|
|
4906
|
+
* failure.
|
|
4907
|
+
*/
|
|
4908
|
+
groundTrack(epochs_unix_us: BigInt64Array): GroundTrack;
|
|
2911
4909
|
/**
|
|
2912
4910
|
* Topocentric azimuth/elevation/range from `station` over a
|
|
2913
4911
|
* `BigInt64Array` of unix-microsecond epochs. Throws an `Error` on failure.
|
|
@@ -3132,6 +5130,38 @@ export class VisibilitySeries {
|
|
|
3132
5130
|
readonly visible: Uint8Array;
|
|
3133
5131
|
}
|
|
3134
5132
|
|
|
5133
|
+
/**
|
|
5134
|
+
* One satellite visible above the elevation mask at a single instant, from
|
|
5135
|
+
* [`visibleFromSatellites`].
|
|
5136
|
+
*/
|
|
5137
|
+
export class VisibleSatellite {
|
|
5138
|
+
private constructor();
|
|
5139
|
+
free(): void;
|
|
5140
|
+
[Symbol.dispose](): void;
|
|
5141
|
+
/**
|
|
5142
|
+
* Topocentric azimuth, degrees clockwise from north.
|
|
5143
|
+
*/
|
|
5144
|
+
readonly azimuthDeg: number;
|
|
5145
|
+
/**
|
|
5146
|
+
* The caller-supplied identity (the `ids[i]` paired with this satellite):
|
|
5147
|
+
* a NORAD catalog number, a name, or whatever the caller chose.
|
|
5148
|
+
*/
|
|
5149
|
+
readonly catalogNumber: string;
|
|
5150
|
+
/**
|
|
5151
|
+
* Topocentric elevation, degrees above the horizon.
|
|
5152
|
+
*/
|
|
5153
|
+
readonly elevationDeg: number;
|
|
5154
|
+
/**
|
|
5155
|
+
* TEME position of the satellite at the instant, km, as a length-3
|
|
5156
|
+
* `Float64Array` `[x, y, z]`.
|
|
5157
|
+
*/
|
|
5158
|
+
readonly positionKm: Float64Array;
|
|
5159
|
+
/**
|
|
5160
|
+
* Slant range from the ground station, kilometres.
|
|
5161
|
+
*/
|
|
5162
|
+
readonly rangeKm: number;
|
|
5163
|
+
}
|
|
5164
|
+
|
|
3135
5165
|
/**
|
|
3136
5166
|
* WGS84 receiver geodetic coordinates (radians, metres) for DOP.
|
|
3137
5167
|
*/
|
|
@@ -3180,6 +5210,40 @@ export class ZenithDelay {
|
|
|
3180
5210
|
*/
|
|
3181
5211
|
export function acquire(samples: Float64Array, prn: bigint, options: any): AcquisitionResult;
|
|
3182
5212
|
|
|
5213
|
+
/**
|
|
5214
|
+
* Evaluate NRLMSISE-00 neutral-atmosphere density and temperature.
|
|
5215
|
+
*
|
|
5216
|
+
* `latDeg` / `lonDeg` are geodetic degrees, `altKm` geodetic altitude in
|
|
5217
|
+
* kilometres, `year` / `doy` the UT year and day-of-year (1-366), `sec` the
|
|
5218
|
+
* seconds-in-day, and `f107` / `f107a` / `ap` the space-weather indices (daily
|
|
5219
|
+
* F10.7, 81-day centred F10.7 average, and daily magnetic Ap). The local solar
|
|
5220
|
+
* time is derived in the core (`sec/3600 + lonDeg/15`). Delegates to
|
|
5221
|
+
* `sidereon_core::astro::atmosphere::nrlmsise00_with_lst` with `lst = None`, so
|
|
5222
|
+
* the core derives the solar time under its default flags.
|
|
5223
|
+
*/
|
|
5224
|
+
export function atmosphereDensity(lat_deg: number, lon_deg: number, alt_km: number, year: number, doy: number, sec: number, f107: number, f107a: number, ap: number): AtmosphereDensity;
|
|
5225
|
+
|
|
5226
|
+
/**
|
|
5227
|
+
* The canonical quiet-Sun space-weather defaults for NRLMSISE-00. Delegates to
|
|
5228
|
+
* `sidereon_core::astro::atmosphere::{DEFAULT_F107, DEFAULT_F107A, DEFAULT_AP}`.
|
|
5229
|
+
*/
|
|
5230
|
+
export function atmosphereSpaceWeatherDefaults(): SpaceWeatherDefaults;
|
|
5231
|
+
|
|
5232
|
+
/**
|
|
5233
|
+
* Resolve integer ambiguities with a bounded lattice search.
|
|
5234
|
+
*
|
|
5235
|
+
* `floatCycles` and `covariance` match [`lambdaIlsSearch`]. `radius` is the
|
|
5236
|
+
* per-ambiguity integer search half-width (the lattice spans `radius` integers
|
|
5237
|
+
* either side of each rounded float), `candidateLimit` caps the number of
|
|
5238
|
+
* lattice points evaluated before the search aborts, and `ratioThreshold` is the
|
|
5239
|
+
* ratio-test acceptance threshold. Correct in the weakly-correlated regime and a
|
|
5240
|
+
* drop-in match for `lambdaIlsSearch` there; on strongly-correlated geometry
|
|
5241
|
+
* prefer `lambdaIlsSearch`. Returns an `IlsResult`. Throws a `TypeError` on a
|
|
5242
|
+
* malformed shape, a `RangeError` on a non-finite or out-of-domain input, and an
|
|
5243
|
+
* `Error` on a singular covariance or a lattice that exceeds `candidateLimit`.
|
|
5244
|
+
*/
|
|
5245
|
+
export function boundedIlsSearch(float_cycles: Float64Array, covariance: any, radius: number, candidate_limit: number, ratio_threshold: number): any;
|
|
5246
|
+
|
|
3183
5247
|
/**
|
|
3184
5248
|
* One wrapping GPS C/A chip at a zero-based index.
|
|
3185
5249
|
*/
|
|
@@ -3205,11 +5269,28 @@ export function carrierFrequencyHz(system: GnssSystem, band: CarrierBand): numbe
|
|
|
3205
5269
|
*/
|
|
3206
5270
|
export function changed(diff: any): boolean;
|
|
3207
5271
|
|
|
5272
|
+
/**
|
|
5273
|
+
* Continuous seconds since J2000 for a civil instant.
|
|
5274
|
+
*/
|
|
5275
|
+
export function civilToJ2000Seconds(year: number, month: number, day: number, hour: number, minute: number, second: number): number;
|
|
5276
|
+
|
|
3208
5277
|
/**
|
|
3209
5278
|
* Carrier-to-noise-density ratio, dB-Hz. `otherLossesDb` defaults to 0.
|
|
3210
5279
|
*/
|
|
3211
5280
|
export function cn0(eirp_dbw: number, fspl_db: number, receiver_gt_dbk: number, other_losses_db?: number | null): number;
|
|
3212
5281
|
|
|
5282
|
+
/**
|
|
5283
|
+
* Convert classical orbital elements to an inertial Cartesian state.
|
|
5284
|
+
*
|
|
5285
|
+
* `coe` is a `ClassicalElements` object (see `rv2coe`); only `p`, `ecc`,
|
|
5286
|
+
* `incl`, `raan`, `argp`, and `nu` are required for an ordinary orbit, with
|
|
5287
|
+
* `orbitType` and the auxiliary angles defaulting so the six primary elements
|
|
5288
|
+
* suffice. `mu` is the gravitational parameter (km^3/s^2). Returns
|
|
5289
|
+
* `{ positionKm, velocityKmS }`, each a length-3 `Float64Array`. Delegates to
|
|
5290
|
+
* `sidereon_core::astro::elements::coe2rv`.
|
|
5291
|
+
*/
|
|
5292
|
+
export function coe2rv(coe: any, mu: number): any;
|
|
5293
|
+
|
|
3213
5294
|
/**
|
|
3214
5295
|
* Coherent integration loss from residual frequency error.
|
|
3215
5296
|
*/
|
|
@@ -3233,6 +5314,21 @@ export function collisionProbability(object1: ConjunctionState, object2: Conjunc
|
|
|
3233
5314
|
*/
|
|
3234
5315
|
export function correlate(iq: Float64Array, prn: bigint, options: any): CorrelationResult;
|
|
3235
5316
|
|
|
5317
|
+
/**
|
|
5318
|
+
* Fitted parameter covariance from a converged solve, scaling `(J^T J)^-1` by
|
|
5319
|
+
* the post-fit reduced chi-square `s_sq = 2 * cost / (m - n)` (the same scale
|
|
5320
|
+
* `scipy.optimize.curve_fit` applies to its `pcov`).
|
|
5321
|
+
*
|
|
5322
|
+
* `jacobian` is a flat row-major `(m, n)` `Float64Array` (the Jacobian at the
|
|
5323
|
+
* solution), and `cost` is the solve's optimal cost `0.5 * sum(residual^2)`;
|
|
5324
|
+
* the degrees of freedom `m - n` (taken from the Jacobian's own shape) must be
|
|
5325
|
+
* positive. Pairs naturally with a [`crate::LeastSquaresResult`] (`result.jac`,
|
|
5326
|
+
* `result.m`, `result.n`, `result.cost`). Returns the `n`-by-`n` covariance as
|
|
5327
|
+
* a flat row-major `Float64Array`. Delegates to
|
|
5328
|
+
* `sidereon_core::astro::math::least_squares::covariance_from_jacobian`.
|
|
5329
|
+
*/
|
|
5330
|
+
export function covarianceFromJacobian(jacobian: Float64Array, m: number, n: number, cost: number): Float64Array;
|
|
5331
|
+
|
|
3236
5332
|
/**
|
|
3237
5333
|
* Whether a 3x3 covariance (flat row-major length 9) is symmetric positive
|
|
3238
5334
|
* semidefinite within the engine tolerance.
|
|
@@ -3245,6 +5341,13 @@ export function covarianceIsPositiveSemidefinite(covariance_km2: Float64Array):
|
|
|
3245
5341
|
*/
|
|
3246
5342
|
export function covarianceIsSymmetric(covariance_km2: Float64Array): boolean;
|
|
3247
5343
|
|
|
5344
|
+
/**
|
|
5345
|
+
* Build a look-angle coverage grid for `satellites` and `stations` at the
|
|
5346
|
+
* `epochUnixUs` (Unix microseconds) epoch. Each cell is the per-pair look angle
|
|
5347
|
+
* from `sidereon_core::astro::coverage::look_angles_batch`.
|
|
5348
|
+
*/
|
|
5349
|
+
export function coverageLookAngles(satellites: Tle[], stations: GroundStation[], epoch_unix_us: bigint): CoverageGrid;
|
|
5350
|
+
|
|
3248
5351
|
/**
|
|
3249
5352
|
* Decode Compact RINEX (Hatanaka) bytes into plain RINEX OBS text. Throws a
|
|
3250
5353
|
* `TypeError` on non-UTF-8 input and an `Error` on a decode failure.
|
|
@@ -3258,11 +5361,46 @@ export function decodeCrinex(bytes: Uint8Array): string;
|
|
|
3258
5361
|
*/
|
|
3259
5362
|
export function decodeCrinexLines(bytes: Uint8Array): string[];
|
|
3260
5363
|
|
|
5364
|
+
/**
|
|
5365
|
+
* Decode every CRC-valid RTCM 3 frame in a byte buffer into the message IR.
|
|
5366
|
+
*
|
|
5367
|
+
* Frames whose CRC fails, or whose body cannot be decoded, are skipped and the
|
|
5368
|
+
* scan resynchronizes on the next preamble. Returns an array of message objects,
|
|
5369
|
+
* each tagged with a `type` discriminant (`"msm"`, `"stationCoordinates"`,
|
|
5370
|
+
* `"antennaDescriptor"`, `"gpsEphemeris"`, `"glonassEphemeris"`,
|
|
5371
|
+
* `"unsupported"`). Delegates to `sidereon_core::rtcm::decode_messages`.
|
|
5372
|
+
*/
|
|
5373
|
+
export function decodeRtcm(bytes: Uint8Array): any;
|
|
5374
|
+
|
|
5375
|
+
/**
|
|
5376
|
+
* Decode the single RTCM 3 frame that begins at the start of `bytes`.
|
|
5377
|
+
*
|
|
5378
|
+
* Returns the decoded message object plus the total `frameLen` consumed
|
|
5379
|
+
* (preamble, length word, body, CRC). Throws an `Error` if the preamble is
|
|
5380
|
+
* missing, the buffer is shorter than the declared frame, or the CRC does not
|
|
5381
|
+
* match. Delegates to `sidereon_core::rtcm::decode_frame` +
|
|
5382
|
+
* `sidereon_core::rtcm::Message::decode`.
|
|
5383
|
+
*/
|
|
5384
|
+
export function decodeRtcmFrame(bytes: Uint8Array): any;
|
|
5385
|
+
|
|
5386
|
+
/**
|
|
5387
|
+
* Decode a single RTCM 3 message body without the transport frame.
|
|
5388
|
+
*
|
|
5389
|
+
* `body` is the bytes between the frame length word and CRC. Delegates to
|
|
5390
|
+
* `sidereon_core::rtcm::Message::decode`.
|
|
5391
|
+
*/
|
|
5392
|
+
export function decodeRtcmMessage(body: Uint8Array): any;
|
|
5393
|
+
|
|
3261
5394
|
/**
|
|
3262
5395
|
* Standard dual-frequency ionosphere-free carrier pair for a constellation.
|
|
3263
5396
|
*/
|
|
3264
5397
|
export function defaultPair(system: GnssSystem): CarrierPair | undefined;
|
|
3265
5398
|
|
|
5399
|
+
/**
|
|
5400
|
+
* Single-frequency carrier used by the SPP ionosphere-scaling policy.
|
|
5401
|
+
*/
|
|
5402
|
+
export function defaultSppFrequencyHz(system: GnssSystem): number | undefined;
|
|
5403
|
+
|
|
3266
5404
|
/**
|
|
3267
5405
|
* Detect cycle slips on a time-ordered single-satellite carrier-phase arc.
|
|
3268
5406
|
* `arc` is an array of `{ phi1Cycles?, phi2Cycles?, p1M?, p2M?, lli1?, lli2?,
|
|
@@ -3293,6 +5431,40 @@ export function diff(previous: any, current: any): any;
|
|
|
3293
5431
|
*/
|
|
3294
5432
|
export function dishGain(diameter_m: number, frequency_hz: number, efficiency: number): number;
|
|
3295
5433
|
|
|
5434
|
+
/**
|
|
5435
|
+
* GNSS dilution of precision with an explicit ENU convention for the
|
|
5436
|
+
* horizontal/vertical split.
|
|
5437
|
+
*
|
|
5438
|
+
* `lineOfSight` is a flat row-major `(n, 3)` `Float64Array` of ECEF unit
|
|
5439
|
+
* vectors, `weights` a positive `Float64Array` of length `n`, and `convention`
|
|
5440
|
+
* is `"geodeticNormal"` (the GNSS-standard default, matching [`gnssDop`]) or
|
|
5441
|
+
* `"geocentricRadial"` (radial up). Only HDOP/VDOP differ between conventions
|
|
5442
|
+
* (by ~`1e-3` relative); GDOP/PDOP/TDOP are identical. Delegates to
|
|
5443
|
+
* `sidereon_core::geometry::dop_with_convention`.
|
|
5444
|
+
*/
|
|
5445
|
+
export function dopWithConvention(line_of_sight: Float64Array, weights: Float64Array, receiver: Wgs84Geodetic, convention: string): Dop;
|
|
5446
|
+
|
|
5447
|
+
/**
|
|
5448
|
+
* Range rate and dimensionless Doppler ratio from a GCRS state.
|
|
5449
|
+
*
|
|
5450
|
+
* `gcrsPositionKm` and `gcrsVelocityKmS` are length-3 `Float64Array`s (km and
|
|
5451
|
+
* km/s). The station is geodetic `stationLatDeg` / `stationLonDeg` (degrees) at
|
|
5452
|
+
* `stationAltKm` (km). The receive epoch is the UTC civil time
|
|
5453
|
+
* `year`/`month`/`day`/`hour`/`minute`/`second`. Returns `[rangeRateKmS,
|
|
5454
|
+
* dopplerRatio]`. Delegates to
|
|
5455
|
+
* `sidereon_core::astro::doppler::range_rate_and_ratio`.
|
|
5456
|
+
*/
|
|
5457
|
+
export function dopplerRangeRate(gcrs_position_km: Float64Array, gcrs_velocity_km_s: Float64Array, station_lat_deg: number, station_lon_deg: number, station_alt_km: number, year: number, month: number, day: number, hour: number, minute: number, second: number): Float64Array;
|
|
5458
|
+
|
|
5459
|
+
/**
|
|
5460
|
+
* Range rate, Doppler ratio, and carrier Doppler shift from a GCRS state.
|
|
5461
|
+
*
|
|
5462
|
+
* Same geometry and epoch inputs as [`dopplerRangeRate`], plus the transmit
|
|
5463
|
+
* `frequencyHz` whose shift is reported. Delegates to
|
|
5464
|
+
* `sidereon_core::astro::doppler::doppler_shift`.
|
|
5465
|
+
*/
|
|
5466
|
+
export function dopplerShift(gcrs_position_km: Float64Array, gcrs_velocity_km_s: Float64Array, station_lat_deg: number, station_lon_deg: number, station_alt_km: number, year: number, month: number, day: number, hour: number, minute: number, second: number, frequency_hz: number): DopplerShift;
|
|
5467
|
+
|
|
3296
5468
|
/**
|
|
3297
5469
|
* Convert a Doppler shift in hertz to pseudorange rate in metres per second.
|
|
3298
5470
|
*/
|
|
@@ -3318,11 +5490,82 @@ export function ecefToGeodetic(position_km: Float64Array): Float64Array;
|
|
|
3318
5490
|
*/
|
|
3319
5491
|
export function eclipseStatus(satellite_position_km: Float64Array, sun_position_km: Float64Array): string[];
|
|
3320
5492
|
|
|
5493
|
+
/**
|
|
5494
|
+
* Ellipsoidal height `h = H + N` (metres above the WGS84 ellipsoid) from an
|
|
5495
|
+
* orthometric height and a geodetic position in radians, using the embedded
|
|
5496
|
+
* genuine EGM96 1-degree model. Delegates to
|
|
5497
|
+
* `sidereon_core::geoid::egm96_ellipsoidal_height_m`.
|
|
5498
|
+
*/
|
|
5499
|
+
export function egm96EllipsoidalHeightM(orthometric_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5500
|
+
|
|
5501
|
+
/**
|
|
5502
|
+
* Orthometric height `H = h - N` (metres above mean sea level) from an
|
|
5503
|
+
* ellipsoidal height and a geodetic position in radians, using the embedded
|
|
5504
|
+
* genuine EGM96 1-degree model. Delegates to
|
|
5505
|
+
* `sidereon_core::geoid::egm96_orthometric_height_m`.
|
|
5506
|
+
*/
|
|
5507
|
+
export function egm96OrthometricHeightM(ellipsoidal_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5508
|
+
|
|
5509
|
+
/**
|
|
5510
|
+
* Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
|
|
5511
|
+
* position in radians, from the embedded GENUINE EGM96 1-degree global grid.
|
|
5512
|
+
* Latitude is positive north, longitude positive east. This is the recommended
|
|
5513
|
+
* zero-setup default for metre-class datum work (its bilinear lookup agrees
|
|
5514
|
+
* with the full 15-arcminute EGM96 grid to ~0.4 m RMS); the coarse
|
|
5515
|
+
* [`geoidUndulation`] is only suitable for sanity checks. Delegates to
|
|
5516
|
+
* `sidereon_core::geoid::egm96_undulation`.
|
|
5517
|
+
*/
|
|
5518
|
+
export function egm96Undulation(lat_rad: number, lon_rad: number): number;
|
|
5519
|
+
|
|
3321
5520
|
/**
|
|
3322
5521
|
* Effective isotropic radiated power, dBW.
|
|
3323
5522
|
*/
|
|
3324
5523
|
export function eirp(tx_power_dbm: number, tx_antenna_gain_dbi: number): number;
|
|
3325
5524
|
|
|
5525
|
+
/**
|
|
5526
|
+
* Ellipsoidal height `h = H + N` (metres above the WGS84 ellipsoid) from an
|
|
5527
|
+
* orthometric height and a geodetic position in radians, using the built-in
|
|
5528
|
+
* grid's undulation. Delegates to
|
|
5529
|
+
* `sidereon_core::geoid::ellipsoidal_height_m`.
|
|
5530
|
+
*/
|
|
5531
|
+
export function ellipsoidalHeightM(orthometric_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
5532
|
+
|
|
5533
|
+
/**
|
|
5534
|
+
* Encode plain RINEX observation text into a Compact RINEX (Hatanaka) stream,
|
|
5535
|
+
* the inverse of [`decodeCrinex`]. RINEX 2 is emitted as CRINEX 1.0 and RINEX 3
|
|
5536
|
+
* as CRINEX 3.0, selected from the embedded `RINEX VERSION / TYPE` header. The
|
|
5537
|
+
* output is the canonical all-reset compression form, so it round-trips
|
|
5538
|
+
* (`decodeCrinex(encodeCrinex(rinex)) == rinex`) but is not byte-identical to an
|
|
5539
|
+
* arbitrary `RNX2CRX` stream. Throws an `Error` on malformed input. Delegates to
|
|
5540
|
+
* `sidereon_core::rinex::crinex::encode_crinex`.
|
|
5541
|
+
*/
|
|
5542
|
+
export function encodeCrinex(rinex_text: string): string;
|
|
5543
|
+
|
|
5544
|
+
/**
|
|
5545
|
+
* Encode a constructed RTCM message into a message body (without the transport
|
|
5546
|
+
* frame).
|
|
5547
|
+
*
|
|
5548
|
+
* `message` is a `type`-tagged plain object of the same shape [`decodeRtcm`]
|
|
5549
|
+
* returns (`"stationCoordinates"`, `"antennaDescriptor"`, `"gpsEphemeris"`,
|
|
5550
|
+
* `"glonassEphemeris"`, `"msm"`, `"unsupported"`), carrying the raw transmitted
|
|
5551
|
+
* field integers (large fields as `bigint`). Returns the encoded body as a
|
|
5552
|
+
* `Uint8Array`. Delegates to `sidereon_core::rtcm::Message::encode`. Throws a
|
|
5553
|
+
* `TypeError` for a malformed object or unknown type.
|
|
5554
|
+
*/
|
|
5555
|
+
export function encodeRtcm(message: any): Uint8Array;
|
|
5556
|
+
|
|
5557
|
+
/**
|
|
5558
|
+
* Encode a constructed RTCM message and wrap it in a fresh RTCM transport frame
|
|
5559
|
+
* (preamble, length word, body, CRC).
|
|
5560
|
+
*
|
|
5561
|
+
* `message` has the same shape [`encodeRtcm`] takes. Returns the framed bytes as
|
|
5562
|
+
* a `Uint8Array`, ready to feed back to [`decodeRtcmFrame`] / [`decodeRtcm`].
|
|
5563
|
+
* Delegates to `sidereon_core::rtcm::Message::to_frame`. Throws a `TypeError`
|
|
5564
|
+
* for a malformed object and an `Error` if the encoded body exceeds the frame
|
|
5565
|
+
* length limit.
|
|
5566
|
+
*/
|
|
5567
|
+
export function encodeRtcmFrame(message: any): Uint8Array;
|
|
5568
|
+
|
|
3326
5569
|
/**
|
|
3327
5570
|
* Build the encounter frame from two position/velocity states (each a length-3
|
|
3328
5571
|
* `Float64Array`).
|
|
@@ -3335,6 +5578,126 @@ export function encounterFrame(position1_km: Float64Array, velocity1_km_s: Float
|
|
|
3335
5578
|
*/
|
|
3336
5579
|
export function encounterPlaneCovariance(frame: EncounterFrame, covariance_km2: Float64Array): Float64Array;
|
|
3337
5580
|
|
|
5581
|
+
/**
|
|
5582
|
+
* Confidence ellipse from an arbitrary 2x2 covariance block.
|
|
5583
|
+
*
|
|
5584
|
+
* `covariance` is a flat row-major length-4 `Float64Array` (`[c00, c01, c10,
|
|
5585
|
+
* c11]`); `confidence` is in `(0, 1)`. The semi-axes are the eigenvalues of the
|
|
5586
|
+
* symmetrized block scaled by the chi-square(2) quantile. Throws a `RangeError`
|
|
5587
|
+
* for a non-positive-semidefinite block or an out-of-range confidence.
|
|
5588
|
+
* Delegates to `sidereon_core::geometry::error_ellipse_2x2`.
|
|
5589
|
+
*/
|
|
5590
|
+
export function errorEllipse2(covariance: Float64Array, confidence: number): ErrorEllipse2;
|
|
5591
|
+
|
|
5592
|
+
/**
|
|
5593
|
+
* Find Moon elevation threshold crossings (moonrise / moonset) over a UTC
|
|
5594
|
+
* window.
|
|
5595
|
+
*
|
|
5596
|
+
* The station is geodetic (`latitudeDeg`, `longitudeDeg`, `altitudeKm`);
|
|
5597
|
+
* `startUnixUs` / `endUnixUs` bound the window in unix microseconds. `options`
|
|
5598
|
+
* is `{ elevationThresholdDeg?, stepSeconds?, timeToleranceSeconds? }`.
|
|
5599
|
+
* Delegates to `sidereon_core::astro::bodies::find_moon_elevation_crossings`.
|
|
5600
|
+
*/
|
|
5601
|
+
export function findMoonElevationCrossings(latitude_deg: number, longitude_deg: number, altitude_km: number, start_unix_us: bigint, end_unix_us: bigint, options: any): MoonElevationCrossing[];
|
|
5602
|
+
|
|
5603
|
+
/**
|
|
5604
|
+
* Find Moon meridian transits (upper and lower culminations) over a UTC window.
|
|
5605
|
+
*
|
|
5606
|
+
* The station is geodetic (`latitudeDeg`, `longitudeDeg`, `altitudeKm`);
|
|
5607
|
+
* `startUnixUs` / `endUnixUs` bound the window in unix microseconds.
|
|
5608
|
+
* `stepSeconds` is the uniform scan step and `timeToleranceSeconds` the
|
|
5609
|
+
* refinement tolerance. Delegates to
|
|
5610
|
+
* `sidereon_core::astro::bodies::find_moon_transits`.
|
|
5611
|
+
*/
|
|
5612
|
+
export function findMoonTransits(latitude_deg: number, longitude_deg: number, altitude_km: number, start_unix_us: bigint, end_unix_us: bigint, step_seconds: number, time_tolerance_seconds: number): MoonTransit[];
|
|
5613
|
+
|
|
5614
|
+
/**
|
|
5615
|
+
* Find local TCA candidates between two satellites over a UTC window.
|
|
5616
|
+
*
|
|
5617
|
+
* `primaryLine1` / `primaryLine2` and `secondaryLine1` / `secondaryLine2` are
|
|
5618
|
+
* the TLE line pairs; `windowStartUnixMicros` / `windowEndUnixMicros` are the
|
|
5619
|
+
* window bounds as unix-microsecond UTC stamps (`bigint`); `options` is an
|
|
5620
|
+
* optional `TcaFinderOptions` object. Returns an array of `TcaCandidate`
|
|
5621
|
+
* objects. Delegates to
|
|
5622
|
+
* `sidereon_core::astro::tca::find_tca_candidates_from_tles`.
|
|
5623
|
+
*/
|
|
5624
|
+
export function findTcaCandidates(primary_line1: string, primary_line2: string, secondary_line1: string, secondary_line2: string, window_start_unix_micros: bigint, window_end_unix_micros: bigint, options: any): any;
|
|
5625
|
+
|
|
5626
|
+
/**
|
|
5627
|
+
* Find local TCA candidates between two satellites and evaluate collision
|
|
5628
|
+
* probability at each.
|
|
5629
|
+
*
|
|
5630
|
+
* Like `findTcaCandidates`, plus `pcOptions` (a `TcaPcOptions` object with the
|
|
5631
|
+
* hard-body radius, Pc method, and optional per-object covariances). Returns an
|
|
5632
|
+
* array of `TcaConjunction` objects. Delegates to
|
|
5633
|
+
* `sidereon_core::astro::tca::find_tca_conjunctions_from_tles`.
|
|
5634
|
+
*/
|
|
5635
|
+
export function findTcaConjunctions(primary_line1: string, primary_line2: string, secondary_line1: string, secondary_line2: string, window_start_unix_micros: bigint, window_end_unix_micros: bigint, pc_options: any, options: any): any;
|
|
5636
|
+
|
|
5637
|
+
/**
|
|
5638
|
+
* Fit a piecewise reduced-orbit model: tile `[t0, t1]` into segments of
|
|
5639
|
+
* `segmentSeconds` and fit each independently.
|
|
5640
|
+
*
|
|
5641
|
+
* `samples` is an array of `{ epoch, xM, yM, zM }` (ECEF metres), `scale` the
|
|
5642
|
+
* time scale the epochs are expressed in, and `model` is `"circular_secular"`
|
|
5643
|
+
* or `"eccentric_secular"`. `t0` / `t1` are `{ year, month, day, hour, minute,
|
|
5644
|
+
* second }` calendar epochs in that scale. Delegates to
|
|
5645
|
+
* `sidereon_core::orbit::fit_piecewise`.
|
|
5646
|
+
*/
|
|
5647
|
+
export function fitPiecewiseReducedOrbit(samples: any, scale: TimeScale, model: string, t0: any, t1: any, segment_seconds: number): PiecewiseOrbit;
|
|
5648
|
+
|
|
5649
|
+
/**
|
|
5650
|
+
* Sample an SP3 product and fit a piecewise reduced orbit.
|
|
5651
|
+
*
|
|
5652
|
+
* `options` is `{ t0, t1, cadenceS, model, segmentSeconds }`. Epochs are
|
|
5653
|
+
* interpreted in the SP3 product time scale. Delegates to
|
|
5654
|
+
* `sidereon_core::orbit::fit_piecewise_reduced_orbit_source`.
|
|
5655
|
+
*/
|
|
5656
|
+
export function fitPiecewiseReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): PiecewiseOrbitSourceFit;
|
|
5657
|
+
|
|
5658
|
+
/**
|
|
5659
|
+
* Sample a TLE/SGP4 source in UTC and fit a piecewise reduced orbit.
|
|
5660
|
+
*
|
|
5661
|
+
* `options` is `{ t0, t1, cadenceS, model, segmentSeconds }`. Delegates to
|
|
5662
|
+
* `sidereon_core::orbit::fit_piecewise_reduced_orbit_source`.
|
|
5663
|
+
*/
|
|
5664
|
+
export function fitPiecewiseReducedOrbitTle(tle: Tle, options: any): PiecewiseOrbitSourceFit;
|
|
5665
|
+
|
|
5666
|
+
/**
|
|
5667
|
+
* Fit a reduced-orbit model to ECEF position samples.
|
|
5668
|
+
*
|
|
5669
|
+
* `samples` is an array of `{ epoch, xM, yM, zM }` (ECEF metres), `scale` the
|
|
5670
|
+
* time scale the epochs are expressed in, and `model` is `"circular_secular"`
|
|
5671
|
+
* or `"eccentric_secular"`. Delegates to `sidereon_core::orbit::fit_with_model`.
|
|
5672
|
+
*/
|
|
5673
|
+
export function fitReducedOrbit(samples: any, scale: TimeScale, model: string): ReducedOrbit;
|
|
5674
|
+
|
|
5675
|
+
/**
|
|
5676
|
+
* Sample an SP3 product and fit a reduced orbit.
|
|
5677
|
+
*
|
|
5678
|
+
* `options` is `{ t0, t1, cadenceS, model }`. Epochs are interpreted in the
|
|
5679
|
+
* SP3 product time scale. Delegates to
|
|
5680
|
+
* `sidereon_core::orbit::fit_reduced_orbit_source`.
|
|
5681
|
+
*/
|
|
5682
|
+
export function fitReducedOrbitSp3(sp3: Sp3, satellite: string, options: any): ReducedOrbitSourceFit;
|
|
5683
|
+
|
|
5684
|
+
/**
|
|
5685
|
+
* Sample a TLE/SGP4 source in UTC and fit a reduced orbit.
|
|
5686
|
+
*
|
|
5687
|
+
* `options` is `{ t0, t1, cadenceS, model }`. Delegates to
|
|
5688
|
+
* `sidereon_core::orbit::fit_reduced_orbit_source`.
|
|
5689
|
+
*/
|
|
5690
|
+
export function fitReducedOrbitTle(tle: Tle, options: any): ReducedOrbitSourceFit;
|
|
5691
|
+
|
|
5692
|
+
/**
|
|
5693
|
+
* Fix Melbourne-Wubbena wide-lane ambiguities over a dual-frequency RTK arc.
|
|
5694
|
+
*
|
|
5695
|
+
* `epochs` is an array of `RtkDualFrequencyArcEpoch` objects and `config` a
|
|
5696
|
+
* `RtkWideLaneArcConfig` object. Delegates to
|
|
5697
|
+
* `sidereon_core::rtk_filter::arc::fix_wide_lane_rtk_arc`.
|
|
5698
|
+
*/
|
|
5699
|
+
export function fixWideLaneRtkArc(epochs: any, config: any): any;
|
|
5700
|
+
|
|
3338
5701
|
/**
|
|
3339
5702
|
* J2 oblateness gravitational acceleration in km/s^2.
|
|
3340
5703
|
*
|
|
@@ -3357,19 +5720,53 @@ export function forceJ2Acceleration(position_km: Float64Array, velocity_km_s: Fl
|
|
|
3357
5720
|
export function forceTwoBodyAcceleration(position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
|
|
3358
5721
|
|
|
3359
5722
|
/**
|
|
3360
|
-
* Build
|
|
5723
|
+
* Build constellation identity records from a CelesTrak OMM JSON-array text.
|
|
5724
|
+
*
|
|
5725
|
+
* `system` is the constellation label (`"gps"`, `"glonass"`, `"galileo"`,
|
|
5726
|
+
* `"beidou"`, `"qzss"`); it dispatches the per-system `OBJECT_NAME` identity
|
|
5727
|
+
* adapter and defaults to `"gps"`. Parses the CelesTrak JSON array into OMM
|
|
5728
|
+
* records (skipping array elements that are not parseable OMM objects), then
|
|
5729
|
+
* derives normalized `Record` rows sorted by `(system, prn)`. Returns a
|
|
5730
|
+
* `Record[]`. Throws an `Error` on a JSON parse failure or a CelesTrak object
|
|
5731
|
+
* name with no PRN resolvable for `system`.
|
|
5732
|
+
*/
|
|
5733
|
+
export function fromCelestrakJson(json: string, system?: string | null): any;
|
|
5734
|
+
|
|
5735
|
+
/**
|
|
5736
|
+
* Build constellation identity records from a CelesTrak OMM JSON-array text,
|
|
5737
|
+
* skipping (rather than throwing on) entries that do not resolve.
|
|
3361
5738
|
*
|
|
3362
|
-
*
|
|
3363
|
-
* `
|
|
3364
|
-
*
|
|
5739
|
+
* The lenient sibling of [`fromCelestrakJson`]: feed it a raw combined CelesTrak
|
|
5740
|
+
* `gnss` feed and it returns `{ records, skipped }` — `records` is the `Record[]`
|
|
5741
|
+
* for `system` (the same shape `fromCelestrakJson` returns, sorted by
|
|
5742
|
+
* `(system, prn)`), and `skipped` is a `SkippedOmm[]` of the entries whose
|
|
5743
|
+
* `OBJECT_NAME` did not resolve to a PRN for `system` (another constellation's
|
|
5744
|
+
* satellite in the combined feed, or a freshly launched satellite not yet in the
|
|
5745
|
+
* published slot/SVID table), each carrying its `{ objectName?, noradId }` so the
|
|
5746
|
+
* caller can triage. `system` defaults to `"gps"`. Throws an `Error` only on a
|
|
5747
|
+
* JSON parse failure.
|
|
3365
5748
|
*/
|
|
3366
|
-
export function
|
|
5749
|
+
export function fromCelestrakJsonLenient(json: string, system?: string | null): any;
|
|
3367
5750
|
|
|
3368
5751
|
/**
|
|
3369
5752
|
* Free-space path loss, dB, for range in km and frequency in MHz.
|
|
3370
5753
|
*/
|
|
3371
5754
|
export function fspl(distance_km: number, frequency_mhz: number): number;
|
|
3372
5755
|
|
|
5756
|
+
/**
|
|
5757
|
+
* Galileo NeQuick-G single-frequency ionospheric group delay (positive metres).
|
|
5758
|
+
*
|
|
5759
|
+
* `ai0`/`ai1`/`ai2` are the three Galileo broadcast NeQuick-G coefficients.
|
|
5760
|
+
* `latDeg`/`lonDeg` are the receiver geodetic coordinates, `azimuthDeg` /
|
|
5761
|
+
* `elevationDeg` the satellite topocentric angles (degrees). The receive epoch
|
|
5762
|
+
* is the UTC civil time `year`/`month`/`day`/`hour`/`minute`/`second`, taken in
|
|
5763
|
+
* Galileo System Time. `frequencyHz` is the reporting carrier. Delegates to
|
|
5764
|
+
* `sidereon_core::atmosphere::ionosphere::ionosphere_delay` with
|
|
5765
|
+
* `IonoModel::GalileoNequickG`, which dispatches to the Galileo arm. Throws an
|
|
5766
|
+
* `Error` on an out-of-domain input.
|
|
5767
|
+
*/
|
|
5768
|
+
export function galileoNequickDelay(ai0: number, ai1: number, ai2: number, lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, year: number, month: number, day: number, hour: number, minute: number, second: number, frequency_hz: number): number;
|
|
5769
|
+
|
|
3373
5770
|
/**
|
|
3374
5771
|
* Ionosphere-free coefficient `gamma = f1^2 / (f1^2 - f2^2)`.
|
|
3375
5772
|
*/
|
|
@@ -3382,46 +5779,159 @@ export function gamma(f1_hz: number, f2_hz: number): number;
|
|
|
3382
5779
|
export function gcrsToItrs(position_km: Float64Array, epochs_unix_us: BigInt64Array, skyfield_compat?: boolean | null): Float64Array;
|
|
3383
5780
|
|
|
3384
5781
|
/**
|
|
3385
|
-
* Convert a batch of geodetic coordinates to ITRS (ECEF).
|
|
3386
|
-
*
|
|
3387
|
-
* `geodetic` is a flat row-major `(n, 3)` `Float64Array` whose columns are
|
|
3388
|
-
* `[latitudeDeg, longitudeDeg, altitudeKm]` (WGS84). Returns a flat `(n, 3)`
|
|
3389
|
-
* ITRS `Float64Array` in kilometres. Time-independent.
|
|
5782
|
+
* Convert a batch of geodetic coordinates to ITRS (ECEF).
|
|
5783
|
+
*
|
|
5784
|
+
* `geodetic` is a flat row-major `(n, 3)` `Float64Array` whose columns are
|
|
5785
|
+
* `[latitudeDeg, longitudeDeg, altitudeKm]` (WGS84). Returns a flat `(n, 3)`
|
|
5786
|
+
* ITRS `Float64Array` in kilometres. Time-independent.
|
|
5787
|
+
*/
|
|
5788
|
+
export function geodeticToEcef(geodetic: Float64Array): Float64Array;
|
|
5789
|
+
|
|
5790
|
+
/**
|
|
5791
|
+
* Geoid undulation `N` (metres above the WGS84 ellipsoid) at a geodetic
|
|
5792
|
+
* position in radians, from the COARSE built-in global grid. Latitude is
|
|
5793
|
+
* positive north, longitude positive east. Delegates to
|
|
5794
|
+
* `sidereon_core::geoid::geoid_undulation`.
|
|
5795
|
+
*/
|
|
5796
|
+
export function geoidUndulation(lat_rad: number, lon_rad: number): number;
|
|
5797
|
+
|
|
5798
|
+
/**
|
|
5799
|
+
* Geometry-free phase combination `L_GF = L1 - L2`, metres.
|
|
5800
|
+
*/
|
|
5801
|
+
export function geometryFree(l1_m: number, l2_m: number): number;
|
|
5802
|
+
|
|
5803
|
+
/**
|
|
5804
|
+
* GLONASS FDMA L1/L2 frequency-channel number (`k`, in `-7..=6`) for an
|
|
5805
|
+
* orbital slot, from the published IGS/MCC slot-channel table. Returns `null`
|
|
5806
|
+
* for a slot with no tabulated channel.
|
|
5807
|
+
*/
|
|
5808
|
+
export function glonassFdmaChannel(slot: number): number | undefined;
|
|
5809
|
+
|
|
5810
|
+
/**
|
|
5811
|
+
* GLONASS G1 FDMA carrier frequency in hertz for channel `k`.
|
|
5812
|
+
*/
|
|
5813
|
+
export function glonassG1FrequencyHz(channel: number): number;
|
|
5814
|
+
|
|
5815
|
+
/**
|
|
5816
|
+
* GNSS dilution of precision from ECEF line-of-sight unit rows and weights.
|
|
5817
|
+
*
|
|
5818
|
+
* `lineOfSight` is a flat row-major `(n, 3)` `Float64Array`; `weights` is a
|
|
5819
|
+
* positive `Float64Array` of length `n`.
|
|
5820
|
+
*/
|
|
5821
|
+
export function gnssDop(line_of_sight: Float64Array, weights: Float64Array, receiver: Wgs84Geodetic): Dop;
|
|
5822
|
+
|
|
5823
|
+
/**
|
|
5824
|
+
* Compute exact GNSS DOP at a single epoch from an SP3 precise product.
|
|
5825
|
+
*
|
|
5826
|
+
* `stationEcefM` is an ECEF metre vector (length 3); `j2000Seconds` the receive
|
|
5827
|
+
* time as continuous seconds since J2000 in the SP3 product time scale.
|
|
5828
|
+
* `options` is `{ satellites?, elevationMaskDeg?=5, systems?, weighting?="unit",
|
|
5829
|
+
* lightTime?=false }`. Delegates to `sidereon_core::geometry::dop_at_epoch`.
|
|
5830
|
+
*/
|
|
5831
|
+
export function gnssDopAtEpoch(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: number, options: any): DopGeometry;
|
|
5832
|
+
|
|
5833
|
+
/**
|
|
5834
|
+
* Sample SP3-derived GNSS DOP over a J2000 epoch grid.
|
|
5835
|
+
*
|
|
5836
|
+
* `stationEcefM` is an ECEF metre vector (length 3); `j2000Seconds` is a
|
|
5837
|
+
* `Float64Array` grid in the SP3 product time scale. Samples with too few
|
|
5838
|
+
* satellites or singular geometry are omitted. `options` is
|
|
5839
|
+
* `{ satellites?, elevationMaskDeg?=5, systems?, weighting?="unit", lightTime?=false }`.
|
|
5840
|
+
*/
|
|
5841
|
+
export function gnssDopSeries(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: Float64Array, options: any): DopSeries;
|
|
5842
|
+
|
|
5843
|
+
/**
|
|
5844
|
+
* Sample exact GNSS DOP over an inclusive uniform window `[startJ2000S,
|
|
5845
|
+
* endJ2000S]` at `stepSeconds` spacing, skipping singular or underdetermined
|
|
5846
|
+
* samples. `options` is the same shape as [`gnssDopAtEpoch`]. Delegates to
|
|
5847
|
+
* `sidereon_core::geometry::dop_series`.
|
|
5848
|
+
*/
|
|
5849
|
+
export function gnssDopSeriesWindow(sp3: Sp3, station_ecef_m: Float64Array, start_j2000_s: number, end_j2000_s: number, step_seconds: number, options: any): DopSeriesSample[];
|
|
5850
|
+
|
|
5851
|
+
/**
|
|
5852
|
+
* Sampled visibility passes over `[startJ2000S, endJ2000S]` at `stepSeconds`
|
|
5853
|
+
* spacing. Delegates to `sidereon_core::geometry::passes`.
|
|
5854
|
+
*/
|
|
5855
|
+
export function gnssPasses(sp3: Sp3, station_ecef_m: Float64Array, start_j2000_s: number, end_j2000_s: number, step_seconds: number, options: any): GnssPass[];
|
|
5856
|
+
|
|
5857
|
+
/**
|
|
5858
|
+
* Render the canonical SP3/RINEX satellite token for a constellation + PRN
|
|
5859
|
+
* (`("gps", 7)` -> `"G07"`, `("glonass", 13)` -> `"R13"`).
|
|
5860
|
+
*/
|
|
5861
|
+
export function gnssSp3Id(system: string, prn: number): string;
|
|
5862
|
+
|
|
5863
|
+
/**
|
|
5864
|
+
* Stable lower-case display label for a constellation, e.g. `"gps"`.
|
|
5865
|
+
*/
|
|
5866
|
+
export function gnssSystemLabel(system: GnssSystem): string;
|
|
5867
|
+
|
|
5868
|
+
/**
|
|
5869
|
+
* Canonical RINEX one-letter identifier for a constellation, e.g. `"G"`.
|
|
5870
|
+
*/
|
|
5871
|
+
export function gnssSystemLetter(system: GnssSystem): string;
|
|
5872
|
+
|
|
5873
|
+
/**
|
|
5874
|
+
* Visible-satellite counts over `[startJ2000S, endJ2000S]` sampled every
|
|
5875
|
+
* `stepSeconds`. Delegates to `sidereon_core::geometry::visibility_series`.
|
|
5876
|
+
*/
|
|
5877
|
+
export function gnssVisibilitySeries(sp3: Sp3, station_ecef_m: Float64Array, start_j2000_s: number, end_j2000_s: number, step_seconds: number, options: any): GnssVisibilityCount[];
|
|
5878
|
+
|
|
5879
|
+
/**
|
|
5880
|
+
* Satellites visible above the elevation mask from an SP3 product at one
|
|
5881
|
+
* receive epoch. `stationEcefM` is a length-3 `Float64Array` (ECEF metres),
|
|
5882
|
+
* `j2000Seconds` the receive time as continuous seconds since J2000.
|
|
5883
|
+
* Delegates to `sidereon_core::geometry::visible`.
|
|
3390
5884
|
*/
|
|
3391
|
-
export function
|
|
5885
|
+
export function gnssVisible(sp3: Sp3, station_ecef_m: Float64Array, j2000_seconds: number, options: any): GnssVisibleSatellite[];
|
|
3392
5886
|
|
|
3393
5887
|
/**
|
|
3394
|
-
*
|
|
5888
|
+
* GPS - UTC (the GNSS leap-second offset since the GPS epoch) on a UTC calendar
|
|
5889
|
+
* date: the IS-GPS-200 quantity broadcast in the navigation message (18 s from
|
|
5890
|
+
* 2017-01-01). Equals `taiUtcOffsetS - 19`. Use this, not [`taiUtcOffsetS`],
|
|
5891
|
+
* whenever you mean the leap seconds a GPS receiver applies. Delegates to
|
|
5892
|
+
* `sidereon_core::astro::time::scales::gps_utc_offset_s`.
|
|
3395
5893
|
*/
|
|
3396
|
-
export function
|
|
5894
|
+
export function gpsUtcOffsetS(year: number, month: number, day: number): number;
|
|
3397
5895
|
|
|
3398
5896
|
/**
|
|
3399
|
-
*
|
|
5897
|
+
* Trace of the Gauss-Newton Hessian approximation `J^T J`: the sum of the
|
|
5898
|
+
* squared column norms of the Jacobian, with no inverse formed.
|
|
3400
5899
|
*
|
|
3401
|
-
* `
|
|
3402
|
-
*
|
|
5900
|
+
* `jacobian` is a flat row-major `(m, n)` `Float64Array`. Delegates to
|
|
5901
|
+
* `sidereon_core::astro::math::least_squares::hessian_trace`.
|
|
3403
5902
|
*/
|
|
3404
|
-
export function
|
|
5903
|
+
export function hessianTrace(jacobian: Float64Array, m: number, n: number): number;
|
|
3405
5904
|
|
|
3406
5905
|
/**
|
|
3407
|
-
*
|
|
5906
|
+
* Gauss angles-only orbit determination.
|
|
3408
5907
|
*
|
|
3409
|
-
* `
|
|
3410
|
-
* `Float64Array`
|
|
3411
|
-
*
|
|
3412
|
-
* `
|
|
5908
|
+
* `decl` and `rtasc` are length-3 declination / right-ascension
|
|
5909
|
+
* `Float64Array`s (radians), `jd` and `jdf` length-3 split Julian dates (whole
|
|
5910
|
+
* part and fraction, days), and `rseci` a flat row-major `(3, 3)`
|
|
5911
|
+
* `Float64Array` of observer-site ECI positions (km), one row per epoch.
|
|
5912
|
+
* Returns the orbit state at the middle observation. Delegates to
|
|
5913
|
+
* `sidereon_core::astro::iod::gauss_angles`.
|
|
3413
5914
|
*/
|
|
3414
|
-
export function
|
|
5915
|
+
export function iodGaussAngles(decl: Float64Array, rtasc: Float64Array, jd: Float64Array, jdf: Float64Array, rseci: Float64Array): IodState;
|
|
3415
5916
|
|
|
3416
5917
|
/**
|
|
3417
|
-
*
|
|
5918
|
+
* Gibbs three-position velocity solve.
|
|
5919
|
+
*
|
|
5920
|
+
* `r1`, `r2`, `r3` are length-3 coplanar geocentric position `Float64Array`s
|
|
5921
|
+
* (km). Returns the velocity at `r2` plus the inter-vector and coplanarity
|
|
5922
|
+
* angles. Delegates to `sidereon_core::astro::iod::gibbs`.
|
|
3418
5923
|
*/
|
|
3419
|
-
export function
|
|
5924
|
+
export function iodGibbs(r1: Float64Array, r2: Float64Array, r3: Float64Array): IodVelocity;
|
|
3420
5925
|
|
|
3421
5926
|
/**
|
|
3422
|
-
*
|
|
5927
|
+
* Herrick-Gibbs three-position velocity solve.
|
|
5928
|
+
*
|
|
5929
|
+
* `r1`, `r2`, `r3` are length-3 closely-spaced geocentric position
|
|
5930
|
+
* `Float64Array`s (km) and `jd1`/`jd2`/`jd3` their Julian-date epochs (days).
|
|
5931
|
+
* Returns the velocity at `r2` plus the inter-vector and coplanarity angles.
|
|
5932
|
+
* Delegates to `sidereon_core::astro::iod::hgibbs`.
|
|
3423
5933
|
*/
|
|
3424
|
-
export function
|
|
5934
|
+
export function iodHerrickGibbs(r1: Float64Array, r2: Float64Array, r3: Float64Array, jd1: number, jd2: number, jd3: number): IodVelocity;
|
|
3425
5935
|
|
|
3426
5936
|
/**
|
|
3427
5937
|
* Ionosphere-free code or meter-valued phase combination, metres.
|
|
@@ -3456,6 +5966,76 @@ export function isValid(validation: any): boolean;
|
|
|
3456
5966
|
*/
|
|
3457
5967
|
export function itrsToGcrs(position_km: Float64Array, epochs_unix_us: BigInt64Array): Float64Array;
|
|
3458
5968
|
|
|
5969
|
+
/**
|
|
5970
|
+
* Civil calendar fields from whole seconds since J2000.
|
|
5971
|
+
*/
|
|
5972
|
+
export function j2000SecondsToCivil(seconds: bigint): CivilDateTime;
|
|
5973
|
+
|
|
5974
|
+
/**
|
|
5975
|
+
* Jarque-Bera normality test on a residual set.
|
|
5976
|
+
*
|
|
5977
|
+
* `x` is a `Float64Array` (at least two values). Returns
|
|
5978
|
+
* `{ statistic, pValue }` with `statistic = n/6 (S^2 + K^2/4)` (biased moments)
|
|
5979
|
+
* and the chi-square(2) survival `pValue = exp(-statistic/2)`, matching
|
|
5980
|
+
* `scipy.stats.jarque_bera`. Delegates to
|
|
5981
|
+
* `sidereon_core::quality::normality::jarque_bera`.
|
|
5982
|
+
*/
|
|
5983
|
+
export function jarqueBera(x: Float64Array): any;
|
|
5984
|
+
|
|
5985
|
+
/**
|
|
5986
|
+
* GPS broadcast Klobuchar ionospheric group delay in the model's native units
|
|
5987
|
+
* (positive metres).
|
|
5988
|
+
*
|
|
5989
|
+
* `alpha` and `beta` are the eight transmitted GPS Klobuchar coefficients, each
|
|
5990
|
+
* a length-4 `Float64Array` (`a0..a3`, `b0..b3`). Receiver latitude/longitude
|
|
5991
|
+
* and satellite azimuth/elevation are degrees (latitude positive north,
|
|
5992
|
+
* longitude positive east, azimuth clockwise from north). `tGpsS` is the GPS
|
|
5993
|
+
* second-of-day in `[0, 86400)`. `frequencyHz` is the carrier the dispersive
|
|
5994
|
+
* delay is reported on; the model evaluates the L1 delay and scales it by the
|
|
5995
|
+
* dispersive `(f_l1 / f)^2` factor. Delegates to
|
|
5996
|
+
* `sidereon_core::atmosphere::ionosphere::klobuchar_native`. Throws an `Error`
|
|
5997
|
+
* on an out-of-domain coefficient, angle, time, or frequency.
|
|
5998
|
+
*/
|
|
5999
|
+
export function klobucharDelay(alpha: Float64Array, beta: Float64Array, lat_deg: number, lon_deg: number, azimuth_deg: number, elevation_deg: number, t_gps_s: number, frequency_hz: number): number;
|
|
6000
|
+
|
|
6001
|
+
/**
|
|
6002
|
+
* Sample kurtosis of a residual set.
|
|
6003
|
+
*
|
|
6004
|
+
* `x` is a `Float64Array`. `fisher` (default `true`) returns the excess
|
|
6005
|
+
* kurtosis `m4 / m2^2 - 3` (Gaussian -> 0, `scipy.stats.kurtosis`); `false`
|
|
6006
|
+
* returns the Pearson kurtosis (Gaussian -> 3). `bias` (default `true`); pass
|
|
6007
|
+
* `false` for the sample correction (needs at least four values). Delegates to
|
|
6008
|
+
* `sidereon_core::quality::normality::kurtosis`.
|
|
6009
|
+
*/
|
|
6010
|
+
export function kurtosis(x: Float64Array, fisher?: boolean | null, bias?: boolean | null): number;
|
|
6011
|
+
|
|
6012
|
+
/**
|
|
6013
|
+
* Resolve integer ambiguities with the LAMBDA method (RTKLIB `lambda()` port).
|
|
6014
|
+
*
|
|
6015
|
+
* `floatCycles` is the real-valued ambiguity vector (`Float64Array`),
|
|
6016
|
+
* `covariance` is its `n x n` covariance as a row-major `number[][]`, and
|
|
6017
|
+
* `ratioThreshold` is the ratio-test acceptance threshold (RTKLIB's default is
|
|
6018
|
+
* `3.0`). Finds the true integer-least-squares optimum and runner-up for any
|
|
6019
|
+
* positive-definite covariance — no search box, no combinatorial blow-up.
|
|
6020
|
+
* Returns an `IlsResult`. Throws a `TypeError` on a malformed shape, a
|
|
6021
|
+
* `RangeError` on a non-finite or out-of-domain input, and an `Error` on a
|
|
6022
|
+
* singular covariance or a non-converging search.
|
|
6023
|
+
*/
|
|
6024
|
+
export function lambdaIlsSearch(float_cycles: Float64Array, covariance: any, ratio_threshold: number): any;
|
|
6025
|
+
|
|
6026
|
+
/**
|
|
6027
|
+
* Solve Lambert's problem with Battin's method.
|
|
6028
|
+
*
|
|
6029
|
+
* `r1`, `r2` are length-3 position `Float64Array`s (km) and `dtsec` the time of
|
|
6030
|
+
* flight (seconds). `v1` (length-3, km/s) is only consulted for the degenerate
|
|
6031
|
+
* 180-degree transfer where the transfer-plane normal is otherwise undefined.
|
|
6032
|
+
* `directionOfMotion` is `"short"` or `"long"`, `directionOfEnergy` is `"low"`
|
|
6033
|
+
* or `"high"`, and `nrev` is the number of complete revolutions. Returns the
|
|
6034
|
+
* departure and arrival transfer velocities. Delegates to
|
|
6035
|
+
* `sidereon_core::astro::lambert::battin`.
|
|
6036
|
+
*/
|
|
6037
|
+
export function lambertBattin(r1: Float64Array, r2: Float64Array, v1: Float64Array, dtsec: number, direction_of_motion_label: string, direction_of_energy_label: string, nrev: number): LambertTransfer;
|
|
6038
|
+
|
|
3459
6039
|
/**
|
|
3460
6040
|
* Provenance and coverage of the embedded leap-second (TAI-UTC) table.
|
|
3461
6041
|
*/
|
|
@@ -3472,6 +6052,87 @@ export function leapSeconds(year: number, month: number, day: number): number;
|
|
|
3472
6052
|
*/
|
|
3473
6053
|
export function leapSecondsBatch(dates: Int32Array): Float64Array;
|
|
3474
6054
|
|
|
6055
|
+
/**
|
|
6056
|
+
* Solve a generic data-driven least-squares problem.
|
|
6057
|
+
*
|
|
6058
|
+
* `request` is a `DataProblemInput` object: a `kind` (`"linear"`,
|
|
6059
|
+
* `"polynomial"`, `"exponential"`) carrying its data arrays, the `x0` starting
|
|
6060
|
+
* point, and the SciPy `least_squares` options. The whole trust-region
|
|
6061
|
+
* iteration runs in Rust through
|
|
6062
|
+
* `trust_region_least_squares::data::solve_data_problem` (the serial entry, the
|
|
6063
|
+
* default in-crate SVD backend); no rayon thread pool is entered.
|
|
6064
|
+
*/
|
|
6065
|
+
export function leastSquares(request: any): LeastSquaresResult;
|
|
6066
|
+
|
|
6067
|
+
/**
|
|
6068
|
+
* Serial leave-one-out (jackknife) over a data-driven least-squares problem.
|
|
6069
|
+
*
|
|
6070
|
+
* Delegates to the core's serial leave-one-out entry
|
|
6071
|
+
* `trust_region_least_squares::batch::solve_data_problem_drop_one_serial`: the
|
|
6072
|
+
* full problem is solved once, then re-solved with each residual row masked in
|
|
6073
|
+
* turn. The core's default `solve_data_problem_drop_one` fans these re-solves
|
|
6074
|
+
* across a rayon pool that wasm has no threads for, so this binding takes the
|
|
6075
|
+
* serial twin, which runs the identical re-solves one row at a time and is
|
|
6076
|
+
* byte-identical to the parallel version.
|
|
6077
|
+
*/
|
|
6078
|
+
export function leastSquaresDropOne(request: any): LeastSquaresDropOneReport;
|
|
6079
|
+
|
|
6080
|
+
/**
|
|
6081
|
+
* Decode LNAV subframes 1-3 back into engineering-unit parameters.
|
|
6082
|
+
*
|
|
6083
|
+
* Each subframe is a 300-bit `Uint8Array` of `0`/`1`. Parity is verified on all
|
|
6084
|
+
* 30 words first; a failure throws an `Error`. Delegates to
|
|
6085
|
+
* `sidereon_core::navigation::lnav::decode`.
|
|
6086
|
+
*/
|
|
6087
|
+
export function lnavDecode(sf1: Uint8Array, sf2: Uint8Array, sf3: Uint8Array): LnavDecoded;
|
|
6088
|
+
|
|
6089
|
+
/**
|
|
6090
|
+
* Encode clock and ephemeris parameters into LNAV subframes 1-3.
|
|
6091
|
+
*
|
|
6092
|
+
* `params` is the engineering-unit parameter object and `options` the optional
|
|
6093
|
+
* TLM/HOW object (omitted fields default to `0`). Returns the three 300-bit
|
|
6094
|
+
* subframes. Throws an `Error` on an out-of-range field. Delegates to
|
|
6095
|
+
* `sidereon_core::navigation::lnav::encode`.
|
|
6096
|
+
*/
|
|
6097
|
+
export function lnavEncode(params: any, options: any): LnavSubframes;
|
|
6098
|
+
|
|
6099
|
+
/**
|
|
6100
|
+
* The six parity bits `[D25..D30]` of a word from its 24 source data bits.
|
|
6101
|
+
*
|
|
6102
|
+
* `data24` is the 24 source data bits (most significant first, before the
|
|
6103
|
+
* `D30*` complementation). `d29Prev` / `d30Prev` are the previous word's two
|
|
6104
|
+
* trailing parity bits. Delegates to `sidereon_core::navigation::lnav::parity`.
|
|
6105
|
+
*/
|
|
6106
|
+
export function lnavParity(data24: Uint8Array, d29_prev: number, d30_prev: number): Uint8Array;
|
|
6107
|
+
|
|
6108
|
+
/**
|
|
6109
|
+
* Verify the parity of a single 30-bit word.
|
|
6110
|
+
*
|
|
6111
|
+
* `word30` is the 30-bit word as transmitted (data bits possibly complemented
|
|
6112
|
+
* by `D30*`, then 6 received parity bits). `d29Prev` / `d30Prev` are the
|
|
6113
|
+
* previous word's trailing parity bits. Delegates to
|
|
6114
|
+
* `sidereon_core::navigation::lnav::parity_valid`.
|
|
6115
|
+
*/
|
|
6116
|
+
export function lnavParityValid(word30: Uint8Array, d29_prev: number, d30_prev: number): boolean;
|
|
6117
|
+
|
|
6118
|
+
/**
|
|
6119
|
+
* Subframe ID from a hand-over word or a full subframe.
|
|
6120
|
+
*
|
|
6121
|
+
* `bits` is a 30-bit HOW word or a 300-bit subframe. Returns the 3-bit subframe
|
|
6122
|
+
* ID, or `undefined` for any other length. Delegates to
|
|
6123
|
+
* `sidereon_core::navigation::lnav::subframe_id`.
|
|
6124
|
+
*/
|
|
6125
|
+
export function lnavSubframeId(bits: Uint8Array): bigint | undefined;
|
|
6126
|
+
|
|
6127
|
+
/**
|
|
6128
|
+
* Time-of-week count from a hand-over word or a full subframe.
|
|
6129
|
+
*
|
|
6130
|
+
* `bits` is a 30-bit HOW word or a 300-bit subframe (whose word 2 is the HOW),
|
|
6131
|
+
* as a `Uint8Array` of `0`/`1`. Returns the 17-bit TOW count, or `undefined`
|
|
6132
|
+
* for any other length. Delegates to `sidereon_core::navigation::lnav::tow`.
|
|
6133
|
+
*/
|
|
6134
|
+
export function lnavTow(bits: Uint8Array): bigint | undefined;
|
|
6135
|
+
|
|
3475
6136
|
/**
|
|
3476
6137
|
* Parse an ANTEX 1.4 antenna product from in-memory bytes (a `Uint8Array`).
|
|
3477
6138
|
* Throws an `Error` on a parse failure or non-UTF-8 input.
|
|
@@ -3541,11 +6202,47 @@ export function mergeNavcen(records: any, statuses: any): any;
|
|
|
3541
6202
|
*/
|
|
3542
6203
|
export function mergeSp3(sources: Sp3[], options: any): Sp3MergeResult;
|
|
3543
6204
|
|
|
6205
|
+
/**
|
|
6206
|
+
* Mean, variance, skewness, and excess kurtosis of a residual set in one pass.
|
|
6207
|
+
*
|
|
6208
|
+
* `x` is a `Float64Array`; `fisher` and `bias` select the kurtosis convention
|
|
6209
|
+
* and the bias correction exactly as in [`skewness`] / [`kurtosis`] (both
|
|
6210
|
+
* default `true`). Returns `{ mean, variance, skewness, kurtosisExcess }`; the
|
|
6211
|
+
* variance is the biased second central moment. Delegates to
|
|
6212
|
+
* `sidereon_core::quality::normality::moments`.
|
|
6213
|
+
*/
|
|
6214
|
+
export function moments(x: Float64Array, fisher?: boolean | null, bias?: boolean | null): any;
|
|
6215
|
+
|
|
3544
6216
|
/**
|
|
3545
6217
|
* Angle in degrees between satellite nadir and the Moon direction.
|
|
3546
6218
|
*/
|
|
3547
6219
|
export function moonAngle(satellite_position_km: Float64Array, moon_position_km: Float64Array): Float64Array;
|
|
3548
6220
|
|
|
6221
|
+
/**
|
|
6222
|
+
* Topocentric azimuth/elevation/range of the Moon from a ground site,
|
|
6223
|
+
* including the diurnal parallax. See [`sunAzEl`] for the argument shapes.
|
|
6224
|
+
* Delegates to `sidereon_core::astro::bodies::moon_az_el`.
|
|
6225
|
+
*/
|
|
6226
|
+
export function moonAzEl(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): any;
|
|
6227
|
+
|
|
6228
|
+
/**
|
|
6229
|
+
* Topocentric geometric Moon (disk-center) elevation from a ground site,
|
|
6230
|
+
* degrees. See [`sunAzEl`] for the argument shapes. Delegates to
|
|
6231
|
+
* `sidereon_core::astro::bodies::moon_az_el` and returns its `elevationDeg`: the
|
|
6232
|
+
* core `moon_elevation_deg` convenience wrapper `expect`s on the geometry, so a
|
|
6233
|
+
* valid-shaped but out-of-range station (e.g. latitude 120) would panic the
|
|
6234
|
+
* wasm module; going through `moon_az_el` surfaces that as a thrown JS error.
|
|
6235
|
+
*/
|
|
6236
|
+
export function moonElevationDeg(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): number;
|
|
6237
|
+
|
|
6238
|
+
/**
|
|
6239
|
+
* Illuminated fraction of the Moon as seen from a ground site. Returns
|
|
6240
|
+
* `{ illuminatedFraction, phaseAngleDeg }` (0 = new, 1 = full). See [`sunAzEl`]
|
|
6241
|
+
* for the argument shapes. Delegates to
|
|
6242
|
+
* `sidereon_core::astro::bodies::moon_illumination`.
|
|
6243
|
+
*/
|
|
6244
|
+
export function moonIllumination(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): any;
|
|
6245
|
+
|
|
3549
6246
|
/**
|
|
3550
6247
|
* Narrow-lane code combination, metres.
|
|
3551
6248
|
*/
|
|
@@ -3556,16 +6253,101 @@ export function narrowLaneCode(p1_m: number, p2_m: number, f1_hz: number, f2_hz:
|
|
|
3556
6253
|
*/
|
|
3557
6254
|
export function navMessageLabel(message: NavMessage): string;
|
|
3558
6255
|
|
|
6256
|
+
/**
|
|
6257
|
+
* Full NeQuick-G slant ionospheric group delay (positive metres) on
|
|
6258
|
+
* `frequencyHz`.
|
|
6259
|
+
*
|
|
6260
|
+
* The slant TEC from [`nequick_g_stec_tecu_js`] mapped to a group delay with the
|
|
6261
|
+
* dispersive `40.3e16 / f^2` relation. `eval` is a plain object; see the
|
|
6262
|
+
* `NequickGEval` TypeScript type. Delegates to
|
|
6263
|
+
* `sidereon_core::atmosphere::ionosphere::nequick_g_delay_m`. Throws a
|
|
6264
|
+
* `TypeError` for a malformed object and an `Error` for an out-of-domain input
|
|
6265
|
+
* or non-positive frequency.
|
|
6266
|
+
*/
|
|
6267
|
+
export function nequickGDelayM(_eval: any, frequency_hz: number): number;
|
|
6268
|
+
|
|
6269
|
+
/**
|
|
6270
|
+
* Full NeQuick-G slant total electron content along the ray, in TECU.
|
|
6271
|
+
*
|
|
6272
|
+
* Unlike the compact broadcast-driven [`galileo_nequick_delay`], this evaluates
|
|
6273
|
+
* the complete three-dimensional NeQuick 2 electron-density profiler integrated
|
|
6274
|
+
* along the receiver-to-satellite ray with the reference adaptive
|
|
6275
|
+
* Gauss-Kronrod quadrature. `eval` is a plain object; see the `NequickGEval`
|
|
6276
|
+
* TypeScript type. Delegates to
|
|
6277
|
+
* `sidereon_core::atmosphere::ionosphere::nequick_g_stec_tecu`. Throws a
|
|
6278
|
+
* `TypeError` for a malformed object and an `Error` for an out-of-domain month,
|
|
6279
|
+
* UTC, latitude, or a geometrically invalid ray.
|
|
6280
|
+
*/
|
|
6281
|
+
export function nequickGStecTecu(_eval: any): number;
|
|
6282
|
+
|
|
3559
6283
|
/**
|
|
3560
6284
|
* Equal-variance noise amplification of the ionosphere-free combination.
|
|
3561
6285
|
*/
|
|
3562
6286
|
export function noiseAmplification(f1_hz: number, f2_hz: number): number;
|
|
3563
6287
|
|
|
6288
|
+
/**
|
|
6289
|
+
* Parameter covariance from a design (Jacobian) matrix via the Gauss-Newton
|
|
6290
|
+
* normal equations `varianceScale * (J^T J)^-1`, formed from the thin SVD of
|
|
6291
|
+
* `J` (not by inverting `J^T J`, so the condition number is not squared).
|
|
6292
|
+
*
|
|
6293
|
+
* `jacobian` is a flat row-major `(m, n)` `Float64Array` with `m >= n`;
|
|
6294
|
+
* `varianceScale` (`sigma^2`, non-negative) scales the bare cofactor (pass the
|
|
6295
|
+
* post-fit reduced chi-square for the fitted covariance, or `1.0` for
|
|
6296
|
+
* `(J^T J)^-1`). Returns the `n`-by-`n` covariance as a flat row-major
|
|
6297
|
+
* `Float64Array` of length `n * n`. Throws an `Error` for a rank-deficient
|
|
6298
|
+
* Jacobian. Delegates to
|
|
6299
|
+
* `sidereon_core::astro::math::least_squares::normal_covariance`.
|
|
6300
|
+
*/
|
|
6301
|
+
export function normalCovariance(jacobian: Float64Array, m: number, n: number, variance_scale: number): Float64Array;
|
|
6302
|
+
|
|
6303
|
+
/**
|
|
6304
|
+
* Predict observables for one satellite from a broadcast ephemeris store.
|
|
6305
|
+
* Delegates to `sidereon_core::observables::predict`.
|
|
6306
|
+
*/
|
|
6307
|
+
export function observablesBroadcast(broadcast: BroadcastEphemeris, satellite: string, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): PredictedObservables;
|
|
6308
|
+
|
|
6309
|
+
/**
|
|
6310
|
+
* Predict observables for one satellite from an SP3 precise product. See
|
|
6311
|
+
* [`observablesBroadcast`] for the broadcast-ephemeris counterpart. Delegates
|
|
6312
|
+
* to `sidereon_core::observables::predict`.
|
|
6313
|
+
*/
|
|
6314
|
+
export function observablesSp3(sp3: Sp3, satellite: string, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): PredictedObservables;
|
|
6315
|
+
|
|
3564
6316
|
/**
|
|
3565
6317
|
* Stable lower-case label for an observation kind.
|
|
3566
6318
|
*/
|
|
3567
6319
|
export function observationKindLabel(kind: ObservationKind): string;
|
|
3568
6320
|
|
|
6321
|
+
/**
|
|
6322
|
+
* Ocean tide loading displacement of an ITRF station, metres (ECEF).
|
|
6323
|
+
*
|
|
6324
|
+
* `stationEcefM` is a length-3 geocentric ECEF metre vector and the epoch is
|
|
6325
|
+
* the UTC `year`/`month`/`day` plus `fractionalHour`. `amplitudeM` and
|
|
6326
|
+
* `phaseDeg` are the station's BLQ coefficients as flat row-major
|
|
6327
|
+
* `(3, 11)` `Float64Array`s: component order radial / EW-west / NS-south, and
|
|
6328
|
+
* constituent order M2 S2 N2 K2 K1 O1 P1 Q1 Mf Mm Ssa. Returns the displacement
|
|
6329
|
+
* `[dx, dy, dz]`. Delegates to `sidereon_core::tides::ocean_tide_loading`.
|
|
6330
|
+
*/
|
|
6331
|
+
export function oceanTideLoading(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, amplitude_m: Float64Array, phase_deg: Float64Array): Float64Array;
|
|
6332
|
+
|
|
6333
|
+
/**
|
|
6334
|
+
* Orthometric height `H = h - N` (metres above mean sea level) from an
|
|
6335
|
+
* ellipsoidal height and a geodetic position in radians, using the built-in
|
|
6336
|
+
* grid's undulation. Delegates to
|
|
6337
|
+
* `sidereon_core::geoid::orthometric_height_m`.
|
|
6338
|
+
*/
|
|
6339
|
+
export function orthometricHeightM(ellipsoidal_height_m: number, lat_rad: number, lon_rad: number): number;
|
|
6340
|
+
|
|
6341
|
+
/**
|
|
6342
|
+
* Parallactic angle (degrees) of a target at a station.
|
|
6343
|
+
*
|
|
6344
|
+
* `observerLatitudeDeg` is the observer geodetic latitude, `hourAngleDeg` the
|
|
6345
|
+
* local hour angle (positive west of the meridian), and `declinationDeg` the
|
|
6346
|
+
* target declination. The result is on `(-180, 180]`. Delegates to
|
|
6347
|
+
* `sidereon_core::astro::observation::parallactic_angle_deg`.
|
|
6348
|
+
*/
|
|
6349
|
+
export function parallacticAngleDeg(observer_latitude_deg: number, hour_angle_deg: number, declination_deg: number): number;
|
|
6350
|
+
|
|
3569
6351
|
/**
|
|
3570
6352
|
* Parse CCSDS CDM KVN text. Throws an `Error` on a parse failure.
|
|
3571
6353
|
*/
|
|
@@ -3584,6 +6366,18 @@ export function parseCdmXml(text: string): Cdm;
|
|
|
3584
6366
|
*/
|
|
3585
6367
|
export function parseNavcen(html: string): any;
|
|
3586
6368
|
|
|
6369
|
+
/**
|
|
6370
|
+
* Parse CCSDS OEM KVN text. The KVN reader is forgiving: malformed ephemeris
|
|
6371
|
+
* lines are skipped and counted in `skippedStates`. Throws an `Error` on a
|
|
6372
|
+
* structural failure.
|
|
6373
|
+
*/
|
|
6374
|
+
export function parseOemKvn(text: string): Oem;
|
|
6375
|
+
|
|
6376
|
+
/**
|
|
6377
|
+
* Parse CCSDS OEM XML text. Throws an `Error` on a parse failure.
|
|
6378
|
+
*/
|
|
6379
|
+
export function parseOemXml(text: string): Oem;
|
|
6380
|
+
|
|
3587
6381
|
/**
|
|
3588
6382
|
* Parse CCSDS/CelesTrak OMM JSON text. Throws an `Error` on a parse failure.
|
|
3589
6383
|
*/
|
|
@@ -3599,6 +6393,16 @@ export function parseOmmKvn(text: string): Omm;
|
|
|
3599
6393
|
*/
|
|
3600
6394
|
export function parseOmmXml(text: string): Omm;
|
|
3601
6395
|
|
|
6396
|
+
/**
|
|
6397
|
+
* Parse CCSDS OPM KVN text. Throws an `Error` on a parse failure.
|
|
6398
|
+
*/
|
|
6399
|
+
export function parseOpmKvn(text: string): Opm;
|
|
6400
|
+
|
|
6401
|
+
/**
|
|
6402
|
+
* Parse CCSDS OPM XML text. Throws an `Error` on a parse failure.
|
|
6403
|
+
*/
|
|
6404
|
+
export function parseOpmXml(text: string): Opm;
|
|
6405
|
+
|
|
3602
6406
|
/**
|
|
3603
6407
|
* Strictly parse RINEX clock bytes into satellite clock-bias series. Throws a
|
|
3604
6408
|
* `TypeError` on non-UTF-8 input and an `Error` on a malformed record.
|
|
@@ -3644,6 +6448,16 @@ export function parseRinexNavRecords(bytes: Uint8Array): BroadcastRecordJs[];
|
|
|
3644
6448
|
*/
|
|
3645
6449
|
export function parseRinexObs(bytes: Uint8Array): RinexObs;
|
|
3646
6450
|
|
|
6451
|
+
/**
|
|
6452
|
+
* Parse a multi-record TLE file (CelesTrak / Space-Track style) into named,
|
|
6453
|
+
* initialized [`Tle`] instances. Handles bare 2-line sets, 3-line name+line1+line2
|
|
6454
|
+
* sets, and CelesTrak `0 NAME` markers; CRLF endings, blank lines, and
|
|
6455
|
+
* surrounding whitespace are tolerated. A record whose element set fails SGP4
|
|
6456
|
+
* initialization is skipped and counted in `skipped` rather than aborting the
|
|
6457
|
+
* whole file. `opsMode` is `"improved"` (default) or `"afspc"`.
|
|
6458
|
+
*/
|
|
6459
|
+
export function parseTleFile(text: string, ops_mode_label?: string | null): ParsedTleFile;
|
|
6460
|
+
|
|
3647
6461
|
/**
|
|
3648
6462
|
* Sun-satellite-observer phase angle in degrees.
|
|
3649
6463
|
*/
|
|
@@ -3654,6 +6468,73 @@ export function phaseAngle(satellite_position_km: Float64Array, sun_position_km:
|
|
|
3654
6468
|
*/
|
|
3655
6469
|
export function phaseMeters(phi_cycles: number, f_hz: number): number;
|
|
3656
6470
|
|
|
6471
|
+
/**
|
|
6472
|
+
* Precompute static PPP correction tables for a precise-orbit arc.
|
|
6473
|
+
*
|
|
6474
|
+
* `epochs` is an array of `PppCorrectionEpoch` objects, `receiverEcefM` is the
|
|
6475
|
+
* fixed receiver position (`Float64Array` of length 3, metres), and `options`
|
|
6476
|
+
* selects which corrections to compute: `solidEarthTide` / `phaseWindup`
|
|
6477
|
+
* booleans, plus optional `satelliteAntenna` (a `PppSatelliteAntennaOptions`),
|
|
6478
|
+
* `poleTide` (a `PoleTideOptions`, the IERS polar motion of the date), and
|
|
6479
|
+
* `oceanLoading` (an `OceanLoadingBlq`, the station's BLQ block). Returns a
|
|
6480
|
+
* `PppCorrections` whose fields are each keyed by the input epoch index. Throws a
|
|
6481
|
+
* `TypeError` on a malformed shape or an invalid satellite token, and an `Error`
|
|
6482
|
+
* on an invalid epoch or a tide/coverage failure.
|
|
6483
|
+
*/
|
|
6484
|
+
export function pppCorrections(sp3: Sp3, epochs: any, receiver_ecef_m: Float64Array, options: any): any;
|
|
6485
|
+
|
|
6486
|
+
/**
|
|
6487
|
+
* Predict observables for many `(satellite, receiver, epoch)` requests from a
|
|
6488
|
+
* broadcast ephemeris store, serially. See [`predictBatchSp3`] for the argument
|
|
6489
|
+
* shapes. Delegates to the serial `sidereon_core::observables::predict_batch`.
|
|
6490
|
+
*/
|
|
6491
|
+
export function predictBatchBroadcast(broadcast: BroadcastEphemeris, satellites: string[], receivers_ecef_m: Float64Array, epochs_j2000_s: Float64Array, options: any): PredictBatch;
|
|
6492
|
+
|
|
6493
|
+
/**
|
|
6494
|
+
* Predict observables for many `(satellite, receiver, epoch)` requests from an
|
|
6495
|
+
* SP3 precise product, serially.
|
|
6496
|
+
*
|
|
6497
|
+
* `satellites` is an array of satellite tokens, `receiversEcefM` a flat
|
|
6498
|
+
* row-major `(n, 3)` `Float64Array` of receiver ECEF positions (metres), and
|
|
6499
|
+
* `epochsJ2000S` a `Float64Array` of receive epochs (seconds since J2000); all
|
|
6500
|
+
* three are index-aligned and length `n`. Element `i` of the result corresponds
|
|
6501
|
+
* to request `i`. Delegates to the serial reference kernel
|
|
6502
|
+
* `sidereon_core::observables::predict_batch`; the binding never spawns the
|
|
6503
|
+
* rayon thread pool the parallel variant uses.
|
|
6504
|
+
*/
|
|
6505
|
+
export function predictBatchSp3(sp3: Sp3, satellites: string[], receivers_ecef_m: Float64Array, epochs_j2000_s: Float64Array, options: any): PredictBatch;
|
|
6506
|
+
|
|
6507
|
+
/**
|
|
6508
|
+
* Prepare ionosphere-free single-frequency RTK arc inputs from a
|
|
6509
|
+
* dual-frequency arc and fixed wide-lane ambiguities.
|
|
6510
|
+
*
|
|
6511
|
+
* `epochs` is an array of `RtkDualFrequencyArcEpoch` objects, `wideLaneCycles`
|
|
6512
|
+
* is an id-keyed integer object, and `config` is an
|
|
6513
|
+
* `RtkIonosphereFreeArcConfig` object. Delegates to
|
|
6514
|
+
* `sidereon_core::rtk_filter::arc::prepare_ionosphere_free_rtk_arc`.
|
|
6515
|
+
*/
|
|
6516
|
+
export function prepareIonosphereFreeRtkArc(epochs: any, wide_lane_cycles: any, config: any): any;
|
|
6517
|
+
|
|
6518
|
+
/**
|
|
6519
|
+
* Propagate a fleet of already-initialized [`Tle`]s over a shared epoch grid in
|
|
6520
|
+
* a single call: the batched form of [`Tle.propagate`].
|
|
6521
|
+
*
|
|
6522
|
+
* Element `(i, j)` of the result is `satellites[i]` propagated to
|
|
6523
|
+
* `epochsUnixUs[j]`, bit-for-bit identical to `satellites[i].propagate([
|
|
6524
|
+
* epochsUnixUs[j] ])` on its own; this is a thin wrapper over the engine's
|
|
6525
|
+
* serial batch kernel (the binding never spawns the rayon thread pool, since
|
|
6526
|
+
* wasm is single-threaded). Each `Tle` carries the opsmode it was constructed
|
|
6527
|
+
* with, so a deep-space / opsmode-sensitive object is propagated in its own
|
|
6528
|
+
* mode. The `Tle` instances are consumed by this call.
|
|
6529
|
+
*
|
|
6530
|
+
* `epochsUnixUs` is a `BigInt64Array` of unix-microsecond UTC epochs shared by
|
|
6531
|
+
* every satellite. The hot case for a constellation animation is a single epoch
|
|
6532
|
+
* (`epochCount == 1`), giving one TEME state per satellite, but any epoch count
|
|
6533
|
+
* is supported. An empty fleet or empty epoch grid yields empty arrays. Throws
|
|
6534
|
+
* an `Error` (naming the satellite index) if a satellite fails to propagate.
|
|
6535
|
+
*/
|
|
6536
|
+
export function propagateBatch(satellites: Tle[], epochs_unix_us: BigInt64Array): FleetPropagation;
|
|
6537
|
+
|
|
3657
6538
|
/**
|
|
3658
6539
|
* Numerically propagate an ECI Cartesian state and sample it at a grid of
|
|
3659
6540
|
* epochs.
|
|
@@ -3675,6 +6556,20 @@ export function pseudorangeDropReasonLabel(reason: PseudorangeDropReason): strin
|
|
|
3675
6556
|
*/
|
|
3676
6557
|
export function pseudorangeVariance(elevation_deg: number, options: any): number;
|
|
3677
6558
|
|
|
6559
|
+
/**
|
|
6560
|
+
* Run standalone range RAIM/FDE over a linearized measurement set.
|
|
6561
|
+
*
|
|
6562
|
+
* `rows` is an array of `{ id, residualM, designRow, weight }` objects (each
|
|
6563
|
+
* `designRow` the measurement's design-matrix row, of length equal to the
|
|
6564
|
+
* estimated state dimension). `options` is an optional `{ pFa?, maxExclusions?,
|
|
6565
|
+
* minRedundancy? }` object (pass `undefined` for the core defaults). Returns the
|
|
6566
|
+
* protected state correction, covariance, global chi-square test, the excluded
|
|
6567
|
+
* ids, the per-measurement diagnostics, and the exclusion count. Delegates to
|
|
6568
|
+
* `sidereon_core::quality::raim_fde_design`. Throws a `TypeError` for malformed
|
|
6569
|
+
* input and an `Error` for a rank-deficient or otherwise rejected set.
|
|
6570
|
+
*/
|
|
6571
|
+
export function raimFdeDesign(rows: any, options: any): any;
|
|
6572
|
+
|
|
3678
6573
|
/**
|
|
3679
6574
|
* Convert a pseudorange rate in metres per second to Doppler shift in hertz.
|
|
3680
6575
|
*/
|
|
@@ -3695,12 +6590,64 @@ export function rinexBandFrequencyHz(system: GnssSystem, band: string, glonass_c
|
|
|
3695
6590
|
*/
|
|
3696
6591
|
export function rinexBandWavelengthM(system: GnssSystem, band: string, glonass_channel?: number | null): number | undefined;
|
|
3697
6592
|
|
|
6593
|
+
/**
|
|
6594
|
+
* Read the 12-bit RTCM message number from a message body.
|
|
6595
|
+
*
|
|
6596
|
+
* `body` is the bytes between the frame length word and CRC. Delegates to
|
|
6597
|
+
* `sidereon_core::rtcm::message_number`.
|
|
6598
|
+
*/
|
|
6599
|
+
export function rtcmMessageNumber(body: Uint8Array): number;
|
|
6600
|
+
|
|
3698
6601
|
/**
|
|
3699
6602
|
* Transform a 3x3 RTN covariance (flat row-major length 9) to ECI for the given
|
|
3700
6603
|
* orbit state. Returns a flat row-major length-9 `Float64Array`.
|
|
3701
6604
|
*/
|
|
3702
6605
|
export function rtnToEciCovariance(covariance_rtn: Float64Array, position_km: Float64Array, velocity_km_s: Float64Array): Float64Array;
|
|
3703
6606
|
|
|
6607
|
+
/**
|
|
6608
|
+
* Convert an inertial Cartesian state to classical orbital elements.
|
|
6609
|
+
*
|
|
6610
|
+
* `r` is the ECI position (km), `v` the ECI velocity (km/s), and `mu` the
|
|
6611
|
+
* gravitational parameter (km^3/s^2). Returns a `ClassicalElements` object;
|
|
6612
|
+
* undefined primary angles and the inapplicable auxiliary angles are `NaN` per
|
|
6613
|
+
* the orbit type. Delegates to `sidereon_core::astro::elements::rv2coe`. Throws
|
|
6614
|
+
* a `TypeError` for a wrong-length vector and an `Error` for a degenerate or
|
|
6615
|
+
* non-finite state.
|
|
6616
|
+
*/
|
|
6617
|
+
export function rv2coe(r: Float64Array, v: Float64Array, mu: number): any;
|
|
6618
|
+
|
|
6619
|
+
/**
|
|
6620
|
+
* Apparent visual magnitude of a sunlit body from a diffuse-sphere phase law.
|
|
6621
|
+
*
|
|
6622
|
+
* `rangeKm` and `referenceRangeKm` (both positive) are the observation range
|
|
6623
|
+
* and the reference range at which `standardMagnitude` is defined;
|
|
6624
|
+
* `phaseAngleDeg` is the solar phase angle (Sun-body-observer), clamped to
|
|
6625
|
+
* `[0, 180]`. Delegates to
|
|
6626
|
+
* `sidereon_core::astro::observation::satellite_visual_magnitude`.
|
|
6627
|
+
*/
|
|
6628
|
+
export function satelliteVisualMagnitude(range_km: number, phase_angle_deg: number, standard_magnitude: number, reference_range_km: number): number;
|
|
6629
|
+
|
|
6630
|
+
/**
|
|
6631
|
+
* Screen a primary satellite against a secondary TLE catalog for threshold TCAs.
|
|
6632
|
+
*
|
|
6633
|
+
* `primaryLine1` / `primaryLine2` is the primary TLE; `secondaries` is an array
|
|
6634
|
+
* of `{ line1, line2 }`; `missDistanceThresholdKm` is the miss-distance cutoff.
|
|
6635
|
+
* Returns one `TcaScreeningHit` (`{ secondaryIndex, candidate }`) per local TCA
|
|
6636
|
+
* at or below the threshold, in catalog then time order. Delegates to
|
|
6637
|
+
* `sidereon_core::astro::tca::screen_tca_candidates_from_tle_catalog_serial`.
|
|
6638
|
+
*/
|
|
6639
|
+
export function screenTcaCandidates(primary_line1: string, primary_line2: string, secondaries: any, window_start_unix_micros: bigint, window_end_unix_micros: bigint, miss_distance_threshold_km: number, options: any): any;
|
|
6640
|
+
|
|
6641
|
+
/**
|
|
6642
|
+
* Screen a primary against a secondary TLE catalog and evaluate collision
|
|
6643
|
+
* probability at each threshold TCA.
|
|
6644
|
+
*
|
|
6645
|
+
* Like `screenTcaCandidates`, plus `pcOptions`. Returns an array of
|
|
6646
|
+
* `TcaScreeningConjunctionHit` (`{ secondaryIndex, conjunction }`). Delegates to
|
|
6647
|
+
* `sidereon_core::astro::tca::screen_tca_conjunctions_from_tle_catalog_serial`.
|
|
6648
|
+
*/
|
|
6649
|
+
export function screenTcaConjunctions(primary_line1: string, primary_line2: string, secondaries: any, window_start_unix_micros: bigint, window_end_unix_micros: bigint, miss_distance_threshold_km: number, pc_options: any, options: any): any;
|
|
6650
|
+
|
|
3704
6651
|
/**
|
|
3705
6652
|
* Select an IONEX product usable at `requestedEpochJ2000S`, degrading to a
|
|
3706
6653
|
* diurnal-shifted prior product within `policy`.
|
|
@@ -3737,12 +6684,32 @@ export function selectSp3OverRange(products: Sp3[], start_epoch_j2000_s: number,
|
|
|
3737
6684
|
*/
|
|
3738
6685
|
export function shadowFraction(satellite_position_km: Float64Array, sun_position_km: Float64Array): Float64Array;
|
|
3739
6686
|
|
|
6687
|
+
/**
|
|
6688
|
+
* Shapiro-Wilk normality test on a residual set.
|
|
6689
|
+
*
|
|
6690
|
+
* `x` is a `Float64Array` (at least three values). Returns `{ w, pValue }`,
|
|
6691
|
+
* Royston's AS R94 port that `scipy.stats.shapiro` uses; `w` is in `(0, 1]`
|
|
6692
|
+
* (closer to one is more Gaussian). Delegates to
|
|
6693
|
+
* `sidereon_core::quality::normality::shapiro_wilk`.
|
|
6694
|
+
*/
|
|
6695
|
+
export function shapiroWilk(x: Float64Array): any;
|
|
6696
|
+
|
|
3740
6697
|
/**
|
|
3741
6698
|
* Build satellite-keyed pseudorange sigmas in metres from `{ satelliteId,
|
|
3742
6699
|
* elevationDeg, cn0Dbhz? }` entries. Invalid entries are dropped by the core.
|
|
3743
6700
|
*/
|
|
3744
6701
|
export function sigmas(entries: any, options: any): SatelliteVector;
|
|
3745
6702
|
|
|
6703
|
+
/**
|
|
6704
|
+
* Sample skewness of a residual set.
|
|
6705
|
+
*
|
|
6706
|
+
* `x` is a `Float64Array`. `bias` (default `true`) selects the Fisher-Pearson
|
|
6707
|
+
* coefficient `g1 = m3 / m2^(3/2)` (`scipy.stats.skew`); `false` applies the
|
|
6708
|
+
* sample correction (`scipy.stats.skew(bias=False)`, needs at least three
|
|
6709
|
+
* values). Delegates to `sidereon_core::quality::normality::skewness`.
|
|
6710
|
+
*/
|
|
6711
|
+
export function skewness(x: Float64Array, bias?: boolean | null): number;
|
|
6712
|
+
|
|
3746
6713
|
/**
|
|
3747
6714
|
* Stable lower-case label for a slip reason.
|
|
3748
6715
|
*/
|
|
@@ -3763,6 +6730,65 @@ export function smoothIonoFreeCode(arc: any, options: any, hatch_window_cap?: nu
|
|
|
3763
6730
|
*/
|
|
3764
6731
|
export function snrPostDb(cn0_dbhz: number, integration_time_s: number): number;
|
|
3765
6732
|
|
|
6733
|
+
/**
|
|
6734
|
+
* Solid-earth pole tide displacement of an ITRF station, metres (ECEF).
|
|
6735
|
+
*
|
|
6736
|
+
* `stationEcefM` is a length-3 geocentric ECEF metre vector and the epoch is
|
|
6737
|
+
* the UTC `year`/`month`/`day` plus `fractionalHour`. `xpArcsec` / `ypArcsec`
|
|
6738
|
+
* are the polar-motion coordinates in arcseconds. Returns the displacement
|
|
6739
|
+
* `[dx, dy, dz]`. Delegates to `sidereon_core::tides::solid_earth_pole_tide`.
|
|
6740
|
+
*/
|
|
6741
|
+
export function solidEarthPoleTide(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, xp_arcsec: number, yp_arcsec: number): Float64Array;
|
|
6742
|
+
|
|
6743
|
+
/**
|
|
6744
|
+
* Solid-earth tide displacement of an ITRF station, metres (ECEF).
|
|
6745
|
+
*
|
|
6746
|
+
* `stationEcefM`, `sunEcefM`, `moonEcefM` are length-3 geocentric ECEF metre
|
|
6747
|
+
* vectors. The epoch is the UTC `year`/`month`/`day` plus `fractionalHour`
|
|
6748
|
+
* (`hour + min/60 + sec/3600`, in `[0, 24)`). Returns the displacement
|
|
6749
|
+
* `[dx, dy, dz]`. Delegates to `sidereon_core::tides::solid_earth_tide`.
|
|
6750
|
+
*/
|
|
6751
|
+
export function solidEarthTide(station_ecef_m: Float64Array, year: number, month: number, day: number, fractional_hour: number, sun_ecef_m: Float64Array, moon_ecef_m: Float64Array): Float64Array;
|
|
6752
|
+
|
|
6753
|
+
/**
|
|
6754
|
+
* Solve a sequence of moving-baseline RTK epochs.
|
|
6755
|
+
*
|
|
6756
|
+
* `config` is a plain object; see the `MovingBaselineConfig` TypeScript type.
|
|
6757
|
+
* Each epoch is solved independently against its own `basePositionM`; with
|
|
6758
|
+
* `warmStart` (default `true`) each solved baseline seeds the next epoch's
|
|
6759
|
+
* linearization point. Returns an array of `MovingBaselineEpochSolution`. Throws
|
|
6760
|
+
* a `TypeError` for malformed input and an `Error` if a solve fails (the message
|
|
6761
|
+
* names the failing epoch index). Delegates to
|
|
6762
|
+
* `sidereon_core::rtk_filter::moving_baseline::solve_moving_baseline`.
|
|
6763
|
+
*/
|
|
6764
|
+
export function solveMovingBaseline(config: any): MovingBaselineSolution[];
|
|
6765
|
+
|
|
6766
|
+
/**
|
|
6767
|
+
* Solve a static integer-fixed PPP arc from raw epochs: SPP auto-init seed, the
|
|
6768
|
+
* float solve, then the LAMBDA integer fix and ambiguity-conditioned re-solve.
|
|
6769
|
+
*
|
|
6770
|
+
* `epochs`, `floatConfig`, and `fixedConfig` are the same plain objects the
|
|
6771
|
+
* float and fixed solves take; `options` is an optional `PppAutoInitOptions`
|
|
6772
|
+
* object. Delegates to
|
|
6773
|
+
* `sidereon_core::precise_positioning::auto_init::solve_ppp_auto_init_fixed`.
|
|
6774
|
+
* Throws a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
6775
|
+
*/
|
|
6776
|
+
export function solvePppAutoInitFixed(sp3: Sp3, epochs: any, options: any, float_config: any, fixed_config: any): PppFixedSolution;
|
|
6777
|
+
|
|
6778
|
+
/**
|
|
6779
|
+
* Solve a static multi-epoch float PPP arc from raw epochs, auto-initializing
|
|
6780
|
+
* the float state from the SPP seed.
|
|
6781
|
+
*
|
|
6782
|
+
* Unlike [`solvePppFloat`], the caller does not supply an initial state: the
|
|
6783
|
+
* driver seeds it (per-epoch SPP code solve, mean position, phase-minus-code
|
|
6784
|
+
* ambiguities) before the float solve. `epochs` and `config` are the same plain
|
|
6785
|
+
* objects [`solvePppFloat`] takes; `options` is an optional `PppAutoInitOptions`
|
|
6786
|
+
* object (pass `undefined` for the SPP-seeded defaults). Delegates to
|
|
6787
|
+
* `sidereon_core::precise_positioning::auto_init::solve_ppp_auto_init_float`.
|
|
6788
|
+
* Throws a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
6789
|
+
*/
|
|
6790
|
+
export function solvePppAutoInitFloat(sp3: Sp3, epochs: any, options: any, config: any): PppFloatSolution;
|
|
6791
|
+
|
|
3766
6792
|
/**
|
|
3767
6793
|
* Search integer ambiguities from a float PPP solution and re-solve fixed.
|
|
3768
6794
|
*
|
|
@@ -3781,6 +6807,18 @@ export function solvePppFixed(sp3: Sp3, epochs: any, float_solution: PppFloatSol
|
|
|
3781
6807
|
*/
|
|
3782
6808
|
export function solvePppFloat(sp3: Sp3, epochs: any, initial_state: any, config: any): PppFloatSolution;
|
|
3783
6809
|
|
|
6810
|
+
/**
|
|
6811
|
+
* Solve a sequential RTK baseline arc from raw rover+base epochs.
|
|
6812
|
+
*
|
|
6813
|
+
* `epochs` is an array of `RtkArcEpoch` objects and `config` an `RtkArcConfig`
|
|
6814
|
+
* object (see the TypeScript types). Returns `{ references, epochs, finalState }`:
|
|
6815
|
+
* one reported baseline/ambiguity solution per input epoch, the per-system
|
|
6816
|
+
* reference satellites selected once for the whole arc, and the final carried
|
|
6817
|
+
* filter state. Delegates to `sidereon_core::rtk_filter::arc::solve_rtk_arc`.
|
|
6818
|
+
* Throws a `TypeError` for malformed input and an `Error` if the solve fails.
|
|
6819
|
+
*/
|
|
6820
|
+
export function solveRtkArc(epochs: any, config: any): any;
|
|
6821
|
+
|
|
3784
6822
|
/**
|
|
3785
6823
|
* Solve a static fixed RTK baseline with residual validation / FDE.
|
|
3786
6824
|
*
|
|
@@ -3798,12 +6836,29 @@ export function solveRtkFixed(config: any): RtkFixedSolution;
|
|
|
3798
6836
|
export function solveRtkFloat(config: any): RtkFloatSolution;
|
|
3799
6837
|
|
|
3800
6838
|
/**
|
|
3801
|
-
* Solve
|
|
3802
|
-
*
|
|
3803
|
-
*
|
|
6839
|
+
* Solve a static RTK arc with one batch float solution and one validated fixed
|
|
6840
|
+
* solution over the whole arc.
|
|
6841
|
+
*
|
|
6842
|
+
* `epochs` is an array of `RtkArcEpoch` objects and `config` a
|
|
6843
|
+
* `RtkStaticArcConfig` object. Delegates to
|
|
6844
|
+
* `sidereon_core::rtk_filter::arc::solve_static_rtk_arc`.
|
|
6845
|
+
*/
|
|
6846
|
+
export function solveStaticRtkArc(epochs: any, config: any): any;
|
|
6847
|
+
|
|
6848
|
+
/**
|
|
6849
|
+
* Solve receiver velocity over an SP3 precise product. See
|
|
6850
|
+
* [`solveVelocityBroadcast`] for the broadcast-ephemeris counterpart.
|
|
3804
6851
|
*/
|
|
3805
6852
|
export function solveVelocity(sp3: Sp3, observations: any, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): VelocitySolution;
|
|
3806
6853
|
|
|
6854
|
+
/**
|
|
6855
|
+
* Solve receiver ECEF velocity and clock drift from one epoch of observations
|
|
6856
|
+
* over a broadcast ephemeris store. Identical to [`solveVelocity`] except the
|
|
6857
|
+
* satellite states come from broadcast records. Delegates to
|
|
6858
|
+
* `sidereon_core::velocity::solve`.
|
|
6859
|
+
*/
|
|
6860
|
+
export function solveVelocityBroadcast(broadcast: BroadcastEphemeris, observations: any, receiver_ecef_m: Float64Array, t_rx_j2000_s: number, options: any): VelocitySolution;
|
|
6861
|
+
|
|
3807
6862
|
/**
|
|
3808
6863
|
* Solve a receiver position, preferring precise SP3 products and falling back to
|
|
3809
6864
|
* broadcast ephemeris, reporting which source was used and how stale it is.
|
|
@@ -3817,11 +6872,48 @@ export function solveVelocity(sp3: Sp3, observations: any, receiver_ecef_m: Floa
|
|
|
3817
6872
|
*/
|
|
3818
6873
|
export function solveWithFallback(precise: Sp3[], broadcast: BroadcastEphemeris, request: any, policy: any): SourcedSolution;
|
|
3819
6874
|
|
|
6875
|
+
/**
|
|
6876
|
+
* Continuous seconds since J2000 for a split Julian date.
|
|
6877
|
+
*/
|
|
6878
|
+
export function splitJdToJ2000Seconds(jd_whole: number, jd_fraction: number): number;
|
|
6879
|
+
|
|
6880
|
+
/**
|
|
6881
|
+
* Sub-observer point (planetary central meridian) on a rotating body.
|
|
6882
|
+
*
|
|
6883
|
+
* `observerFromBody` is the observer position relative to the body center
|
|
6884
|
+
* (length-3 `Float64Array`) in an inertial (ICRF/J2000 equatorial) frame, and
|
|
6885
|
+
* `poleRaDeg` / `poleDecDeg` / `primeMeridianDeg` are the IAU WGCCRE pole right
|
|
6886
|
+
* ascension, declination, and prime-meridian angle. Returns the body-fixed
|
|
6887
|
+
* `{ latitudeDeg, longitudeDeg }` (planetocentric, longitude on `(-180, 180]`).
|
|
6888
|
+
* Delegates to `sidereon_core::astro::observation::sub_observer_point`.
|
|
6889
|
+
*/
|
|
6890
|
+
export function subObserverPoint(observer_from_body: Float64Array, pole_ra_deg: number, pole_dec_deg: number, prime_meridian_deg: number): any;
|
|
6891
|
+
|
|
6892
|
+
/**
|
|
6893
|
+
* Sub-solar point: the geographic point where the Sun is at the zenith.
|
|
6894
|
+
*
|
|
6895
|
+
* `sunEcef` is the geocentric Sun position (length-3 `Float64Array`) in an
|
|
6896
|
+
* Earth-fixed (ITRS/ECEF) frame; only its direction matters. Returns
|
|
6897
|
+
* `{ latitudeDeg, longitudeDeg }` (geocentric, degrees). Delegates to
|
|
6898
|
+
* `sidereon_core::astro::observation::sub_solar_point`.
|
|
6899
|
+
*/
|
|
6900
|
+
export function subSolarPoint(sun_ecef: Float64Array): any;
|
|
6901
|
+
|
|
3820
6902
|
/**
|
|
3821
6903
|
* Angle in degrees between satellite nadir and the Sun direction.
|
|
3822
6904
|
*/
|
|
3823
6905
|
export function sunAngle(satellite_position_km: Float64Array, sun_position_km: Float64Array): Float64Array;
|
|
3824
6906
|
|
|
6907
|
+
/**
|
|
6908
|
+
* Topocentric azimuth/elevation/range of the Sun from a ground site.
|
|
6909
|
+
*
|
|
6910
|
+
* The station is geodetic (`latitudeDeg`, `longitudeDeg`, `altitudeKm`);
|
|
6911
|
+
* `epochUnixUs` is the UTC instant as unix microseconds. Returns
|
|
6912
|
+
* `{ azimuthDeg, elevationDeg, rangeKm }` (azimuth clockwise from north).
|
|
6913
|
+
* Delegates to `sidereon_core::astro::bodies::sun_az_el`.
|
|
6914
|
+
*/
|
|
6915
|
+
export function sunAzEl(latitude_deg: number, longitude_deg: number, altitude_km: number, epoch_unix_us: bigint): any;
|
|
6916
|
+
|
|
3825
6917
|
/**
|
|
3826
6918
|
* Sun elevation in degrees above the satellite local horizontal plane.
|
|
3827
6919
|
*/
|
|
@@ -3839,6 +6931,15 @@ export function sunMoonEcef(epochs_unix_us: BigInt64Array): SunMoon;
|
|
|
3839
6931
|
*/
|
|
3840
6932
|
export function sunMoonEci(epochs_unix_us: BigInt64Array): SunMoon;
|
|
3841
6933
|
|
|
6934
|
+
/**
|
|
6935
|
+
* TAI-UTC (cumulative leap seconds) in effect on a UTC calendar date.
|
|
6936
|
+
*
|
|
6937
|
+
* This is **not** the GNSS "GPS - UTC" offset; for the quantity a GPS receiver
|
|
6938
|
+
* applies use [`gpsUtcOffsetS`] (they differ by a constant 19 s). Delegates to
|
|
6939
|
+
* `sidereon_core::astro::time::scales::tai_utc_offset_s`.
|
|
6940
|
+
*/
|
|
6941
|
+
export function taiUtcOffsetS(year: number, month: number, day: number): number;
|
|
6942
|
+
|
|
3842
6943
|
/**
|
|
3843
6944
|
* Transform a batch of TEME states to GCRS, each at its own epoch.
|
|
3844
6945
|
*
|
|
@@ -3848,11 +6949,45 @@ export function sunMoonEci(epochs_unix_us: BigInt64Array): SunMoon;
|
|
|
3848
6949
|
*/
|
|
3849
6950
|
export function temeToGcrs(position_km: Float64Array, velocity_km_s: Float64Array, epochs_unix_us: BigInt64Array, skyfield_compat?: boolean | null): FrameStates;
|
|
3850
6951
|
|
|
6952
|
+
/**
|
|
6953
|
+
* Latitude (degrees) of the day-night terminator at a query longitude.
|
|
6954
|
+
*
|
|
6955
|
+
* `subSolarLatitudeDeg` / `subSolarLongitudeDeg` are the sub-solar point (see
|
|
6956
|
+
* `subSolarPoint`); `longitudeDeg` is the query longitude. Delegates to
|
|
6957
|
+
* `sidereon_core::astro::observation::terminator_latitude_deg`.
|
|
6958
|
+
*/
|
|
6959
|
+
export function terminatorLatitudeDeg(sub_solar_latitude_deg: number, sub_solar_longitude_deg: number, longitude_deg: number): number;
|
|
6960
|
+
|
|
3851
6961
|
/**
|
|
3852
6962
|
* Short uppercase identifier for a time scale, e.g. `"GPST"`.
|
|
3853
6963
|
*/
|
|
3854
6964
|
export function timeScaleAbbrev(scale: TimeScale): string;
|
|
3855
6965
|
|
|
6966
|
+
/**
|
|
6967
|
+
* Leap-aware inter-system offset `to_reading - from_reading`, in seconds, at a
|
|
6968
|
+
* given UTC instant. Add the result to a `from`-scale reading to get the
|
|
6969
|
+
* `to`-scale reading.
|
|
6970
|
+
*
|
|
6971
|
+
* `utcJd` is the UTC Julian date of the instant; it is consulted only to
|
|
6972
|
+
* resolve the leap-second count when `from` or `to` is UTC-based
|
|
6973
|
+
* (`Utc`/`Glonasst`), and is ignored for purely atomic pairs. Throws a
|
|
6974
|
+
* `RangeError` for `Tdb` or a non-finite `utcJd` when a leap count is needed.
|
|
6975
|
+
*/
|
|
6976
|
+
export function timescaleOffsetAtS(from: TimeScale, to: TimeScale, utc_jd: number): number;
|
|
6977
|
+
|
|
6978
|
+
/**
|
|
6979
|
+
* Fixed inter-system offset `to_reading - from_reading`, in seconds, for the
|
|
6980
|
+
* same physical instant. Add the result to a `from`-scale reading to get the
|
|
6981
|
+
* `to`-scale reading.
|
|
6982
|
+
*
|
|
6983
|
+
* Covers the atomic scales (TAI/TT/GPST/GST/QZSST/BDT), whose mutual offsets
|
|
6984
|
+
* are constants fixed by their ICDs. Throws a `RangeError` when either scale is
|
|
6985
|
+
* UTC-based (`Utc`/`Glonasst`): those carry leap seconds, so their offset is
|
|
6986
|
+
* epoch-dependent and needs [`timescaleOffsetAtS`], or for `Tdb` (no fixed
|
|
6987
|
+
* offset; resolve it through an `Instant`).
|
|
6988
|
+
*/
|
|
6989
|
+
export function timescaleOffsetS(from: TimeScale, to: TimeScale): number;
|
|
6990
|
+
|
|
3856
6991
|
/**
|
|
3857
6992
|
* Export records as the compact mapping CSV (`prn,norad_cat_id,active,sp3_id`).
|
|
3858
6993
|
*
|
|
@@ -3912,6 +7047,25 @@ export function validate(records: any): any;
|
|
|
3912
7047
|
*/
|
|
3913
7048
|
export function validateAgainstSp3Ids(records: any, ids: any): any;
|
|
3914
7049
|
|
|
7050
|
+
/**
|
|
7051
|
+
* Satellites visible above `minElevationDeg` from `station` at a single instant,
|
|
7052
|
+
* from already-initialized [`Tle`]s: the opsmode-preserving constellation
|
|
7053
|
+
* snapshot.
|
|
7054
|
+
*
|
|
7055
|
+
* Each `Tle` in `satellites` carries the opsmode it was constructed with, so a
|
|
7056
|
+
* deep-space / opsmode-sensitive object is evaluated in its own mode (unlike the
|
|
7057
|
+
* element-based core path, which hardcodes AFSPC). `ids` supplies the identity
|
|
7058
|
+
* out-of-band: `ids[i]` (a catalog number, name, or anything) becomes the
|
|
7059
|
+
* `catalogNumber` of `satellites[i]`, so the two arrays must be the same length.
|
|
7060
|
+
* The `Tle` instances are consumed by this call.
|
|
7061
|
+
*
|
|
7062
|
+
* `epochUnixUs` is a unix-microsecond UTC `bigint`. Per-satellite propagation or
|
|
7063
|
+
* frame failures are skipped; the result is filtered by `minElevationDeg` and
|
|
7064
|
+
* sorted by elevation descending. Throws an `Error` on an invalid station,
|
|
7065
|
+
* elevation threshold, or `ids`/`satellites` length mismatch.
|
|
7066
|
+
*/
|
|
7067
|
+
export function visibleFromSatellites(satellites: Tle[], ids: string[], station: GroundStation, epoch_unix_us: bigint, min_elevation_deg: number): VisibleSatellite[];
|
|
7068
|
+
|
|
3915
7069
|
/**
|
|
3916
7070
|
* Wavelength, metres, for frequency in Hz.
|
|
3917
7071
|
*/
|