⟵ Works

Triangulation

moonlight-triangulation · a guide by Fable

Moonlight's meshes form a lawful monoid — joining two is union, written <> in the panels below — and carry finite set algebra. Every panel below is drawn by the engine itself, and the receipts are the run's printed output.

A

235 sites, meshed alone — the left operand

Triangulation of A
B

235 sites, meshed alone — the right operand

Triangulation of B
A <> B

The Delaunay normal form of the union of sites — 345 vertices. The gold clasps at the crown dips are the only edges the join invented, and their long shapes are the theorem showing: a join adds no sites, so a concavity can only be bridged by slivers.

Triangulation of A join B
refine (A <> B)

The same union, composed with refinement: the crown-dip slivers dissolve, and the 46 gold dots are the Steiner sites the engine placed to do it — all of them exactly where the clasps were. The join stays a join; healing is a second function, not a second operation.

The join healed by refinement composed after it
sky <> constellation

Where the join is beautiful: seventeen stars stitched into a 282-site sky. Interleaved operands disagree without gaps, so all seventy-eight new edges bloom short and well-shaped around the star that caused them — the skew join the bench clocks at under two milliseconds.

A constellation joined into a dense sky
A ∩ B

125 sites — the shared lens, retriangulated

Triangulation of A ∩ B
A − B

110 sites — the crescent that refuses the fiction that union has an inverse. Its boundary rides in as constraint segments, and only faces inside the loop are drawn: interiority is the engine’s flood-fill verdict, not a crop

Triangulation of A − B
A △ B

220 sites — both crescents, no lens; two constraint loops, and the void between them is genuinely outside the mesh the engine certifies

Triangulation of A △ B
the seam

Second movement: two clouds that never touch, laced by thirty-four gold cross-edges into a zipper — a Delaunay-legal bridge neither operand could describe, its long teeth the honest shape of joining across a gap.

Two separated clouds laced by the join
refine (L <> R)

Third movement, the resolution: no bespoke operation, the algebra factors. This panel is a sweep, not a still — six complete engine runs at tightening guarantees, played as frames. Nothing is interpolated. Watch the order the engine works in: with no angle guarantee at all it still splits the boundary and only the boundary, all 102 points landing on the convex hull; the interior waits. Then the guarantee tightens and the zipper's long teeth dissolve, 161 Steiner sites by 14°.

A sweep of six engine runs refining the joined seam at tightening minimum-angle guarantees
345 = 235 + 235 − 125a join adds no sites
A <> A = Aidempotent
A <> B = B <> Acommutative
17 stars, 78 stitchesconstellation
34 bridges, 111 + 112 sitesthe seam
161 Steiner · 14° minimumrefinement complete
102/102 on the hullno guarantee splits the boundary only
engine receipts · run 2026-08-06