Skip to content

codemyriad/tententoon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

121 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tententoon

noun  ·  a self-repeating image whose copies spiral as they shrink — in the manner of M. C. Escher's Print Gallery (1956).

from the Dutch title Prentententoonstellingprenten (prints) + tentoonstelling (exhibition),
with the coined word sitting right where the two halves meet.
A browser tool for making the same move with your own images.


Same picture, two infinities

A photograph of a person holding a frame; inside the frame is the same person holding the same frame, repeating into the distance. The same photograph, with the nested copies rotating as they shrink, winding the whole image into a smooth spiral.
Droste — a picture inside itself, dropping straight down forever.
(this one is a real photograph)
tententoon — the same recursion, bent into a spiral that still closes seamlessly.

Same rule — a copy inside a copy inside a copy. One drops straight down; the other takes the scenic route, and still arrives on time.

The idea

Nest a picture inside itself and you get the Droste effect: each copy sits squarely inside the last, shrinking by the same step, forever.

A tententoon asks one stranger question — what if each copy also turns as it shrinks? The nested frames then wind into a spiral. Straight lines bow into curves, the whole picture twists, and yet nothing tears: follow any line inward and it meets itself exactly.

The trick is a single move — take the logarithm. Shrinking-and-repeating is multiplication, and logarithms turn multiplication into addition, so "shrink, then repeat" becomes "slide over, then repeat" — a plain, evenly-spaced grid. Add rotation and that grid simply tilts; roll it back up and the tilt is a spiral. The loop is seamless because, in log-space, one full turn is just a shift by exactly one step — landing you on an identical picture.

→ The whole story — why it spirals, and why it never tears: silvio-tententoon.pgs.sh/explain.html

Where the name comes from

Escher drew Print Gallery by hand in 1956 and left a white blot at its centre — the spiral grew too tight to finish. In 2003, Hendrik Lenstra and Bart de Smit found the exact map behind it: the idealised picture contains a copy of itself rotated 157.6256° and shrunk by 22.5837×. With those two numbers, they completed the picture by computer. In 2026, 3Blue1Brown turned the whole argument into a beautifully animated video.

Make one

Drop in any photo, draw the rectangle where the next copy should sit, and flip between the two infinities — the straight Droste fall or the tententoon spiral. Export the loop as a PNG, GIF, or video. Everything runs in your browser: no upload, no account, no server.

Live: silvio-tententoon.pgs.sh


Run it locally
npm install      # or: bun install
npm run dev      # or: bun run dev   → open the URL Vite prints
npm run build    # → dist/
npm run preview  # serve dist/ locally

Svelte 5 (runes) + Vite. Rendering is WebGL via twgl.js with a CPU-worker fallback; exports use <canvas>.toBlob (PNG), MediaRecorder (MP4/WebM), and gifenc (GIF). No backend by design.

Credits & licence

  • Print Gallery / Prentententoonstelling — M. C. Escher, 1956. Escher's works are © The M. C. Escher Company; referenced here by description and link, not reproduced.
  • The mathematical completion — Bart de Smit & Hendrik Lenstra, The Mathematical Structure of Escher's Print Gallery, Notices of the AMS, 2003.
  • Demo imageDroste effect by Nevit Dilmen, CC BY-SA 3.0 (see public/ATTRIBUTION.txt).
  • CodeAGPLv3 or later (the sample image keeps its own CC BY-SA 3.0 licence).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors