Penrose Tiling

Back in 1975 (punch-cards days), I wrote a program in Algol 60 draw the Penrose Tiling, and every 10 or fifteen years since then I have re-written it in whatever language I was current with. Penrose’s recent Nobel prize prompted me to have another go, so this time it is Grasshopper’s turn!

Grasshopper does not support recursion, so I had to generate the pattern’s recursive layers by repetition of components. For artistic purposes, this is fine, and gives better control of exactly how the pattern is to unfold.

Back in 1975, I broke the pattern down into Pentagons, Lozenges, Stars and Wedges, so each of these gets a cluster, and each is then built with a combination of the others at the next level down. Maybe there are better ways to do it, but that is how it was. There are eleven different connections from one level to the next. String theory may be involved? (497.7 KB)

The version of the pattern that actually got published at the time omitted bits of the pattern, which shows the rules of the recursion rather nicely. Adding some culling of components, we get: (570.0 KB)

Best wishes, and Season’s Greetings!

Bob Mackay


Gosh, Algol was the first programming language I learned way back when. It was a good introduction to the Fortran I used when I got into the real world. So I had to look at your GH and took the liberty of adding a little fanciness I picked up from this forum a few years ago.

Thanks for posting this - it is quite cool. (511.1 KB)

1 Like

Thank you for playing with this! Exactly what I had hoped people would do - use it like a tool kit!

The present model passes the point locations and angles around, but could pass color or other attributes. Or one can color all the pentagons of a particular size one color. Or you can start with the top level being a pentagon rather than a star. Or drop some components, as in the snowflake.

I also used Grasshopper to make a Penrose weave pattern, but that is a different model all together. You can get one from Shapeways (no profit to me): Penrose Weave. Hm! They used to do a multi-colored sandstone, but I don’t see it now. But at least you can see the resulting model.

Oh! Woops - there it is: Penrose Weave Pentagon

Neat stuff! I showed up for an Algol class, but the instructor went on a rant against it, so we did Fortran 4 and assembler on the PDP 11/23 (1979). So when I found myself at Entry Systems Division of IBM, working on what was thought to be a dead end project called the IBM PC, I fit right in. Much easier in grasshopper, isn’t it?

I actually worked for IBM myself, also in 1975. I taught Algol 60 at college. Interesting times. These days my day job is using Perl! State-of-the-art stuff, clearing checks!

There are two other variants of the Penrose tiling that are actually equivalent in terms of symmetry, but have very different appearance and an easier derivation: the Kites and Darts tiling and the Rhomb Tiling.

The Kites and Darts recursion rule is easier than for the Pentagon tiling above. There are only two components, Kites and Darts. The recursive decomposition for each level takes a Kite to four smaller Kites and two Darts, and it takes each Dart to two smaller Darts and three Kites. Each level has smaller tiles than the level above by a factor of TAU (the golden ratio, 1.618), whereas for the Pentagon tiling the ratio is TAU squared (2.618). These are essentially fractals, with that fractal dimension.

The Rhombs pattern has two types of Rhomb, one fat, one thin. The pattern is essentially an intermediate step between the levels of the Kites and Darts pattern, where a Kite decomposes into two fat rhombs and one thin, while a Dart decomposes into two fat rhombs.

Overlaying the Kites and Darts pattern on top of the Pentagon tiling shows the correspondence between the symmetries of the two patterns. These are all non-periodic tilings.

There are a number of interesting ways to put colourings on top of these tilings, to give further patterns with the same symmetry, although these do not constitute different actual tilings. My favourite is to take the Rhombs pattern and to connect the mid-points of the edges to form a cross. Since there is a continuous path across the Rhombs pattern going from one tile parallel edge to the next, and the cross colouring follows this path, we end up with a proper weave pattern with the ‘threads’ going in five distinct directions.

Smoothing this out:

This weave can actually be made physically, as it is a proper up-down thread pattern, although automating this would be tricky.

Here is the Grasshopper file for all three tilings and the weave. The Kites and Darts components appear to be more tricky than they might, but most of the complication is in removing the duplicate tiles that arise from the recursion before proceeding down to the next level. (1.1 MB)



Time passes… I wanted a consolidated view that showed the three basic Penrose tilings, and how they interrelate, and that also shows the weave pattern and the spheres pattern that was used back in 1976 to derive the associated diffraction pattern, showing the illegal ten-fold symmetry.

For completeness, I attach my spaghetti Grasshopper file. If you actually want to look at it, be aware that it takes several minutes to load on my somewhat underpowered Intel NUC! (1.2 MB)

Best wishes for 2021,



It has been a few weeks, but here is the resulting 3D print.

I never did manage to get the meshes to combine properly, but Shapeways seems to be able to sort it out for itself. Thanks to Riccardo, never-the-less. (1.1 MB)



Nice work Bob

1 Like