Moon Covering Venus
Venkatachalam Perumal
A physically-accurate simulation of the 14 September 2026 lunar occultation of Venus - and why Venus shows phases at all - with every position solved from VSOP87D at run time and nothing drawn by hand

What it does
Nothing here is drawn by hand, and there are no image assets in the repository at all — no textures, no planet maps, no ephemeris files. Every frame is computed:
Positions come from truncated VSOP87D series for Earth and Venus and a truncated ELP-2000/82 for the Moon, evaluated at run time. Light-time correction, annual aberration, nutation, precession, and the topocentric transformation for an observer standing at a specific latitude on a rotating Earth are all applied in the order Meeus specifies.
The phase is never set. Each body's light direction is derived from its own position — with the Sun at the origin, normalize(sun - body) is just -normalize(pos) — so the lit hemisphere cannot point anywhere except at the Sun. The crescent is an output of the ray trace, not an input to it.
The occultation happens for the right reason. Venus disappears because the Moon's sphere is nearer to the observer than Venus' sphere and gets in the way. Depth ordering hides it. There is no "now hide Venus" instruction anywhere.
Surfaces are physical. The Moon uses Lommel–Seeliger scattering rather than Lambert, because lunar regolith backscatters — it looks like a flat coin, not a shaded ball, which is exactly what the real Moon conspicuously does. Its 14 named maria sit at their true selenographic coordinates with real albedos (0.074 against 0.150 for the highlands), it is correctly tidally locked, and craters cast real shadows near the terminator. Venus is deliberately almost featureless, because in visible light it is.
The atmosphere is modelled, not tinted. Bodies are attenuated by extinction with the full airlight added in front of them. That single term is why the Moon's dark limb is simply absent in daylight and reappears once the sky darkens.