Aperiodic tiling: Penrose kite and dart tiling (P2)

2 years ago, I made a try with a Penrose tiling. I kept bothered because the modeling was too complex and impossible to explain. I posted it anyway for the result only. Here is a reboot of the study, with a much better visual scripting app, no "user defined" feature and my better understanding of the logic for a short modeling. I was able to go a little further, up to P3, which is the rhombus tiling. but this will be for another post.

overall size of the current modeling -> I think it is short

About the math behind, the French version of wikipedia gives more details than the English one.

here is what I found important for the modeling.

the kite and dart tiling is made of 2 types of tiles. they are golden triangles 

the subdivision rules are as below. 

  • triangle A (angle aigu)  will transform into 2 smaller triangle A and 1 triangle O.
  • triangle O (angle obtus) will transform into 1 smaller triangle A and 1 triangle O

also, the transformation is oriented breaking the symmetry of the triangles. 

This took me long time to catch, because I was just looking at triangles while it should have been the 2 different edges of the triangles. Like below picture, there is a meaning to the thick edges

For the modeling, I decided to use the 3 vertices of the triangles on a defined order.

 

Here is the transformation from Generation 0 and Generation1 for triangle A

 

And here is the transformation from Generation 0 and Generation1 for triangle O 

 

They will be used to make the triangles later on. 

My modeling logic

  1. make Generation 0 triangle A
  2. loop to Generation 1 to make sure that you get AAO
  3. make Generation 0 triangle O
  4. loop to Generation 1 to make sure that you get AO
  5. merge the 2 loops
    1. add a condition in the loop -> if triangle A then AAO else AO
      1. triangle A <=> angle of the polyline is 108deg. not the triangle O
    2. and you copy the logic of step 4 in the loop of step 2
  6. use output of the loop to make the triangles
  7. increase the loop iteration!

Modeling steps

1. make Generation 0 triangle A

  1. the last "build list" is made of the 3 triangle vertices on the order explained above. 
  2. I assembled it in order to have 1 feature input for the loop -> no need deepening
  3. in the picture, I left the triangle O as well. but not used

 

2. start loop and create path for triangle A transformation

3. create path for triangle O transformation

to be easier change input to triangle O generation 0

4. group all the required points into "build lists" to make the transformed triangles as explained in the logic

then you need a condition depending on the type of the triangle to be transformed.

5 finish the loop and use the outputs in order to make the triangles

This mesh is ready for many variations. I will make a post later on the variations. next one is Rhombus type