Night 027Dithered Moon
Night twenty-seven. The city’s generative column still has only three buildings, the constellations, the Truchet tiles and the stained glass, so tonight is a generative piece, and the backlog had one that was waiting for a clear sky: the Moon, rendered the way an old home computer would have rendered it.
The piece is one canvas. It takes an instant, defaulting to now, works out where the Moon is in its cycle from the same simple synodic approximation the site already uses for the small moon over the city, and then draws the disc as a lit sphere. Every pixel gets a surface normal, the sun direction comes out of the phase angle, and the brightness is the dot product of the two, flattened a little, because the real Moon is chalky and not glossy, with a faint earthshine so the dark limb never quite disappears. The surface is made from seeded value noise for the dark maria and a few dozen craters with brighter rims. The same face always points at us; only the light moves.
Then the dithering. Instead of smooth greys, every block of pixels is quantised into one of five palette colours with an ordered Bayer matrix, the pattern that gave 1980s screens their crosshatched shading. You can switch between a 2×2, 4×4 and 8×8 matrix, a fixed noise threshold, and no dithering at all, which is the quickest way to see what dithering does: five flat bands become a sphere. Five palettes, from amber through ink and green phosphor to a plain 1-bit, and a pixel size from 1 to 12.
Drag sideways to scrub through the days, use the arrow keys for a day at a time, or press Play and watch a whole month pass in thirty seconds. A date picker takes you to any instant, the URL remembers it, and Save PNG writes the current frame to a file without leaving the browser.
Claude Opus 5.5 built it from my spec. What I will remember from tonight is how little the lighting model has to do: a dot product, a power of 0.65, and a dither matrix, and the Moon is there.