apsis-rs/crates/orbit/apsis-sgp4/src
ApsisRS contributors a3028b2029 fix: reject an unordered sample sequence in the access search
The search binary searches the sample list to interpolate between the two
samples that straddle a crossing, and a binary search over an unordered
list returns a wrong index instead of failing. Only the first and last
times were checked, so a sequence whose ends were in order but whose
middle was not refined each crossing against the wrong pair of positions
and reported a pass that never happened. On a circular ground track,
shuffling two samples changed the result from three passes to two and
still returned Ok.

The whole sequence is now checked, with a new UnorderedSamples error kind
that says which pair is out of order. The test covers the middle-of-
sequence case that the end check missed.

Two comments also described something other than what the code does, and
two Option-returning accessors did not say what makes them None:

- GravityModel::x2o3 is the constant 2/3, used as an exponent in the
  mean motion and drag corrections, not 2 * xke^2 as its comment claimed;
  the sgp4 reference implementation uses the same constant the same way.
- WalkerPattern::plane_spacing and phase_offset returned None without
  saying so, which is the case a caller has to handle.

Both READMEs claimed twelve expect sites where there are thirteen, because
apsis-math/src/parallel.rs added one and the count was not carried over.
2026-10-02 00:03:22 +08:00
..
batch.rs docs: record the parallelism decision, interfaces, and measurements 2026-09-30 18:43:14 +08:00
deep_space.rs orbit: add SGP4 and SDP4 propagator 2026-09-26 14:16:23 +08:00
error.rs orbit: add SGP4 and SDP4 propagator 2026-09-26 14:16:23 +08:00
init.rs orbit: add SGP4 and SDP4 propagator 2026-09-26 14:16:23 +08:00
lib.rs sgp4: propagate a track across several threads 2026-09-30 18:36:14 +08:00
model.rs fix: reject an unordered sample sequence in the access search 2026-10-02 00:03:22 +08:00
propagate.rs orbit: add SGP4 and SDP4 propagator 2026-09-26 14:16:23 +08:00
satellite.rs orbit: add SGP4 and SDP4 propagator 2026-09-26 14:16:23 +08:00
state.rs orbit: add SGP4 and SDP4 propagator 2026-09-26 14:16:23 +08:00