The tiling is made of regular hyperbolic polygons inside a circle \(C_\infty\). The inside of \(C_\infty\) is the hyperbolic universe, which is commonly called the Poincaré disc. The circle itself is not included in the universe but can be seen as the circle at infinity.
For a regular hyperbolic polygon, all angles are equal, and all sides have the same hyperbolic length. Reflecting a polygon in all its edges and then repeatedly reflecting each newly created polygon in its “free” edges create the tiling. The first reflections are shown as arrows in the figure below. Except for algorithmic reasons, the ordering does not matter. Reflecting any of its neighbours can create every polygon.
In the tiling above, \(p\) is the number of vertices of each polygon, and \(q\) is the number of polygons adjacent to each vertex.
For a Euclidean tiling of regular polygons, the only possible pair of values are: \(p = 3, q = 6 \) or \(p = 4, q = 4\) or \(p = 6, q = 3 \). See Geometry - Tessellations and Symmetries for the Euclidean case. In the Euclidean case, the angle sum of a regular polygon with \(p\) sides is \((p-2)\cdot \pi\). Having \(q\) such polygons meeting at each vertex, following must be true:
\[ \begin{align*} \frac{(p-2)\cdot \pi}{p}\cdot q &= 2\pi \\ \iff \\ (p-2)\cdot q &= 2p \\ \iff \\ p\cdot q-2q-2p+4 & = 4 \\ \iff \\ (p-2)\cdot (q-2) &= 4 \end{align*} \]In hyperbolic geometry, the angle sum of a triangle is less than \(\pi\) and the angle sum of a regular polygon with \(p\) sides is less than \((p-2)\cdot\pi\). Let \(\alpha\) be the inner angle of a hyperbolic polygon in a pq-tiling, then:
\[ \frac{(p-2)\cdot \pi}{p}\cdot q > \alpha\cdot q = 2\pi \]For that reason, following relation must hold for any hyperbolic pq-tiling of regular polygons.
\[ (p-2)\cdot (q-2) > 4 \]It can be shown that all hyperbolic triangles that are similar, are in fact congruent. This puts a restriction on the distances used when making a hyperbolic tiling of regular polygons.
In Euclidean geometry there are only three possibilities when it comes to the values of \(p\) and \(q\), but there is no restriction on the size of the polygon. In hyperbolic geometry there are infinitely many pairs of \(p\) and \(q\) that can be used for making a tiling of regular polygons, but in any tiling the size of the polygon is uniquely determined by \(p\) and \(q\). There is only one hyperbolic size. In the interactive example above, one point can be moved freely, the other point can only be moved along a hyperbolic circle. From a Euclidean point of view, the distance between the points is smaller when the points are close to the edge of the hyperbolic universe. In the hyperbolic universe however, the distance between the two points is constant.
For a given \(p\) and \(q\), it is easiest to consider a hyperbolic polygon at the centre of the universe when finding the size of all regular polygons of the tiling.
Let \(d\) be the Euclidean distance between a vertex of a centred hyperbolic polygon and the centre of the universe \(C_\infty\). For simplicity, let \(C_\infty \) be a unit circle in the given Euclidean coordinate system, then \(d\) can be found through a long series of (boring) trigonometric brute force steps.
\[ d = \sqrt{ \frac{ \cos ( \pi / p + \pi / q ) \cdot \cos (\pi / q) } { \sin(2\pi / q) \cdot \sin( \pi / p) + \cos ( \pi / p + \pi / q) \cdot \cos(\pi / q) } } \]The GeoGebra compatible code for the formula is:
d = sqrt(cos(pi/p + pi/q)*cos(pi/q) / (sin(2*pi/q) * sin(pi/p) + cos(pi/p + pi/q)* cos(pi/q)))
When \(d\) has been calculated, any hyperbolic polygon for that tiling can be created by using a hyperbolic compass, as described on the previous page: GeoGebra Constructions in the Poincaré Disc: Exercise 7.
For another example of an interactive tiling, where you can load any image and make a hyperbolic tiling of it, see Make Hyperbolic Tilings of Images.
Although we will not need a hyperbolic rotate tool, for the sake of completeness we will show the instruction for making one.
The GeoGebra-tool Rotate Object around Point by Angle
doesn't really rotate an object but creates a
copy of an object that is rotated relative to original object. We can make a hyperbolic version of the
rotate-tool that creates a geodesic that is rotated around a point.
A'=Reflect[A, Circle[(0, 0), 1]]
B'=Reflect[B, Circle[(0, 0), 1]]
HypLine
on A and B to create a hyperbolic line hline.M = Centre[hline]
a' = Rotate[a, α, A]
b = PerpendicularBisector[A, A']
c = Circle[C, A]
Intersect[c, Circle[(0, 0), 1]]
When making the hyperbolic constructions you will need hyperbolic tools for making a: line, segment, ray, distance, and circle. You can either make them yourself by following the instructions on GeoGebra constructions in the Poincaré disc or copy the activity Basic hyperbolic tools.
You will also need the hyperbolic tools HypPerpendicularBisector
and HypCompass
described in GeoGebra constructions in the Poincaré disc: Exercise 3 and Exercise 7
GeoGebra-construction of hyperbolic tiling with centred polygon
a = atan2(y(A),x(A))
. a
in B1. Then make the rest of the angles in column B by writing If(A2 ≤ p, B1 + 2 pi/p)
, and make relative copies along the column. If(A1 < p, HypSegment(C1, C2), HypSegment(C1, $C$1))
HypSegment
can be used to make the reflected polygon. This procedure can be repeated. Note that p and q cannot be changed after making some reflections.
To fill out the tiling with many hyperbolic polygons, programming is preferable.
GeoGebra-construction of interactive hyperbolic tiling
The tiling in Exercise 1 has one polygon with the origin as its centre. We are now going to make a similar construction but where one polygon can be moved inside the Poincaré disc.
Start by making following objects
HypCompass
to copy c to a circle e having B as centre. Then hide A which will not be used from now on.
Now you can use the method sketched out in Exercise 1 to make the vertices of a hyperbolic polygon on circle c, such that one of the vertices is C'. Then reflect all vertices in the hyperbolic perpendicular bisector f and make the polygon segments between the reflected points. Hide all auxiliary objects and make reflected polygons to make a part of a tiling.