Tegula is an interactive desktop application for exploring periodic tilings of the three two-dimensional geometries: the sphere, the euclidean plane and the hyperbolic plane.
A periodic tiling covers a surface with tiles, repeating according to a symmetry group. Tegula represents such a tiling by its Delaney–Dress symbol, a finite combinatorial encoding of both the tiling and its symmetry group. From that symbol the program computes a fundamental domain with real coordinates and renders it in 3D, replicating it by the generators of the symmetry group.
Because the encoding is finite, tilings can be enumerated and stored in databases. Tegula ships as a browser for such databases: you open a collection of many thousands of tilings, scroll through them as a grid of thumbnails, filter them, and open any one of them in an editor.
A tiling is cut into chambers (also called flags): triangles each with one corner at a tile centre, one at an edge centre and one at a vertex of the tiling. The symbol records how chambers are glued to one another across their three sides, together with the orders of the rotations at the tiling’s vertices and edge centres. Two tilings have the same symbol exactly when they are equivalent as symmetric tilings, so the symbol is a complete and compact invariant.
In the program’s notation a symbol is written on one line, for example:
<1.1:1:1,1,1:5,3>
This is the dodecahedron: one chamber, and rotation orders 5 and 3.
The rotation orders decide the geometry, and Tegula computes it for you:
| condition | rendered as | |
|---|---|---|
| Spherical | positive curvature | a sphere you can rotate |
| Euclidean | zero curvature | a flat plane you can pan |
| Hyperbolic | negative curvature | a disk, in the Poincaré or Klein model |
Raising a single rotation order will often move a tiling from one geometry to another, and Tegula follows it there.
Installers for macOS, Linux and Windows are available from the GitHub releases page.
Download and run the installer for your platform. On macOS, open the .dmg and drag the application
to your Applications folder. On Linux, install the .deb or unpack the .tar.gz. On Windows, run
the .msi.
To get started you will also want a database of tilings; see section 4.
Tegula opens a window with a menu bar, a toolbar and a tabbed area. Each tab holds either a collection of tilings or a single tiling in the editor.
A collection tab shows the tilings of an opened file or database as a grid of thumbnails, with a label under each giving its number and its characteristics, for example:
Tiling 628 - n:6 t:3 e:3 v:2 g:*532
Here n is the size of the Delaney–Dress symbol, t, e and v are the numbers of tile, edge and
vertex classes, and g is the symmetry group in orbifold notation.
Double-clicking a tiling opens it in an editor tab, which renders the tiling in 3D and surrounds it with collapsible panes.
Shows the symmetry group in orbifold notation, with a row of spinners beneath it. Each spinner is the
order of one rotation of the tiling: press ++ or -- to change it.
Changing a rotation order changes the tiling, and often its geometry — a euclidean tiling will become spherical or hyperbolic. Any reshaping you have done to the fundamental domain is carried over.
Enabled for hyperbolic tilings only. Choose between the Poincaré model, which is conformal and
preserves angles, and the Klein model, in which geodesics are straight lines. Tiles -- and
++ set how far out from the centre the tiling is drawn.
Choose Point light, which shades the surface and gives it depth, or Ambient light, which lights every part of it equally and gives flat, even colour.
Opens an editable view of the fundamental domain, the piece of the tiling from which the whole is generated. It is drawn as a polygon, subdivided into its chambers, with draggable handles:
| handle | meaning |
|---|---|
| red diamond | a vertex of the tiling |
| green square | an edge centre |
| yellow square | a point restricted to lie on a mirror line |
Drag a handle to reshape the domain; the tiling redraws to match. Dragging an edge centre bends that edge, which is how you give tiles curved or interlocking boundaries. Reset restores the computed shape.
Holds operations that can be applied to the tiling; see section 5.
| extension | contents |
|---|---|
.tdb |
a database of enumerated tilings, holding many thousands of symbols |
.tgs |
a plain-text file of Delaney–Dress symbols, one per line |
.tegula |
a collection together with its styling |
The program does not ship with a database, because the databases are hundreds of megabytes and do not change from one release to the next. Use File → Download… to fetch one: you are asked where to put it, and the download is expanded as it arrives, so no compressed copy is left behind. The first time you start the program it offers to do this for you.
tilings-1-18.tdb holds all tilings of Dress complexity at most 18. It is about 200 MB to download
and about 1.5 GB on disk. Where you put it is remembered, so the question is asked only once.
The databases can also be downloaded by hand, from the release that holds them:
https://github.com/husonlab/tegula/releases/tag/data-v1
Unzip such a download and open the file with File → Open….
.tgs file or a .tegula fileEvery tiling carries a name such as DS02-1AM5-8, shown in the label beneath it and in the status
line. The name is not an index into a catalogue and not a hash: it is the tiling, written out. It
can be decoded back into the Delaney–Dress symbol it names, so it needs no database, no lookup and no
registry to be meaningful.
Three things follow from that, and they are the reason for the scheme:
DS02-1AM5-8
│ │ └──── the tiling itself, in base 32, in groups of four
│ └─────── the size of the Delaney–Dress symbol: this one has 2 chambers
└────────── a fixed prefix
The size is already contained in the encoded part; the prefix repeats it for the benefit of people reading the name, not of the program.
The alphabet is Crockford base 32, 0123456789ABCDEFGHJKMNPQRSTVWXYZ, which leaves out I, L, O and U
precisely because they are the characters people confuse. Reading a name is correspondingly forgiving:
case is ignored, I and L are read as 1, O as 0, and hyphens are dropped. So DS02-1AM5-8,
ds02-1am5-8 and DS021AM58 are the same name, and a name survives being written on paper, read
aloud or retyped.
Names are short: about 9 characters for a symbol of size 1, 28 for size 18, 38 for size 24. Every character is in the QR alphanumeric set, so a name fits compactly into a QR code.
| tiling | name | geometry |
|---|---|---|
<1.1:1:1,1,1:5,3> — the dodecahedron |
DS01-0TM0 |
spherical |
<1.1:1:1,1,1:3,5> — the icosahedron |
DS01-0TH0 |
spherical |
<1.1:1:1,1,1:4,4> — the square tiling |
DS01-0TJG |
euclidean |
<1.1:1:1,1,1:7,3> |
DS01-0TPE-0 |
hyperbolic |
The exact bit-level specification is given in the class documentation of DSymbolCode in the source.
These act on the tiling in the current editor tab, and are undoable.
| operation | effect |
|---|---|
| Dualize | exchange the roles of tiles and vertices |
| Max Symmetry | replace the tiling by the one with the largest symmetry group having the same shape |
| Orientate | pass to the orientation double cover, so that the symmetry group contains no reflections |
| Straighten | straighten all edges of the fundamental domain, undoing any reshaping |
| item | |
|---|---|
| New… | open an empty window |
| Open… | open a database or file of tilings |
| Open Recent | reopen a previously opened file |
| Save Selected… | write the selected tilings to a file |
| Download… | fetch a database of tilings, expanding it as it arrives |
| Page Setup… / Print… | print the current view |
| Close | close the current window |
| Quit | leave the program |
Undo, Redo, Copy, Paste, Select All, Select None, and Open in Editor…, which opens the selected tiling in an editor tab.
| item | |
|---|---|
| Use Dark Theme | switch between the light and dark interface |
| Show Labels | show or hide the label under each tiling |
| Color Preview | colour the thumbnails in a collection |
| Show Chambers | draw the chamber subdivision on the tiling |
| Show More / Less Tiles | how much of an unbounded tiling is drawn |
| Reset | restore the default view |
| Zoom In / Zoom Out | change the scale |
| Set Max Copies Hyperbolic… / Euclidean… | limits on how many copies are generated |
| Enter Fullscreen | fill the screen |
First Page, Last Page and Choose Page… move through a collection; Dualize, Max Symmetry, Orientate and Straighten are described in section 6.
Lists the open windows, so that you can bring any of them to the front.
| item | |
|---|---|
| Check for Updates… | ask whether a newer version has been released |
| About… | show the version and authors |
| Open User Manual in Browser… | open this manual |
The symmetry groups are named in orbifold notation: digits are the orders of rotation points, a
* introduces mirror lines, and digits after a * are the orders of the corners where mirrors meet.
So *532 is the symmetry group of the dodecahedron including its reflections, and 532 is its
rotation-only subgroup of index two — which is what Orientate computes.
The databases distributed with Tegula contain all periodic tilings of Dress complexity at most 18,
and all euclidean and spherical tilings of Dress complexity at most 24. They were computed with
genDSyms, available at https://github.com/odf/julia-dsymbols.
The underlying mathematics, the algorithms and the software are described in the paper cited below.
If you use Tegula in your work, please cite:
Tegula is free software, released under the GNU General Public License v3. It comes with no warranty.
See LICENSE.txt in the source repository for the full text.