NextPass

Methodology

A curve is not a prediction until it has been checked

Every tracker draws a curve. What follows says how this one is computed, what it was compared with, and what its times are worth by the evening you go outside.

From elements to a pass

The browser computes nothing: every point it draws comes from the server

Fresh elements

A two-line element set (TLE) from CelesTrak, refreshed every two hours, validated by Orekit on arrival. If CelesTrak is unreachable, the last good set is kept with its real age.

SGP4 propagation

Orekit's SGP4 turns the elements into positions. A TLE is only meaningful to SGP4: it is never fed to another propagator.

Frame by frame

SGP4 speaks TEME. Each date is converted to ITRF - precession-nutation, Earth rotation, polar motion, full IERS 2010 EOP - then read from the observer's horizon.

Event detection

An elevation detector finds rise and set to the millisecond by root finding; the culmination is found the same way, not interpolated.

Sampled track

A second propagation per pass samples the track every 10 s, with range, range rate, sub-satellite point and sunlight at each point.

Validated against Skyfield

An independent SGP4 implementation, sharing no code with Orekit

Comparing two lists of pass times would show discrepancies of up to a second without saying which side is wrong. The check works the other way round: it takes the instants Orekit produces and asks Skyfield what elevation and azimuth it computes at those exact instants. If Orekit is right, Skyfield must find the threshold exactly at the boundaries of every pass.

QuantityMeasured discrepancyToleranceMargin
Elevation, Orekit vs Skyfield0.53 millidegree10 millidegrees×19
Azimuth, Orekit vs Skyfield2.0 millidegrees20 millidegrees×10
Dates, regression suite01 s-
Angles, regression suite00.1°-

What it proves

That the implementation and the chain of reference frames are correct. A regression test in continuous integration then watches the same reference file for drift: a library upgrade, a refresh of the Earth orientation data, a rewrite of the service.

What it does not

Skyfield and Orekit implement the same model. Their agreement says nothing about the gap to the real sky, which is dominated by the age of the elements. That gap is the subject of the next section - and the reason every result shows it.

What the times are worth

The age of the elements dominates every other error
Source of errorOrder of magnitudeHow it is handled
Age of the TLE~1 km at epoch, then 1–3 km/day in low orbitShown on every result as a drift and a timing range. Elements older than 7 days are refused; windows are capped at 10 days.
ManoeuvresUnbounded until new elementsInvisible to SGP4. An ISS reboost makes the previous elements wrong until CelesTrak publishes new ones.
Atmospheric refraction~0.1° near 5° elevationNot modelled: positions are geometric. Keep a threshold above a few degrees.
Earth orientation (UT1, polar motion)< 500 mModelled anyway with predicted IERS Bulletin A values: a correct frame chain costs nothing.
Light timea few msNot modelled.

Two days of age mean 2 to 6 km, which the ISS covers in under a second at 7.7 km/s: invisible to the naked eye, but a thousand times the Earth-orientation effects. Times are shown to the second; treat the banner above every result as their real precision.

"Potentially visible", precisely

Sunlit

A point is illuminated when the entire solar disc is clear of the Earth - penumbra counts as shadow. A satellite that enters the shadow mid-pass disappears mid-sky, and the sky chart shows where.

Visible

A point is visible when the satellite is sunlit and the Sun is at least 6° below the observer's horizon (civil twilight). It is a geometric condition, not a promise: brightness, clouds and light pollution are not modelled.

Sources and credits

  • Orbital elements: CelesTrak, reached directly or through a relay; Space-Track only as an availability fallback when configured.
  • Astrodynamics: Orekit 13, with its IERS data (leap seconds, Earth orientation parameters).
  • Independent check: Skyfield.
  • Coastlines: Natural Earth, 1:110m.

The code, the validation script and the reference file are public: read them on GitHub ↗. Integrating the predictions? See the API guide.