Droste Effect Explorer

Interactive visualization of Escher's recursive spiral

Droste Spiral

Source

Log-Polar

Aligned

How it works

Source. A procedurally generated scene contains a smaller copy of itself, embedded by the similarity S(z) = c + a·z with scale |a| = 1/16. This creates a picture-within-a-picture that repeats infinitely inward.

Log-Polar. Mapping to ζ = ln r + i·θ converts the multiplicative self-similarity into additive periodicity: the image tiles with period ln(1/|a|) along the horizontal axis (radius) and 2π along the vertical axis (angle). Circles around the center become vertical lines; radial rays become horizontal lines.

Aligned. Multiplying by a complex number α performs a rotation and isotropic scaling of the log-polar plane. Following Lenstra and de Smit, the alignment condition α·Δζ = 2πi shears the periodic strip so that the self-similar copies line up vertically. With 1 level per turn the zoom factor is 16, giving Δζ = (ln 16, 2π) and α = 2πi / (ln 16 + 2πi). The sliders let you explore different α values; the presets compute the exact alignment for clockwise and counter-clockwise spirals.

Droste Spiral. Applying exp to the aligned ζ′ coordinates wraps the periodic strip back into polar form, producing the Droste spiral. Each pixel's screen position determines its ζ′ coordinates; the shader tiles, divides by α, and traces back through the recursion to render the scene procedurally. The result is a seamless spiral zoom that Escher approximated by hand in his 1956 lithograph Print Gallery.

Interact: Drag to pan the Droste spiral; scroll to zoom. Use the sliders or presets to change α in real time.