Guide · site 181 · wave 8, Form
A single glowing filament threads a glass cube through Hilbert-curve orders 1 → 4 — 7 segments, then 63, 511, 4,095 — until the one-dimensional line visibly becomes a volume. The page has one job: make you watch a wire learn to be a solid.
Hilbert is a fictional institute-plate for the 1891 space-filling curve, aimed at people who like their mathematics architectural: engineers, cartographers, database designers. Everything on the page is subordinate to one continuous line inside a scaffolded cube; the readout keeps the claim honest with the real arithmetic — 8ⁿ−1 segments, lattice fill of 16³ — while the thread re-threads itself between orders.
Cold void, one electric filament, blueprint scaffolding. The cyan is reserved strictly for lines and marks — body copy sits in frost ink, secondary text in two derived inks, so the filament stays the brightest thing on the page.
Unbounded carries the display voice — a wide, geometric face whose letterforms already look like they were bent from one continuous strip, which is the whole subject. It is used sparingly: the wordmark with its 8ⁿ−1 superscript, the big order numeral, headings. Chivo Mono does everything else. A curve defined by recursion deserves a readout set in a face with fixed cells; tabular numerals keep the rolling segment counter from shivering.
Curve. The 3D Hilbert curve is generated by the classic recursive octant permutation. The raw recursion grows in extent with order (corners at ±(2−2¹⁻ⁿ)), so each order is normalised to the same half-extent before use — that is what lets four different orders live in one cube.
Signature — the re-thread. All four orders are resampled by arc length into a shared 4,096-sample parameterisation. Hilbert curves preserve locality across orders (the first eighth of order n+1 lives in the first octant of order n), so interpolating matched samples re-threads the line locally instead of scrambling it — measured maximum drift between matched samples falls from 1.04 to 0.34 cube-units as orders rise. The morph is staggered along the thread (eᵢ = smoothstep(t·(1+s) − s·uᵢ)), so the transformation travels head-first down the filament like a zip, with a faint glow riding the front.
Rendering. One Line2 fat line (4,095 instanced segments). Positions and vertex colours are written in place into the instanced interleaved buffers each frame — no reallocation — and the intro grow simply raises instanceCount. The composer renders into a half-float target with 4× MSAA, then a restrained UnrealBloomPass (strength .38, radius .12, threshold .78) with the base filament held just above threshold: a crisp emissive core with a travelling pulse that blooms, not organic haze. Scaffolding is plain LineSegments: cube edges plus one lattice grid per order on the three far walls, crossfaded by the live effective order.
Discipline. DPR capped at 2; the rAF loop pauses on document.hidden with a clamped delta; resize refits the camera by aspect; prefers-reduced-motion renders one settled frame — order 3, mid-thread to 4 — via both the CSS media query and a matchMedia gate; WebGL context loss (or a dead CDN) swaps in a static axonometric SVG of the order-2 thread.
Drove the full order cycle headless and read real frames. The 7-second rest frame sat exactly where designed (mid re-thread 3→4, effective order ≈3.4) but the filament read thin and the bloom threshold clipped the pulse on SwiftShader — nudged base intensity and pulse amplitude. Tightened readout rhythm: stat labels to a strict 0.53rem/0.18em cap-mono system, big numeral given tabular figures so 1→4 doesn't reflow the row.
Drove the signature interaction (order buttons) and asserted the position checksum moved and the readout landed honest (7 segments at order 1). Added the second-read details: a light pulse that endlessly traverses the whole thread — proof it is one line — and IN/OUT endpoint marks at the two corners every order shares. Gave the morph its zipper glow and the line a width that thins from 3.1px to 1.54px as the curve densifies, so order 4 stays crisp instead of clotting.
375px: switched the stage to a scrolling layout under 900px so the readout and essay never sit on the cube; verified scrollWidth = 375 and every card inside the viewport box. Reduced-motion emulation renders a single settled frame (two screenshots hash-identical) with buttons still functional as instant jumps. Removed one ornament (a planned per-cell tick ruler on the cube edges) — the lattice grids already say it. Fixed the last readout bug: a manual re-thread used to finish while the panel still said "re-threading" — the morph branch now reports the settled order the moment t≥1, verified by driving 3→1 and 1→4 headless and asserting order, 8ⁿ−1 count and fill after settle. Confirmed zero console errors on both pages, context-loss fallback, and the honest arithmetic at every hold.