Why the Simulated Sky Doesn't Quite Match the Real Sky

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's refraction correction uses standard-atmosphere constants at sea level (1010 millibars, 10 °C) regardless of the observer's actual altitude or weather. Cold or high-pressure conditions amplify true refraction slightly; hot or low-pressure conditions reduce it. At altitude (e.g. an airliner), atmospheric pressure is much lower, so the simulator over-applies the correction near the horizon — see Factor 2.
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

Small — up to ~20 arcmin only at high altitude near the horizon

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. As a result, 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 ~½° of true elevation below.

The residual error comes from a deliberate modeling simplification: the formula uses sea-level standard atmosphere constants (1010 mbar, 10 °C) regardless of the observer's actual altitude or weather. At a sea-level ground site, this is essentially exact. At a typical airliner altitude (~35,000 ft), atmospheric pressure is only about 24% of sea level, so true refraction is roughly a quarter of what the formula predicts. The simulator therefore over-lifts satellites at high altitude, with the error growing toward the horizon:

Observer altitudeTrue elevationApprox. residual error
Sea levelanynegligible (formula is calibrated here)
~35,000 ftabove 20°under 2 arcmin
~35,000 ft5°–10°~5–8 arcmin
~35,000 ftnear 0°up to ~20 arcmin (over-lifted)

This is the Option A trade-off: a single, dependency-free formula that is accurate at the ground and only slightly off at altitude near the horizon — still much better than ignoring refraction altogether, where the error there would have been ~25 arcmin in the opposite direction.

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. The simulator now applies this curve to satellite positions, matching what the celestial layer already does for stars and planets.

Magnitude of refraction the simulator applies, by true elevation:

True elevationRefraction lift appliedEffect 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 ~½° 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 (high alt + near horizon) up to ~20' Refraction residual (typical viewing) <1' (sea level) 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 is applied. SGP4 propagation now dominates at all elevations; the only situation where refraction still shows up is at high observer altitude near the horizon, where the formula's sea-level constants over-correct.

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 (sea level). The simulator applies this correction to satellites using the Sæmundsson formula.
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.
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.