# Accuracy & Limitations
## Current accuracy
| Propagated TEME state (default) | Matches `sgp4` WGS84+IAU path; ~tens of metres vs Vallado/AFSPC reference at epoch |
| Propagated TEME state (`--afspc` / `PropagationModel::AfspcCompatibility`) | Sub-metre vs Vallado verification vectors at epoch |
| Solar position | ~1 arcminute |
| Lunar position | ~10 arcminutes (limited perturbation terms) |
| RA/Dec ↔ Alt/Az | sub-arcsecond (floating-point limited) |
| ECEF ↔ ECI round-trip | ~1 mm at Earth scale |
| ECEF ↔ WGS84 geodetic round-trip | ~1 mm at Earth scale |
| Satellite look angles (azimuth / elevation) | on the order of a few degrees vs. external tools | TLE age, omitted precession/nutation, simplified TEME→ECEF bridge |
| Satellite pass prediction (`predict_passes`) | AOS/LOS times typically within ~1 minute of external tools; max elevation within a few degrees | Coarse scan step, bisection/ternary refinement, same frame/TLE limitations as look angles; GEO-like orbits use a simplified visibility model |
| Satellite `sgp4_teaching` (two-body scaffold) | Matches Kepler period from TLE mean motion; **does not** match SGP4 state (documented large ‖Δ**r**‖ vs `sgp4`) | Not a propagator; deep-space / low-n element sets rejected by `teaching_supported` |
| Planet positions (truncated VSOP87D) | a few arcminutes (vs. JPL Horizons at J2000.0) |
See [vsop87.md](vsop87.md) for the per-planet VSOP87 accuracy breakdown.
## Limitations
- **Simplified Sun/Moon models** — not full VSOP87 / ELP2000.
- **No precession/nutation** — ECEF/ECI assumes the J2000.0 epoch with no
precession/nutation corrections (IAU-76/FK5 and IAU-2000/2006 documented for the future).
- **No light-time correction** for planetary positions.
- **No atmospheric refraction** in Alt/Az conversions.
- **Satellite propagation model** — default propagation uses the `sgp4` crate's WGS84 + IAU
path (aligned with WGS84 geodetic output). Optional AFSPC compatibility selects WGS72 +
legacy sidereal/epoch for Vallado / NORAD reference reproduction (`--afspc` on `track`,
`PropagationModel::AfspcCompatibility` in the library).
- **Truncated VSOP87D** — each planet uses only the leading terms, giving a few arcminutes
rather than the sub-arcsecond accuracy of the full series.
- **Satellite `look_angles`** — for the satellite pipeline, `ObserverLocation::elevation` is
interpreted as **metres above the WGS84 ellipsoid** (not orthometric height above the geoid),
while other commands still treat it as informational where noted.
## Future enhancements
- Full/truncated VSOP87 coefficients for all planets and Earth.
- IAU-2000/2006 precession–nutation for high-precision ECEF/ECI.
- Atmospheric refraction in Alt/Az.
- Light-time and aberration corrections for planetary positions.
- More advanced orbital propagation; asteroid/comet positions; stellar positions and proper
motion; additional frames (GCRS, ITRS).
See the [roadmap](roadmap.md) for how these fit into the larger project direction.