Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_0187rSCa4AKJPGw6uiuPSGyX
RPO replay: Cosmos 2612 → ICEYE-X36 (Sep 30 – Oct 21, 2026)
A 45-second, physics-grounded reconstruction of the Russian military satellite Cosmos 2612 (NORAD 68762) maneuvering to within a few hundred meters of the U.S.-registered ICEYE-X36 SAR satellite (NORAD 59103), rendered in CesiumJS over Esri World Imagery and exported as 16:9 and 9:16 video.
python3 tools/rpo-replay/model.py # orbit reconstruction -> data.json
python3 tools/rpo-replay/build_models.py # procedural GLBs
node tools/rpo-replay/render.mjs --format 16x9 --stills 2,24,32 # spot checks
node tools/rpo-replay/render.mjs --format 16x9 # all frames (resumable)
node tools/rpo-replay/render.mjs --format 16x9 --encode # -> MP4
Formats: 16x9 (1920×1080), 9x16 (1080×1920), and preview / preview-v
at half size. Output goes to output/rpo-replay/<format>/. Requires
pip install sgp4 numpy scipy pillow, Playwright's Chromium (SwiftShader, no
GPU), and ffmpeg.
What is measured and what is modeled
ICEYE-X36 is propagated with SGP4 from its public CelesTrak element set
(tles.txt). X36 did not maneuver in this window.
Cosmos 2612 has no public element-set history without an account, so its path is a relative-orbit reconstruction about X36:
- Quasi-nonsingular relative orbital elements (δa, δλ, δe, δi), advanced with Keplerian along-track drift and the differential J2 node drift. The 47 km "high park" is what swings Cosmos 2612's orbit plane into X36's. The model needs a 0.27° initial plane offset; published analysis gives ~0.22°.
- Burns are impulses through Gauss's variational equations. SMA changes are two half-orbit-apart tangential impulses. Each burn is timed inside the element-set window that KeepTrack, LeoLabs, and Marco Langbroek published.
- Solved checkpoints:
- Oct 12 overhead pass, then 480 km behind.
- ~400 km on Oct 15.
- 3 km behind after the Oct 16 braking burn.
- 2.0 / 0.99 / 0.72 / 0.60 km on Oct 17.
- 5.1 km behind and 140 m higher at 07:38 Oct 18.
- 293 km on Oct 19.
- Matched SMA, 477–479 km behind, from Oct 21. This matches today's Cosmos 2612 element set.
- The model gives ~60 m/s total Δv (KeepTrack estimates ~67 m/s). The closest approach comes out at ~325 m, 01:28 UTC Oct 18, in Earth's shadow. Published estimates range 150–650 m. Langbroek gives ~01:35 UTC.
The 26 m and 25 m figures some outlets quoted come from element sets taken after the departure burn, and KeepTrack rejects them. This replay does not use them.
Rendering conventions
- Camera and Earth ride with X36 on a slower "backdrop" clock during time-lapse to avoid strobing. Relative motion runs at the on-screen rate. Around closest approach the two clocks are identical, so lighting, shadow, and the following orbital sunrise are true to time.
- Up close, the spacecraft are drawn enlarged (the factor is on screen, capped at 150×). At closest approach they are at true scale.
- In Earth's shadow the models get a dim blue fill so their shapes stay readable.
- ICEYE-X36 is modeled to ICEYE's published Gen-3 dimensions: 3.2 × 0.4 m antenna, ~3.25 m span. No public imagery of Cosmos 2612's design exists, so its model is illustrative.
Sources
- CelesTrak GP element sets for 59103 and 68762.
- KeepTrack, "Cosmos 2612 / ICEYE-X36 rendezvous" deep dive: burn windows, separations, SMA offsets.
- LeoLabs event report via Via Satellite, Oct 19, 2026.
- Marco Langbroek (SatTrackCam Leiden), quoted by Space.com, Aerospace Global News, and TWZ.
- Vantor image of the pair, Oct 17 (~1.02 km), published by Axios Oct 22.
- Imagery: Esri World Imagery; NASA GIBS VIIRS Black Marble (night side).
- Sky: Yale Bright Star Catalogue and ESO/S. Brunier Milky Way (see
src/data/local_data/sky/README.md).