Tiling the Hyperbolic Plane Using Regular Heptagons
A
The Poincaré Disk Model
A famous model for hyperbolic geometry is the Poincaré disk model (which is actually first discovered by Beltrami), which can be described as follows. Choose a circular disk
One advantage of this model is that, it is conformal, i.e. it preserves angles: the hyperbolic angle between two geodesics is the same as the angle between the two corresponding arcs. Therefore, the interior angles of the heptagons should also be
Drawing the Geodesics
The first problem we're facing is drawing the geodesic through two points. This is equivalent as: given circle
This is easily solved using inversion: choose a point
There is a small technical issue here: only knowing two endpoints and the center is not sufficient for drawing an arc; we must specify which side of the circle do we want. In this case, all geodesics are arcs with angles less than
Calculating the Tiling
Reflection
If we have a cell (a heptagon) of the tiling, we would like to generate all other heptagons of the tiling. One natural way of doing this is reflecting this heptagon by its edges, generating more heptagons. Therefore, the problem here is calculating the reflected geodesic.
It turns out that reflection in the Poincaré disk model is the same as inversion in the Euclidean plane. (It's interesting to notice that inversion is sometimes just called reflection in circle.) Since we can construct the edges by the coordinates of the vertices, we can simply invert the seven vertices in one edge to get a new heptagon.
The First Heptagon
We would like to choose the first heptagon to be at the center. In this case, its edges (in the Poincaré disk model) are congruent circles, placed evenly around the disk, all orthogonal to
Suppose
At this point, we can already draw the complete tiling, by reflecting this first heptagon along its edges, and doing the same thing for all new heptagons. But one small culprit here is that some heptagons might be calculated multiple times, and we want to avoid this, especially because I want to color these heptagons by different colors.
Labelling the Heptagons
We label the heptagons appropriately to avoid repeated calculation of the same heptagon. The center one is labeled
Here's the final result. I added a mask to form a nicer boundary.