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) = ∑ Kjvj.
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 = ∑ Kjvj
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 pentagridits dual tiling
Drag to pan, scroll to zoom — the two views are locked
together. Reload for a different γ.
Pentagrid regions — the K-tuples, and hovering them
Dual vertices — f (x) region by region
Building rhombs — four regions to a parallelogram
The Penrose tiling — the complete dual
Three things worth knowing before you touch the sliders
Regularity is decided, not guessed. The construction needs no three
lines concurrent. That turns out to have a closed form: a triple is singular
exactly when one particular γ is an integer and a particular pair
of them sums to an integer. So if no γj is an integer,
the pentagrid is regular everywhere — ten integer comparisons,
no tolerance. The keep γ regular
checkbox holds you off the singular set; the default γ = 0 is
on it, with all five lines through the origin.
Most regions are far too small to click. Not as an edge case —
an ordinary γ already has regions of a few hundredths of a pixel, because
the near-concurrent triples equidistribute. The meter counts them and the
loupe opens automatically when you approach one, magnifying as far as
it takes. Move into the panel to hover inside it.
The tiling is 2½ times the grid that makes it. The dual map has
gain 5/2, so the two pictures do not line up by default. It is not an
accident: the construction projects ℤ5 onto a plane, each basis
vector keeps 2/5 of its length there, and 5/2 is the reciprocal. The
register 5:2 toggle puts every rhomb
back on the crossing that generated it.
Explorations
Each is a project of its own rather than another step in
the walkthrough, with its own page.