Simulation Accuracy and Sources of Error

A plain-language guide to the sources of error between where Curious Pilot draws a satellite and where you would actually see it among the stars.

Contents
  1. Overview
  2. Assumptions
  3. The Error Factors, Most to Least Important
  4. How Position Error Becomes Angular Error
  5. Putting It All Together
  6. Definitions of Key Terms

Overview

Curious Pilot draws three things on the sky: stars, Solar System bodies (Sun, Moon, planets), and satellites. The first two are computed to better than one arcsecond — far smaller than a pixel at any reasonable zoom level. The error you sometimes see is almost entirely on the satellite side.

This document explains, in plain terms, where that error comes from and roughly how big it is. The factors are listed in order of how much they contribute, from most important to least.

Assumptions

Satellite type: the numerical examples assume a typical Low Earth Orbit (LEO) satellite at altitudes of 400–600 km, such as the International Space Station (ISS) or a Starlink. Higher orbits (Global Positioning System satellites, geostationary satellites) have proportionally smaller angular errors because they are farther away.
Orbital data freshness: "fresh" means the satellite's published orbital parameters were updated within the last 24 hours by the U.S. Space Force via the Space-Track service.
Atmospheric conditions: the simulator does not consume real-time weather data — no cloud cover, no measured temperature, no humidity, no barometric pressure. The only atmospheric model in use is the International Standard Atmosphere (ISA), which gives a pressure value as a function of the observer's altitude alone. This drives both the refraction correction (the small upward "lift" applied to objects near the horizon) and the magnitude-extinction correction (the dimming of light as it travels through more air at lower elevations). Day-to-day weather (cold fronts, high-pressure systems, inversions, surface temperature swings) can shift true refraction by roughly ±10% relative to ISA; this remaining residual is tiny — see Factor 2. Clouds do not affect satellite position; they only affect whether the satellite is visible at all, which is outside the scope of this document.
Solar activity: drift estimates assume average solar activity. During geomagnetic storms, atmospheric drag on LEO satellites can double or triple, increasing position errors accordingly.
Reference for "noticeable": the full Moon is about 31 arcminutes wide. Most numbers in this document are compared to that size to give a visual sense of scale.

The Error Factors, Most to Least Important

1

Simplified General Perturbations model #4 (SGP4) propagation error

Dominant — ~5 to 20 arcmin

Every satellite in the U.S. catalog is described by a small set of orbital parameters. To compute where the satellite will be a few minutes or hours later, the simulator uses a 1970s-era physics model called the Simplified General Perturbations model #4, or SGP4. SGP4 is fast and standardized worldwide, but it is a simplified model: it approximates Earth's lumpy gravity, atmospheric drag, and the pull of the Sun and Moon. The full set of physics is too expensive to recompute for thousands of satellites in real time.

Two errors stack here:

For a satellite directly overhead at 400 km altitude, 2 km of position error projects to about 17 arcminutes in the sky — a little more than half the width of a full Moon.

2

Residual atmospheric-refraction modeling error

Tiny — under 2 arcmin in any realistic situation

Earth's atmosphere bends light. Because the atmosphere is denser near the surface, light rays from above curve gently downward, and an object appears higher in the sky than it geometrically is. This effect is essentially zero overhead and grows rapidly toward the horizon — reaching about 29 arcmin at the geometric horizon at sea level.

The simulator does apply atmospheric refraction to satellite positions (using the Sæmundsson formula), in addition to the refraction already applied to the Sun, Moon, planets, and stars by the Astronomy Engine library. The result is then scaled by the International Standard Atmosphere (ISA) pressure ratio at the observer's actual altitude — so the simulator naturally applies less refraction in the thin air at FL400 than at sea level. A satellite drawn near a star will sit at the correct apparent elevation in most viewing conditions, and a satellite that has just dipped below the geometric horizon may still be drawn (and seen) for an additional fraction of a degree of true elevation below.

Direction of the altitude effect: at altitude the refraction adjustment is smaller, not larger — less of the atmospheric column sits above the observer, so light has less air to bend through. At FL400 the simulator applies about 19% of the sea-level lift; at FL600, only about 7%.

How much refraction lift the simulator applies, scaled by altitude:

Observer altitudeISA pressure ratioHorizon liftLift at 10°Lift at 30°
Sea level1.00~29'~5.3'~1.7'
5,000 ft (~1.5 km)0.84~24'~4.4'~1.4'
FL300 (9.1 km)0.30~8.7'~1.6'~0.5'
FL400 (12.2 km)0.19~5.4'~1.0'~0.3'
FL600 (18.3 km)0.07~2.1'~0.4'~0.1'

The remaining residual error comes from two simplifications, neither of which contributes much:

For the typical airliner-at-cruise + horizon case, the worst-case residual is now well under 2 arcmin — about 1/15 of a Moon-width — and it shrinks rapidly above 10° elevation.

0' 10' 20' 30' 40' Apparent lift (arcmin) 10° 20° 30° 45° 90° True elevation above horizon ~1 Moon-width (~31') 10° → ~5' 20° → ~3'
Apparent lift of an object due to atmospheric refraction at sea level. At altitude, the entire curve scales down by the ISA pressure ratio (e.g. ×0.30 at FL300, ×0.07 at FL600).

Magnitude of refraction the simulator applies at sea level, by true elevation. Multiply by the ISA pressure ratio at altitude (e.g. ×0.19 at FL400) to get the value the simulator actually applies to an aircraft observer:

True elevationSea-level liftEffect on display
Above 20°under 3 arcminImperceptible
10° to 20°3 to 5 arcminBrings satellite into agreement with nearby stars
5° to 10°5 to 10 arcminVisible improvement — satellite no longer drawn below same-elevation stars
Below 5°10 to 29 arcminMajor correction; just-set satellites still drawn for a fraction of a degree of true elevation below the horizon
3

Frame-rate caching of satellite positions

Tiny — under 0.5 arcmin

For performance, the simulator only fully recomputes satellite positions every third animation frame (about every 33 milliseconds at 60 frames per second), reusing the cached values in between. A satellite moving at orbital speed (~7.5 km/s) travels about 0.25 km in that interval — which projects to under 0.5 arcmin at typical viewing distances. Imperceptible.

4

True Equator Mean Equinox (TEME) treated as Pseudo Earth Fixed (PEF)

Arcsecond-class — invisible

SGP4 outputs satellite positions in a reference frame called the True Equator Mean Equinox of date, or TEME. Strictly speaking, converting TEME to an Earth-rotating frame requires a small correction called the equation of equinoxes, then a polar-motion correction. The library used here (satellite.js) skips both and rotates TEME directly into a closely-related frame called Pseudo Earth Fixed, or PEF.

The shortcut introduces under 1 arcsecond of error — roughly 1/2000 of a Moon-width. It is hundreds of times smaller than the SGP4 error already present, and entirely invisible.

5

Polar motion neglected

Sub-arcsecond — invisible

Earth's rotational pole wanders by about 0.3 arcseconds (roughly 9 meters at the surface) over months. The simulator does not apply this correction. The resulting error is far below any visible threshold.

6

World Geodetic System 1972 versus 1984 ellipsoid mismatch

Sub-arcsecond — invisible

SGP4 was designed around the World Geodetic System 1972 (WGS-72) shape of the Earth. Modern position data uses the World Geodetic System 1984 (WGS-84). The two ellipsoids differ by a few meters, which is well below pixel scale.

How Position Error Becomes Angular Error

The same kilometer of satellite position error looks very different in the sky depending on how far away the satellite is. The relationship is simple geometry:

angular error (radians) ≈ position error / slant range

Observer on the ground You Close LEO sat (~400 km) 2 km → ~17 arcmin Distant sat (~20,000 km) 2 km → ~0.3 arcmin
The same 2-km position error projects to a much larger angle for a nearby LEO satellite than for a far one. This is why LEO satellites dominate the visible error.
Satellite & viewing geometrySlant range2 km error becomes
ISS overhead (zenith)~400 km~17 arcmin (~½ Moon)
ISS at 45° elevation~570 km~12 arcmin (~⅓ Moon)
ISS near horizon (10°)~1,500 km~4.5 arcmin (~⅐ Moon)
Starlink overhead~550 km~12 arcmin
GPS satellite overhead~20,000 km~0.3 arcmin (negligible)

Putting It All Together

Typical angular error contribution (LEO satellites, fresh data, after refraction correction) 0' 10' 20' 30' arcmin Full Moon (~31') SGP4 (≤ 1 day old) ~10–15' Refraction residual (worst case, near horizon) ~3' (~1' typical) Frame-rate caching <0.5' TEME-as-PEF shortcut ~1 arcsec (invisible) Polar motion, WGS-72/84 sub-arcsec (invisible)
Relative scale of the contributing errors after the refraction correction (now altitude-aware) is applied. SGP4 propagation dominates at all elevations and altitudes; every other contribution is well under one-tenth of a Moon-width.

Bottom line

Definitions of Key Terms

Arcminute (') — one-sixtieth of a degree. The full Moon is about 31 arcminutes wide.
Arcsecond (") — one-sixtieth of an arcminute. About the apparent width of a U.S. quarter at 5 km. Stars are computed to better than this.
Azimuth — the compass direction to an object, measured clockwise from north. 0° is north, 90° is east, 180° is south, 270° is west.
Elevation (altitude) — the angle of an object above the horizon. 0° is on the horizon, 90° is straight overhead (zenith).
Slant range — the straight-line distance from the observer to the satellite. Always greater than or equal to the satellite's altitude. The same position error becomes a smaller angle the farther the slant range.
Earth-Centered Inertial frame (ECI) — a coordinate system with its origin at Earth's center and axes that do not rotate with the Earth. Stars appear nearly fixed in this frame.
Earth-Centered Fixed frame (ECF, also ECEF) — a coordinate system with its origin at Earth's center and axes that do rotate with the Earth. A point on the ground has fixed coordinates in this frame.
True Equator Mean Equinox frame (TEME) — the specific Earth-Centered Inertial flavor that the SGP4 model outputs. Slightly nonstandard; chosen for SGP4's internal consistency rather than to match modern star catalogs.
Pseudo Earth Fixed frame (PEF) — the Earth-rotating partner of TEME. Rotating a TEME position by Greenwich Mean Sidereal Time gives a PEF position cleanly.
Greenwich Mean Sidereal Time (GMST) — the angle Earth has rotated relative to the stars, measured from the Greenwich meridian. Used to convert between non-rotating and Earth-rotating reference frames.
Simplified General Perturbations model #4 (SGP4) — the standard physics model used worldwide to predict satellite positions from published orbital parameters. Fast and approximate. Has been the catalog standard since the 1970s.
Orbital parameters — also called mean orbital elements. The small set of numbers describing a satellite's orbit at a given instant in time (its epoch). Published by the U.S. Space Force via the Space-Track service and updated periodically. Distributed in legacy Two-Line Element (TLE) file format and the modern CCSDS Orbit Mean Elements Message (OMM) format — the data content is identical. These elements are the input to SGP4; the propagated positions over time are an ephemeris.
Atmospheric drag — the slowing force from the residual gas at LEO altitudes. The largest unpredictable error in SGP4 prediction for low orbits; depends strongly on solar activity.
Atmospheric refraction — the bending of light as it travels through Earth's atmosphere. Makes objects appear higher in the sky than they geometrically are. Zero at the zenith, about 29 arcminutes at the geometric horizon at sea level. Smaller at altitude (in proportion to the air pressure above the observer). The simulator applies this correction to satellites using the Sæmundsson formula scaled by the ISA pressure ratio.
Sæmundsson formula — a simple, widely-used approximation for atmospheric refraction lift as a function of true elevation. Accurate to a fraction of an arcminute under standard conditions and computationally trivial. Used by the simulator to compute the apparent elevation of each satellite each frame.
International Standard Atmosphere (ISA) — an idealized model of how atmospheric pressure and temperature change with altitude, defined by ICAO. The simulator uses the ISA pressure profile (linear lapse to 11 km, isothermal above) to scale refraction at the observer's actual altitude.
Polar motion — the small wandering of Earth's rotational pole over months and years, on the order of 0.3 arcseconds. Currently neglected by the simulator; well below any visible threshold.
World Geodetic System 1972 / 1984 (WGS-72 / WGS-84) — standardized mathematical models of Earth's shape. SGP4 was built around WGS-72; modern positioning uses WGS-84. The two differ by a few meters — below pixel scale.
Equation of equinoxes — a small periodic correction (up to about 1.1 arcseconds) between the "true" and "mean" position of the equinox. Distinguishes TEME from PEF rigorously; the simulator omits it.
Low Earth Orbit (LEO) — satellites orbiting at altitudes roughly 200–2,000 km. Includes the International Space Station (ISS) and the Starlink fleet. These are the satellites most affected by drag-driven prediction error.
International Space Station (ISS) — crewed orbital platform at ~400 km altitude. The brightest non-Sun, non-Moon object in the night sky; widely used as a reference target.
Global Positioning System (GPS) — a constellation of navigation satellites at ~20,000 km altitude. Not directly visible to the eye, but useful as a comparison for how distance reduces angular error.