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.
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
- make Generation 0 triangle A
- loop to Generation 1 to make sure that you get AAO
- make Generation 0 triangle O
- loop to Generation 1 to make sure that you get AO
- merge the 2 loops
- add a condition in the loop -> if triangle A then AAO else AO
- triangle A <=> angle of the polyline is 108deg. not the triangle O
- and you copy the logic of step 4 in the loop of step 2
- add a condition in the loop -> if triangle A then AAO else AO
- use output of the loop to make the triangles
- increase the loop iteration!
Modeling steps
1. make Generation 0 triangle A
- the last "build list" is made of the 3 triangle vertices on the order explained above.
- I assembled it in order to have 1 feature input for the loop -> no need deepening
- 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
