# What's wrong with this Penrose pattern?

I programmed the Penrose tiling by projecting a portion of 5D lattice to 2D space, by the "cut and project" method described in

1. Quasicrystals: projections of 5-D lattice into 2 and 3 dimensions, H. Au-Yang and J. Perk.
2. Generalised 2D Penrose tilings, A. Pavlovitch and M. Kléman

The orthonormal basis is chosen as $$M=\sqrt{\frac{2}{5}} \begin{bmatrix} \cos 0 & \cos \frac{2\pi}{5} & \cos \frac{4\pi}{5}& \cos \frac{6\pi}{5}& \cos \frac{8\pi}{5} \\ \sin 0 & \sin \frac{2\pi}{5} & \sin \frac{4\pi}{5}& \sin \frac{6\pi}{5}& \sin \frac{8\pi}{5} \\ \cos 0 & \cos \frac{4\pi}{5} & \cos \frac{8\pi}{5}& \cos \frac{12\pi}{5}& \cos \frac{16\pi}{5} \\ \sin 0 & \sin \frac{4\pi}{5} & \sin \frac{8\pi}{5}& \sin \frac{12\pi}{5}& \sin \frac{16\pi}{5} \\ \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}}\\ \end{bmatrix}$$ Each row presents a basis vector, i.e. $$M_i\cdot M_j=0, \;\;\textrm{for } i and $$||M_i||=1, \;\;\textrm{for } 1\leq i \leq 5.$$

$$M$$ consists of the parallel operator (representing the physical space) $$A=\begin{bmatrix} M_1\\ M_2 \\ \end{bmatrix}= \begin{bmatrix} \cos 0 & \cos \frac{2\pi}{5} & \cos \frac{4\pi}{5}& \cos \frac{6\pi}{5}& \cos \frac{8\pi}{5} \\ \sin 0 & \sin \frac{2\pi}{5} & \sin \frac{4\pi}{5}& \sin \frac{6\pi}{5}& \sin \frac{8\pi}{5} \\ \end{bmatrix}$$ and the perpendicular operator $$B=\begin{bmatrix} M_3\\ M_4 \\ M_5 \\ \end{bmatrix}=\begin{bmatrix} \cos 0 & \cos \frac{4\pi}{5} & \cos \frac{8\pi}{5}& \cos \frac{12\pi}{5}& \cos \frac{16\pi}{5} \\ \sin 0 & \sin \frac{4\pi}{5} & \sin \frac{8\pi}{5}& \sin \frac{12\pi}{5}& \sin \frac{16\pi}{5} \\ \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}} & \frac{1}{\sqrt {2}}\\ \end{bmatrix}$$

The 5D lattice points are integer combinations of basis such as $$p=i \begin{bmatrix} 1\\ 0\\ 0\\ 0\\ 0\\ \end{bmatrix} + j\begin{bmatrix} 0\\ 1\\ 0\\ 0\\ 0\\ \end{bmatrix} +\dots, \;\; i,j,\dots \in \mathbb{Z}$$

A 5D cube (centered at origin) is projected into 3D as polytope $$v'= B v, \;\; v\in hypercube$$ so that I can check whether a $$p$$ is inside this polytope (20 faces). This is called "cutting" the 5D lattice points.

The resultant 2d projection $$Ap$$ is

Everything works fine, however, my result differs from the "standard" one (e.g. in wiki page) as follows

Is this a mistake or an alternative view of the same tiling?

Finally, I find this image (from Vertex Frequencies in Generalized Penrose Patterns, by E. Zobetz and A. Preisinger)

where the center of standard tiling exhibits the "S" pattern, while the center of my version has the "ST" pattern. But what does it mean exactly?

• One thing you might want to do is check how your trig functions are rendered in the presentation. $\cos(\frac{2}{5\pi})$ looks funky in this context, probably should be $\cos(\frac{2\pi}{5})$. Likewise for the other trig functions. Jan 1, 2019 at 1:02
• @oscar Lanzi, thanks! That's a typo. I have corrected that. Jan 3, 2019 at 3:32
• Could you explain to us what is "wrong" about your tiling in the first place, other than it looks different locally from the Penrose tiling we usually see? It seems to obey all the rules, i.e., using the two pieces and is aperiodic. May 20, 2023 at 20:04
• There are ten edges incident with the central vertex in my version, however, five edges connected with the center point in the 'standard' version May 21, 2023 at 2:16

The Wikipedia article states "Therefore, a finite patch cannot differentiate between the uncountably many Penrose tilings, nor even determine which position within the tiling is being shown". Thus they could be the same tiling but differently centered.

In particular, aside from the two dimensional shifting of Penrose tilings, if a higher dimensional lattice is shifted before projecting to two dimensions, then a similar situation holds.

• Thanks for the answer. I do agree with this argument, however, I guess that's not the end of the story. I wrote to the authors of the two papers above, the problem turns out be that the lattice $p$ should be carefully shifted to create the standard Penrose tiling. But I have not figured out the specific translation to the lattice. Jan 3, 2019 at 3:39
• @whitegreen Perhaps write up your findings as another answer? Jan 3, 2019 at 3:40

I wrote to Prof. J.H.H.Perk, this is a quote from his email:

You want to make a different choice (the translation on lattice $$p$$), so that no three grid lines (3) pass through the same point. This requires that at least three of the five gammas are nonzero. Generically then you get a regular Penrose tiling, but you can still get singular Penrose tilings like the one for all gammas zero. Those choices are everywhere dense, like rationals are dense within the reals, but only infinitesimal part of them.

Which means the 5D lattice points are $$p=\gamma_1 \begin{bmatrix} 1\\ 0\\ 0\\ 0\\ 0\\ \end{bmatrix} + \gamma_2 \begin{bmatrix} 0\\ 1\\ 0\\ 0\\ 0\\ \end{bmatrix} + \gamma_3 \begin{bmatrix} 0\\ 0\\ 1\\ 0\\ 0\\ \end{bmatrix} + \gamma_4 \begin{bmatrix} 0\\ 0\\ 0\\ 1\\ 0\\ \end{bmatrix} + \gamma_5 \begin{bmatrix} 0\\ 0\\ 0\\ 0\\ 1\\ \end{bmatrix}$$ However, I have not figured out the correct $$\gamma_1,\dots,\gamma_5 \in \mathbb{R}$$.

If $$\gamma_i=0$$ (the lattice is not shifted), the 3D window is as follows,

which contains ten points. This is against the case of Penrose pattern whose window should contain five points.

• May I ask you how you produced the image of this projection? I'm trying to write some code to plot the window but it seems harder than I thought. Jul 28, 2019 at 23:48
• I programmed the projection in Java from scratch. I can share the codes if you are interested. But I have not solved the problem of "The" pattern yet. Jul 30, 2019 at 8:15
• This would be awesome. I'm currently trying to implement the algorithm in python, but I have some difficulties. By the way: I noticed that in Au-Yangs and J. Perks paper the "ST pattern" appears as well on page 9. I haven't figured out why yet.... Jul 30, 2019 at 20:26
• I have uploaded the python codes to create the Ammann–Beenker tiling and the Penrose tiling: github.com/whitegreen/quasicrystal. The former is quite simple, the latter is littel complicated when windowing the 5D grid. Aug 1, 2019 at 8:44
• Thanks a lot. I'll let you know when i figure something out. Aug 2, 2019 at 19:35

I believe your constant $$\gamma$$ to be essentially the same as the constant $$y$$ in de Bruijn 1981 cited below. I don't use your exact projection matrices though like you I do use matrices involving sines and cosines of multiples of $$2\pi/5$$. I ran into similar issues, and for me, setting $$y_i=\epsilon$$ for $$\epsilon>0$$ as small as I could represent it got rid of the forbidden intersections like the ST intersection. Somewhere, distantly, in my tiling is an ST intersection but I regard that as approximation error and simply work to keep it distant.

So I recommend $$\gamma_i=\epsilon$$. It may not work because your matrices are in a different basis from mine, but I bet some straightforward combination of $$\pm\epsilon$$ will do the trick for you.

Additionally if it would be helpful I can dig through my notes to get my derivation.

de Bruijn, N. G. "Algebraic theory of Penrose's non-periodic tilings of the plane. I, II: dedicated to G. Pólya." Indagationes Mathematicae 43.1 (1981): 39-66.

• Thank you very much! I dig into my old codes again and finally find the trick is to translate the lattice $p$ along the last basis vector $M_5$. Precisely, shift $p$ by $[1/4, 1/4, 1/4, 1/4, 1/4]$. Aug 11, 2021 at 5:53