Generative AssetsNº 189

Guide · Site 189 · Wave 8 — Form

How Truchet was made

The concept, the palette, the type, the construction, and the three passes that tightened it — for the multiscale Truchet field at /truchet.

01

Concept

A single quarter-arc tile, rotated through its four positions at three nested scales, weaves an endless corridor system — Sébastien Truchet's 1704 idea carried through Cyril Stanley Smith's arcs and Christopher Carlson's multiscale construction. The page has one job: let you watch whole path systems reconnect as slow waves quarter-turn the tiles, and catch the moment a corridor closes on itself and gets traced in teal. It is pitched at people who like their mathematics wearing 1970s supergraphics.

02

Palette

Terminal-panel cream, burnt orange, chocolate and teal — the airport-corridor and ceramic-glaze colours of 1970s environmental graphics, which is exactly where giant quarter-circle motifs lived. Two darker ink variants exist for small text only; the pure accents are reserved for lines, marks and display sizes.

Terminal cream#E8DCC4The ground — warm panel enamel, not paper white.
Burnt orange#C65A2EArc line and mark; the corridor colour of the decade.
Chocolate#4A3428The other arc, and all body text — 9.6:1 on cream.
Teal#3E7E74Loop-trace only. One job, so the moment reads.
Orange ink#9E4520Small-text twin of the orange — 5.3:1 on cream.
Teal ink#2F635BSmall-text twin of the teal — 5.7:1 on cream.
03

Type

Righteous

Display. Drawn from 1970s geometric lettering — single weight, round terminals that rhyme with the quarter-arcs. It does the wordmark, headings and the One tile / Four turns / Infinite corridors shout.

Courier Prime

Body and labels. A typewriter face for the spec-sheet register — Truchet was a printing man, and the page reads like a memoir with plates. Bold weight carries labels; italic does asides.

04

Technique

Everything is one 2D canvas plus static inline SVG diagrams. No libraries, no raster assets.

Multiscale construction. A quadtree over the hero — value-noise decides which cells subdivide once or twice, then a balancing sweep caps neighbours at 2:1 scale difference. Each leaf tile carries two central quarter-arcs (radius s/2, band 0.3s, centred on opposite corners by orientation), four corner rings at half band width, and its edge ports at ¼, ½ and ¾. Ports are hashed into a map keyed by position and band width to a tenth of a pixel; rings whose interior ports find no partner are culled in a cascade, unpartnered band ends become round sockets, and the count that survives is printed on the page — n joints verified, 0 mismatches. Because a child band is exactly half its parent's width and lands on a parent ring port, arcs meet flush across every scale boundary.

The wave. A front sweeps the field at 27°, tiles in its wake quarter-turning with a slight overshoot ease (about 58% of them). Finished flips mark the connectivity graph dirty; a throttled rebuild re-runs union–find over the arc-port graph, recolours corridor components (a hashed 24% take the orange), and re-batches all static arcs into Path2D objects per width so the steady state draws in a handful of stroke calls.

The loop tracer. Closed corridors fall out of the same port graph — follow each arc's partner until you return to the start. The tracer prefers long loops, runs the teal line around at three-fifths band width with an eased head, holds, and fades; if a wave flips any tile under a loop mid-trace, the trace fades early — honestly, since that corridor no longer exists. Reduced motion renders one settled frame with the longest loop already held; the rAF loop pauses when the tab hides, DPR caps at 2, and resize rebuilds the whole field.

05

Iteration log

Pass 1 — Craft

  • Small orange and teal text measured 3.5:1 and 3.9:1 on cream — under the 4.5 floor. Minted ink twins (#9E4520, #2F635B) for the eyebrow, wordmark number and joint counter; pure accents now do lines, marks and display sizes only.
  • The hero hint sat at 85% opacity — effective contrast ~4.2:1. Removed the fade; italic alone carries the aside.
  • At 375px the wordmark chip touched the Index chip with zero gap. Added a header gap and an abbreviated GA wordmark under 430px.
  • Stat numerals dropped to 20px on mobile, under the large-text threshold for accent colours — raised to 24px.

Pass 2 — Depth

  • Drove the wave re-roll and watched corridors recolour — but the loop tracer kept picking four-tile rings, the least interesting loop there is. It now pools the six longest loops (preferring eight tiles and up) and picks among those; the settled reduced-motion frame takes the longest outright.
  • Sections 04 and 05 were text-only against three illustrated sections. Added two small truthful diagrams: the 27° front with the same tile turned across it, and the four-tile closed loop traced in teal.
  • Flipped tiles were excluded from the batched paths forever, so per-frame stroke calls grew with every wave. Overlay tiles now fold back into the batches at each graph rebuild.

Pass 3 — Hardening

  • Chanel rule: two invisible opacity-0 arcs left in the section-03 diagram from an earlier draft — deleted, and re-checked every figure's arc centres against the orientation rules.
  • Re-verified headlessly: zero console errors, one h1 per page, 375px with no horizontal scroll, two frames 1.3s apart differ (alive), reduced-motion frames identical (settled), joints verified with 0 mismatches, driven wave completed, teal pixels present during a trace.
  • Final copy read: tightened section 04, confirmed every number on the page (27°, 58%, 24%, three-fifths) matches the code that draws it.