Two Dollars of Symmetry
In SymmHub you can type 3456 into a box, get a hyperbolic wallpaper, and then grab an edge of its fundamental domain and drag it. This page explains what that drag actually is: Conway's orbifold notation, the Magic Theorem that prices every symmetry at exactly two dollars, a lost 1994 Princeton thesis, and the Teichmüller coordinates hiding behind a yellow highlight.
A symmetry is a way of folding the plane
Take an infinitely repeating pattern — bathroom tiles, an Escher print, a hyperbolic tiling in the Poincaré disk. Its symmetry group is the set of motions that leave it looking untouched. The classical way to study the group is to list generators and relations. The orbifold way, due to William Thurston, is to do something more physical: fold the pattern up along all of its symmetries, until no two equivalent points remain. What is left is a small, curved scrap of surface — the orbifold (from orbit + manifold, a name chosen by a vote in Thurston's Princeton class). Everything about the group is written on that scrap:
- a point where the pattern spins $n$ times becomes a cone point of order $n$ — the paper is rolled into a cone;
- a mirror line becomes a boundary of the scrap; corners where mirrors cross become corner points;
- a glide reflection — symmetry with no mirror and no rotation, Conway called it a miracle — sews a cross-cap into the scrap;
- plain translations with nothing else to show for themselves roll the scrap into a handle — Conway's wonder.
John Conway's notation, introduced around 1990 and refined with Daniel Huson (2002) and in The Symmetries of Things (2008, with Heidi Burgiel and Chaim Goodman-Strauss), simply spells the scrap: one character per feature. Conway was careful about the pedigree — he described his symbol as an elegant repackaging of A. M. Macbeath's 1967 “signature” for non-Euclidean crystallographic groups, expressed in Thurston's orbifold language.
pure translations; rolls the orbifold into a torus handle
an $n$-fold rotation center not on a mirror
* opens a mirror boundary; digits after it are corner points
a glide reflection; sews in a cross-cap (written x in SymmHub)
So *632 is a triangle kaleidoscope (the honeycomb group, p6m), 442 spins without mirrors (p4), 22× is two half-turns and a miracle (pgg), and o is nothing but translations (p1).
The Magic Theorem: every wallpaper costs exactly $2
Here is the piece of magic that Conway, Burgiel and Goodman-Strauss put at the center of The Symmetries of Things (and of its 2025 sequel, The Magic Theorem, finished by Burgiel and Goodman-Strauss after Conway's death in 2020). Give every symbol a price, as in the cards above. Then go shopping in the Orbifold Shop with two dollars in your pocket:
- spend less than $2 and your group lives on the sphere — there are exactly 14 types (7 infinite families and 7 polyhedral groups);
- spend exactly $2 and it lives in the Euclidean plane — precisely the 17 wallpaper groups;
- spend more than $2 and it lives in the hyperbolic plane — infinitely many groups, the ones SymmHub draws.
The magic is bookkeeping for the Gauss–Bonnet theorem. The orbifold Euler characteristic is the honest Euler characteristic of the folded scrap, with cone and corner points counted fractionally:
$$\chi_{\mathrm{orb}} \;=\; 2 \;-\; \underbrace{2\,(\#o) \;-\; (\#\times) \;-\; (\#*) \;-\; \sum_{\text{cones}}\Bigl(1-\tfrac1n\Bigr) \;-\; \tfrac12\sum_{\text{corners}}\Bigl(1-\tfrac1m\Bigr)}_{\text{the bill}} \;=\; 2 - \text{cost},$$and Gauss–Bonnet says $\int K\,dA = 2\pi\chi_{\mathrm{orb}}$: positive characteristic forces spherical geometry, zero forces flat, negative forces hyperbolic — with hyperbolic area exactly $2\pi\,|\chi_{\mathrm{orb}}|$. This exact formula, thresholds and all, is what runs in SymmHub every time you press Enter in the symbol box (OrbifoldGeometrization.js, function hashOrbifoldString).
From a symbol to an actual tiling: Deaton's lafite
The Magic Theorem tells you which geometry a symbol lives in. It does not tell you how to draw it. To render 3456 you must produce an honest hyperbolic polygon — a fundamental domain — together with the Möbius transformations that glue its edges, and this is a real construction problem: the recipe is only sketched in Thurston's notes (The Geometry and Topology of Three-Manifolds, ch. 13), via triangles that are allowed to have imaginary angles.
The missing link is a thesis that barely exists in the public record: Adam A. Deaton, Hyperbolic Orbifolds and Patterns — a Princeton senior thesis (B.A. in Mathematics, 1993), preserved as a scan in Princeton's Mudd Manuscript Library. This is Conway's era at Princeton — the thesis leans on Conway's notation paper and his then-unpublished “ZIP Up Your Surfaces,” and on Thurston's then-forthcoming book — and it is the source of the half-remembered “Conway student's master's thesis” story (it was an undergraduate thesis; even the code comment in this repository misremembers it as “1994”). It came with a program, lafite: over 4,000 lines of C that turned any orbifold symbol into a picture — and, remarkably, already let the user “change the length and twist parameters interactively, recalculating the hyperbolic structure on the fly”, smoothly on a 1993 graphics workstation. The interaction this repository resurrects is a direct descendant of that program. Neither thesis nor program was ever published; Goodman-Strauss later reconstructed (“digested”) the method for his own software, and his reconstruction is the engine in OrbifoldGeometrization.js, which cites Deaton's thesis by name in its header.
Deaton's construction is a small rewriting system on the notation itself. Nine types of geodesic cut — mirror-to-mirror, around a cross-cap, around a handle, order-2 cone to mirror, between order-2 corners, between order-2 cones, and so on — are expressed as Mathematica-style transformation rules on the symbol, each cut introducing a boundary token $\infty_\ell$ of length $\ell$ (his rule for a handle: $o \to \infty_\ell\,\infty_\ell$; for cutting a four-cone pillow: $ABCD \to \infty_\ell AB + \infty_\ell CD$). Applying the rules to a fixed point leaves exactly twelve types of atoms: four sheets ($*abc$ and variants), four pillows ($ABC$ and variants), four pillowcases ($A{*}b$ and variants — Goodman-Strauss's code calls them hats). A second pass halves pillows and pillowcases into generalized triangles — triangles whose “angles” may be imaginary, an imaginary angle $i\ell$ standing for a perpendicular geodesic edge of length $\ell$ — which are solved exactly in the Lorentz (hyperboloid) model by the generalized law of cosines, welded back along the cuts, and traversed as a connection graph whose generating cycles are the group generators. The same pipeline, in the same order, runs in this repository every time you press Enter:
What you are really dragging: Teichmüller space
Here is the payoff. A spherical or Euclidean group is rigid up to scale: *632 is the honeycomb, end of story. A hyperbolic orbifold is different — the same group signature admits a continuous family of genuinely distinct hyperbolic shapes. Thurston (Cor. 13.3.7) computes the dimension of that family, its Teichmüller space:
$$\dim \mathcal{T}(O) \;=\; -3\,\chi(X_O) \;+\; 2k \;+\; l,$$where $\chi(X_O)$ is the ordinary Euler characteristic of the underlying surface, $k$ counts cone points and $l$ counts corner reflectors. And his proof is a recipe: cut the orbifold along disjoint geodesics into pants-like primitive pieces; then the lengths of the cuts, plus a twist angle for each gluing along a closed geodesic, are global coordinates. These are the Fenchel–Nielsen coordinates of the orbifold.
Now look at what SymmHub puts in the settings panel when you type 3456: two sliders, tube_1_l and tube_1_t. The atomizer cut the four-cone pillow into two pillows along one tube; the geometrizer realized that tube as a geodesic seam of hyperbolic length tube_1_l, and welded the two sides with a relative slide of tube_1_t along the seam. Length and twist. The sliders are literally Fenchel–Nielsen coordinates, and the number of them is Thurston's dimension — computed in the code (up to bookkeeping) as
$$\#\text{params} = -6 + 6\,(\#o) + 3\,(\#\times) + 2\,(\#\text{cones}) + 3\,(\#*) + (\#\text{corners}).$$Check it against the shop: 2223 → 2 (one paired-up 2-fold “cone pair” with a length and a twist); 34x → 1 (the cross-cap's length); *34x → 2 (cap length + slice length); *237 → 0 — triangle groups are rigid, which is why nothing lights up when you hover them.
Deaton's thesis pins down exactly where the twists come from: of his nine cut types, precisely three cut an annular neighbourhood into two pieces that can then be slid against each other before regluing — the cut around a handle, the cut between two order-2 cone points, and the cut around a pair of cone points. Those are, one for one, the code's twistKeys = [handle, conePair, tube]. (Cutting around a cross-cap looks promising too, he notes, but slicing a Möbius band down the middle leaves a single piece — no second side to slide, hence cap has a length and no twist.) His worked example is o2: one cut turns it into a two-cone pillow, and the resulting length-plus-twist pair sweeps out its entire Teichmüller space — his Figure 3.5 shows the pattern morphing as the twist runs through $0, \tfrac13, 1$ of the cut's length. He closes by citing Thurston: the Teichmüller space is always $\mathbb{R}^n$ with $n$ the total number of length and twist parameters in the decomposition.
When the resurrection described below is active, hovering the image highlights any edge of the fundamental domain that carries such a parameter, and dragging it moves the orbifold through its Teichmüller space — the app re-runs the whole parse → assemble pipeline every frame and re-anchors the view so the grabbed point stays under your cursor. Shift-drag (or shift-wheel) moves the twist instead. Each edge type is color-coded:
| edge on screen | feature | parameters | geometric meaning |
|---|---|---|---|
| conePair | two 2-fold gyrations, paired | length + twist | geodesic joining the pair; twist slides the half-turn center along it |
| tube | cone-to-cone cut | length + twist | Fenchel–Nielsen coordinates of the pants seam |
| handle | an o | length + twist | translation length of the handle gluing and its offset |
| cap | a miracle x | length | glide-reflection edge; the glide is half its length |
| slice / band | cone-to-mirror / mirror-to-mirror cuts | length | mirror-anchored seams — the mirrors freeze the twist |
| fold / cornerPair | 2-fold points on mirrors | length | edge folded onto itself by a half-turn / between paired corners |
| cuttingEdge | bookkeeping cuts from unfolding | — | shape fixed by the atom's trigonometry; not draggable |
What Goodman-Strauss built in this repository
Chaim Goodman-Strauss — Conway's co-author on The Symmetries of Things, co-discoverer of the 2023 aperiodic monotiles (the “hat” and the “Spectre”, with Smith, Myers and Kaplan), and now outreach mathematician at the National Museum of Mathematics — generated many of the book's illustrations with symmetry software he wrote himself. SymmHub is a collaboration between Vladimir Bulatov and Goodman-Strauss (with Scott Vorthmann): Bulatov owns the WebGL rendering framework; Goodman-Strauss contributed the mathematical core, and the git history shows exactly how.
Nov 2019 → Feb 2025
The engine predates the repo. His first commit (6643dc1, Feb 2025) says it plainly: “All the orbifold stuff, as it was working in Nov 2019(!)” — the symbol parser, the Deaton-style geometrizer, the general wallpaper-group parameterization, and a 451-line interaction controller.
2025 · 97 commits
Mar: correctness fixes. Apr: fundamental-domain overlay and the automatic “crown” texture machinery. May–Jul: texture dragging, distance tables, a large PatternTextures overhaul. The hover-to-highlight / wheel-to-modify / re-anchor design was in the very first drop.
2026 · resurrection
The group engine was migrated into the new SymPix app; the interactive editor stayed behind and broke (a navigator refactor removed the API its re-anchoring used). In Aug 2026 it was repaired in the legacy app, true click-and-drag editing was added, and the whole interaction was ported into SymPix as OrbifoldUITool.
Concretely, in today's tree: lib/orbilib/OrbifoldGeometrization.js (2,200 lines — parser, Euler characteristic, atomizer, unfolder, assembler, generator factory), lib/orbilib/WallPaperGroup_General.js (the parameter/slider layer), WallpaperGroups_NonNegative.js (closed-form tables for the spherical and Euclidean groups), and the interaction model in apps/orbifold/js/SymmetryUIController.js → lib/orbilib/OrbifoldUITool.js are Goodman-Strauss's line of work; GroupRenderer.js and the SymRenderer/SymPix pipeline are Bulatov's.
Drag a hyperbolic orbifold yourself
The live app is embedded below (it needs this page to be served alongside the apps — on GitHub Pages or a local server). Colored arcs are the fundamental domain edges. Hover an orange or blue arc until it glows yellow, then drag — you are moving a Fenchel–Nielsen length. Shift-drag or shift-wheel moves the twist where one exists. Type a new symbol under settings → symmetry → group params; the show edges checkbox hides the overlay.
Suggested experiments
Four to start with:
- 2223 — drag the dark-blue conePair edge; shift-drag twists it. Two-dimensional Teichmüller space.
- 3456 — the orange tube seam is a genuine pair-of-pants cut: length and twist.
- *34x — two independent lengths (cap, slice), no twists: the mirrors froze them.
- *237 — nothing highlights. Rigid, as the dimension formula demands.
References
- J. H. Conway, The orbifold notation for surface groups, in Groups, Combinatorics and Geometry, LMS 165, CUP 1992, 438–447 (from the 1990 Durham symposium).
- J. H. Conway, D. H. Huson, The Orbifold Notation for Two-Dimensional Groups, Structural Chemistry 13 (2002) 247–257 — costs table, defect formula, hyperbolic examples. doi:10.1023/A:1015851621002
- J. H. Conway, H. Burgiel, C. Goodman-Strauss, The Symmetries of Things, A K Peters, 2008; and Burgiel, Conway, Goodman-Strauss, The Magic Theorem, CRC 2025 — themagictheorem.com.
- W. P. Thurston, The Geometry and Topology of Three-Manifolds, ch. 13 (orbifolds; Euler characteristic 13.3.4, trichotomy 13.3.6, Teichmüller dimension 13.3.7). library.slmath.org
- A. M. Macbeath, The Classification of Non-Euclidean Plane Crystallographic Groups, Canad. J. Math. 19 (1967) 1192–1205 — the signature the symbol repackages.
- J. H. Conway, P. Doyle, J. Gilman, W. Thurston, Geometry and the Imagination (Geometry Center, 1991), §“A field guide to the orbifolds”. arXiv:1804.03055
- A. A. Deaton, Hyperbolic Orbifolds and Patterns, senior thesis, Princeton University, 1993 (unpublished; scan held by the Seeley G. Mudd Manuscript Library, Princeton University Archives). Defines the nine cut rules, the twelve atoms, and the lafite program (>4,000 lines of C) with interactive length/twist editing. Cited (as “1994”) in OrbifoldGeometrization.js and at chaimgoodmanstrauss.com/orbifold-geometrization. Its bibliography leans on Thurston's then-forthcoming book, Conway's then-forthcoming “ZIP Up Your Surfaces,” and D. Schattschneider's Visions of Symmetry (1990) for the Escher material.
- C. Goodman-Strauss — bio; aperiodic monotiles: arXiv:2303.10798, arXiv:2305.17743.
- This repository: github.com/SymmHub/SymmHub — engine in lib/orbilib/, legacy app in apps/orbifold/, SymPix app in apps/sympix/.