Penrose Tiling

Substitution

This is a geometric construction of the tiling.

These are the recursive substitution rules for a triangle define by ABC:

  • Let φ be the golden ratio: (1 + √5) / 2
  • Rule 0
    • Let P be a point on AB: P = A + (B - A) / φ
    • Add the triangles: CPB and PCA
ABC
ABCABC
  • Rule 1
    • Let R be a point point on BC: R = B + (C - B) / φ
    • Add the triangle: RCA and BAR
    • Further apply Rule 0 to BAR
ABC
ABCABCABC
function subdivideStep (triangles) {
return triangles.flatMap(function (triangle) {
const { color, A, B, C } = triangle
if (color === 0) {
// P = A + (B - A) / goldenRatio;
const P = goldenpoint(A, B)
return [
{ color: 0, A: C, B: P, C: B },
{ color: 1, A: P, B: C, C: A }
]
} else {
// R = B + (C - B) / goldenRatio;
const R = goldenpoint(B, C)
return [
{ color: 1, A: R, B: C, C: A },
// this triangle is further subdivided
{ color: 0, A: B, B: A, C: R }
]
}
})
}