Pentagrid

Explorations of de Bruijn's method for Penrose tilings

Take five families of equally spaced parallel lines, turned 72° from one another, each shifted by an offset γj. The lines cut the plane into regions. Give every region the five integers

Kj(x) = ⌈ x · vj + γj ⌉

and send each region to the point f (x) = ∑ Kj vj. What comes out is a Penrose rhomb tiling — every one of them, as γ varies. That is de Bruijn's 1981 result, and this site is an attempt to make it something you can put your hands on rather than read.

From grid to tiling

Every region between the lines has a fixed tuple of five integers Kj, one per family, counting how many lines of that family you have crossed. Send each region to f = ∑ Kj vj and adjacent regions land one vj apart. The four regions meeting at a crossing therefore land on the four corners of a rhomb — so each crossing on the left is one tile on the right, fat if the two families are adjacent, thin if they are two apart.

a random pentagrid
its dual tiling

Drag to pan, scroll to zoom — the two views are locked together. Reload for a different γ.

The Method →
The construction in six steps, from the bare grid to the finished tiling. Five γ sliders, pan and zoom, and hover anywhere to read off a region's K-tuple and watch it map to its dual vertex.

What is on that page

  1. The pentagrid — five families of lines
  2. Intersections — the pairwise crossings
  3. Pentagrid regions — the K-tuples, and hovering them
  4. Dual vertices — f (x) region by region
  5. Building rhombs — four regions to a parallelogram
  6. The Penrose tiling — the complete dual

Three things worth knowing before you touch the sliders

Explorations

Each is a project of its own rather than another step in the walkthrough, with its own page.

The Wieringa roof →
Give every vertex a height of half its de Bruijn index and the flat tiling stands up. Both rhombs become the same golden rhombus — edge √5/2, diagonals φ:1 — every edge rises or falls by exactly a half, and the whole roof sits on four levels. Fold it flat and back, and grow it from the pentagrid in three dimensions.
Split →
The grid on one canvas and its dual on the other, locked together: lines, regions and crossings on the left; vertices, edges and tiles on the right. One γ, driven by the reticulum and the presets, and each side with its own switches.
Moiré →
A tiling and its own deflation, side by side or stacked into one. A generalized Penrose tiling is labeled by Σγ mod 1, and deflation doubles it: Penrose stays Penrose, 1/2 lands in Penrose in a single step, 1/5 runs a four-cycle. So off the Penrose class a tiling still deflates perfectly well — what it stops being is self-similar, and the moiré is how far it moved.
Growing the tiling →
Start with the pentagrid and a dot on every crossing, then grow the dots into tiles. They cannot all grow in place, so they slide apart — and the grid lines come with them, each staying fastened to the edge midpoints it passes between, until the five straight families have been dragged into the wandering ribbons of the finished tiling.
Sun and Star →
Give all five families the same offset and slide it: the family passes through exactly two Suns and two Stars, paired by the mirror Σγ ↔ −Σγ, with a singular decagon between them. All four caps show five fat rhombs at the origin, so the vertex tells you nothing — what separates them is whether its Wieringa index is an extreme. Roll the wheel over one grid line at a time.
Growing a heptagrid →
The same page with n = 7, to see what the construction owes to five. Three rhombs instead of two — 51.43°, 102.86° and 154.29°, in proportion to |sin 2πc/n| — a gain of 7/2 rather than 5/2, and seven-fold symmetry at Σγ = 1. No inflation rule, no Wieringa roof, and no exact regularity test: those three really were about five.
Wiggle room →
Five offsets, minus one for the sum, leaves four — but two of those do nothing at all, because shifting γ along the directions slides the pentagrid and leaves the tiling exactly where it was. So the pattern turns on two numbers, and the γ that preserve a given patch form a convex region you can draw, drag around inside, and measure.
Golden zonohedra →
A subproject of its own, and the third dimension. The roof stands a flat tiling up; this goes past it. Coxeter's five golden isozonohedra are one construction — project a k-cube out of six-dimensional space and you get the golden rhomb, the two rhombohedra, Bilinski's dodecahedron, Fedorov's icosahedron, Kepler's triacontahedron, with every rung the face of the one above. The plane already holds π(C²) to π(C⁵) as its tiles and its singularities; only k = 6 needs a zone the plane has nowhere to put. Exploding diagrams and cutaways, in three.js.
Discrete directions →
A subproject of its own, and a second geometry. An integer Penrose construction — exact lattice coordinates at every generation — is usually taken for a rational approximant converging back to the Euclidean 36° and 72°. It is not: its substitution has its own dominant eigenvector, and the limiting slopes are 34.6438° and 71.1377°, algebraic of degree 2 over ℚ. The wheel, the φ² ladder and its missing halves are settled there; dualizing those five directions is not.