Every block is a prefix of the word, built in Rust before a pixel is drawn: the plane block is the word's grid, the cube block its exposed faces, the hexagon block the projected skin of the same cube word. Every printed number is a Rust number or a ratio of two Rust integers with both operands in view. The word, its letters and the products they multiply are on the words; the same design laid side by side on every axis instead of one is the tile. The construction of a word and the fill law behind the geometric decay are written up in the research note on magic words.>}>
{name}
{tower.blocks.map((block) => (
{art(block)}
block {block.k} {block.word}
{block.span}
{dim === 6 ? 'inked' : 'fills'} / {dim === 6 ? 'triangles' : 'cells'} {block.fills} / {block.cells}
{block.ratio.toFixed(6)}
{block.exposed}
))}
{name && {name}}
{census.length}
{depth} of {cap}
{census.side}
{census.cells}
{census.fill}
{census.ratio?.toFixed(6)}
{census.dimension?.toFixed(6)}
{dim !== 6 && {DROP[dim]}}
{letters.map((letter, i) => (
{i + 1} {letter.name} side {letter.number} fill {letter.fill} / {letter.cells} dimension {letter.dimension.toFixed(4)}
))}
{word.error ? null : {shrinks ? 'a letter buys a fraction under one, so the volume converges' : 'every letter fills its cell, so the volume grows without bound'}}
{word.error || dim === 6 ? null : {climbs ? 'a letter under one and dimension over dim - 1, so the surface density diverges' : shrinks ? 'dimension at or under dim - 1, so the surface density stays bounded' : 'every letter full, so the surface density stays constant'}}
{dim === 6 && the hexagon is the shadow of the cube tower: its volume is the inked share of the mesh and its surface the boundary edges of that ink over the mesh width}
{dim === 6 && q.proj === 'iso' && the isometric skin is the visible surface, so it inks every triangle it draws and the volume sits at one; take the middle slice or the facing sides to watch it fall}
volume per block, the fill fraction the census gives
the volume running total, flattening
the surface running total, climbing
The bars are exported numbers, one fill fraction per block. The two curves are the running totals of those bars and of the exposed count over the side, each drawn against its own last value so the shapes can be read side by side: the volume bends over as its steps shrink by a constant factor, the surface bends up as its steps grow. Neither total is printed anywhere on the page, because a total is a sum and the sum would have to happen here rather than in Rust.
);
}
mount(