Penrose P2 tiling via Robinson triangle decomposition. Subdivide to increase depth. Drag to pan, scroll to zoom.
Roger Penrose published "The Role of Aesthetics in Pure and Applied Research" in 1974 and introduced six tiles derived from pentagons and pentagrams. The tiles forced aperiodicity: they covered the plane completely, obeyed strict matching rules, and never repeated. Penrose reduced the six tiles to two. The P2 variant uses kites and darts. The P3 uses fat and thin rhombs. Both encode the same mathematical structure through different geometric skins.
The implementation here uses Robinson triangles, the standard decomposition scheme for P2. Every kite splits into two half-kites (acute Robinson triangles); every dart splits into two half-darts (obtuse). The subdivision rules scale by φ, the golden ratio, at each level. An acute triangle splits into two acute and one obtuse; an obtuse splits into one acute and one obtuse. The ratio of acute to obtuse triangles converges to φ as depth increases.
function subdivideCorrect(tris){
const result=[];
for(const t of tris){
const {A,B,C}=t;
if(t.type===ACUTE){
const P=mid(B,C,1/PHI);
const Q=mid(B,A,1/PHI);
result.push({type:ACUTE, A:Q, B:P, C:B});
result.push({type:ACUTE, A:P, B:Q, C:A});
result.push({type:OBTUSE, A:P, B:A, C:C});
} else {
const P=mid(A,C,1/PHI);
result.push({type:OBTUSE, A:P, B:C, C:B});
result.push({type:ACUTE, A:P, B:B, C:A});
}
}
return result;
}
The mid(B, C, 1/PHI) call places a point along edge BC at the golden section. Every split point in the entire tiling sits at a golden ratio division of its parent edge. This is what keeps the proportions self-similar across scales: zoom into any region and the same triangle shapes reappear, arranged differently, governed by the same ratio.
The tiling starts from a "sun" decagon at the centre: ten acute triangles radiating from a shared apex, their outer edges forming a regular decagon. Six rounds of subdivision produce over 30,000 triangles from those initial ten.
function initSunDecagon(){
triangles=[];
const cx=W/2, cy=H/2;
const r=Math.min(W,H)*0.48;
for(let i=0;i<10;i++){
const a1=((2*i-1)*Math.PI)/5;
const a2=((2*i+1)*Math.PI)/5;
const B=[cx+r*Math.cos(a1), cy+r*Math.sin(a1)];
const C=[cx+r*Math.cos(a2), cy+r*Math.sin(a2)];
if(i%2===0){
triangles.push({type:ACUTE, A:[cx,cy], B:B, C:C});
} else {
triangles.push({type:ACUTE, A:[cx,cy], B:C, C:B});
}
}
}
Nine years after Penrose's paper, Dan Shechtman observed tenfold diffraction symmetry in a rapidly cooled aluminum-manganese alloy. The crystallography community rejected the result. Linus Pauling said quasicrystals contained no such thing as quasicrystals, only quasi-scientists. Shechtman published in 1984. The diffraction pattern he saw matched the Fourier transform of a Penrose tiling: sharp Bragg peaks arranged with five-fold rotational symmetry, exactly the signature classical crystallography said was impossible. Shechtman received the 2011 Nobel Prize in Chemistry. The Nobel committee cited Penrose tilings as having "helped pave the way."
Penrose worked the problem from aesthetics. Shechtman found it in aluminum. The structure was the same: ordered, non-repeating, governed by five-fold symmetry and the golden ratio. The tiles are a proof you can hold in your hand, or in a browser, of an order deeper than periodicity.
Penrose Tiling
P2 kite-and-dart tiling via Robinson triangle subdivision. Starts from a sun decagon, subdivides to depth 6, supports interactive depth control, pan, and zoom.
View artifact →