Spiral path on a Penrose tiling

612 Views Asked by At

I would like to color a Penrose tiling by following a "spiral path", painting each tile according to a given color sequence.

In this picture, I illustrate what I am looking for:

enter image description here

The dashed line represents the "spiral path", which begins in correspondence of the big black dot.

My first problem is theoretical:

How can we rigorously describe the rule I have depicted above? Are there other ways to do it?

The second problem is technical. Since my starting sequence of colors is extremely long, I would need an automatic way to produce such tessellation:

Do you know any software I can use to generate a colored Penrose tessellation, as above, given a certain color sequence?

I apologize in case of imprecision, I am not an expert in this field!

Thank you very much for any help and suggestions.

2

There are 2 best solutions below

0
On

There are other ways to do it.

In fact, as the tiling is not translatoin invariant, any different start point will produce a different spirlling sequence

0
On

How can we rigorously describe the rule I have depicted above?

I can't give a closed-form solution, whatever that would mean; but yes we can describe a rigorous algorithm that produces your spiral.

By "consume $C$," I mean "draw a new line segment from the last place we consumed, to the center of tile $C$."

  1. Pick a single central tile $C$ (your sky-blue) to consume first. Pick a vertex $v$ of $C$ (its northwest corner); pick a side $s$ (its west side) adjoining vertex $v$.

  2. Consume $C$.

  3. Now, the sides of $C$ adjoining $v$ are $s$ and another side — let's call it $s_2$. Find the unique tile $C_2$ which shares $s_2$ with $C$. If we have not yet consumed $C_2$, then set $C := C_2$, $s := s_2$, and go to step 2.

  4. Otherwise, we have previously consumed $C_2$ (e.g. when $C$ is your yellow tile and $C_2$ is your blue starting tile). In that case, the vertices of $s_2$ are $v$ and another vertex — let's call it $v_2$. Set $v := v_2$, $s := s_2$, and go to step 3.

This basically does a "follow the right-hand wall" algorithm, consuming tiles as we go. Each time our right hand touches a vertex, we consume all the tiles adjoining that vertex in a big fan; then we move on to the next vertex clockwise.