Coordinate system to uniquely refer to penrose tiling tiles?

66 Views Asked by At

Suppose I have a rhombus based penrose tiling like the following:

Tiling

Is there some coordinate system that allows me to easily uniquely refer to a specific tile, and also from the coordinates efficiently calculate the coordinates of the tiles that border it?

I also need to be able to easily tell what tile is on the "opposite side" edge of a tile with respect to a different tile that also borders it.

Basically my end goal is, if I have some instruction like "Straight, Straight, Left, Straight, Right" and follow them on the grid to calculate if I ever cross my own path and when.

1

There are 1 best solutions below

0
On

I think I found a functional system. First we give each tile a letter, A to E:

enter image description here

Now we can refer to any position by specifying which tile it is, then the tile of the parent, then the tile of the parents parent etc.

However, we can't actually store infinite coordinates, so we follow a pattern. I choose the pattern CEDBAA repeating forever but many other combinations will work. Now if I have a coordinate like A it actually means AEDBAACEDBAACEDBAA... where I only override the beginning of the basic shared pattern with the new coordinate.

Calculating what moving in a specific direction would look like

Now all we need is rules to cover how to traverse the grid. Each tile has 4 sides, North, East, South, and West, where north is represented by the left indentation. Now all we need to define for each side of every tile type where you would end up if you go that way. Some examples:

  • If you go North from tile B, you end up coming in from the north side of the tile in the A position sharing the same parent tile.
  • If you go East from tile B, you will leave the parent tile on the east side, specifically on the left half of the right half of that edge.

There are 20 such rules plus 10 more for what happens if you enter one of the large tiles from a specific edge, half edge, or quarter edge. You can find the full list of rules here

When leaving the parent tile, repeat the process for the parent's parent, and the parent's parent parent, until you reach an instruction that allows you to enter a tile, at which point you use the matching rule for what happens when entering a tile from a specific edge until you reach a physical, first level tile again.

In some rare cases entering a tile form a specific angle connects directly back outwards. For example entering the thin rhomb from the south (bottom right) immediately connects back out to the right half of the top. This rhomb is guaranteed to be filled by a thick rhomb from the tile that connects to the east edge. In this case the algorithm will transition from a inwards motion to an outwards motion again.

Some resources that where incredibly helpful working this out: https://tilings.math.uni-bielefeld.de/substitution/penrose-rhomb/ and https://en.wikipedia.org/wiki/Penrose_tiling