Mathematics for Hyperbolic Tiles
other posts

math

Representation of the numbers used in {5, (3,)* 4} tessellations matrices.

In a previous post I stated

For ex­am­ple, if cosh(d) is the golden num­ber then trans­lat­ing d five times along (in or­der) +x, +y, –x, –y, and +x is equivalent to ro­tat­ing 90° in the x-y plane.

I could explain why this is must be true, with discussion of Schläfli symbols, tessellation theory, etc; but instead I will accept it as a definition and derive numbers from it.

Recall that a hyperbolic translation matrix takes the form

 c 0 s 0 1 0 s 0 c

where c2s2 = 1. Taking the initial statement that chaining five of these (+x, +y, –x, –y, and +x) results in a 90° rotation gives us

 c 0 s 0 1 0 s 0 c

 1 0 0 0 c s 0 s c

 c 0 –s 0 1 0 –s 0 c

 1 0 0 0 c –s 0 –s c

 c 0 s 0 1 0 s 0 c

 0 1 0 –1 0 0 0 0 1

In general, equations such as this, which provide nine constraints on only two variable, are not solvable. However, in this case it is. Looking at the central cell we find – cs2 + c2 = 0, which, assuming c ≠; 0, means s2 = c. Since we also know that c2 = 1 + s2, we also know that c2 = 1 + c and s4 = 1 + s2. This uniquely identifies c as the golden number 1.6182…, but we won’t need that fact for what follows.

algorithm For computational purposes, we’d like to be able to store arbitrary products of these translation matrices in a clean, compact way. This will allow us to easily manipulate and examine locations on the {5, 3, 4} and {4, 3, 5} tessellations. In particular, this means we need a representation which includes 0, 1, s, and c and which is closed under addition, negation, and multiplication.

We’ll do this by storing a vector of coefficients which we’ll dot with [1, s, c, sc] to get the actual number represented. This is a fairly common approach to creating numbers; you start with what you know you need and then expand the set to keep it closed under the operations required. Note that we don’t need any other terms: s times s is covered by c, c times c is covered by 1 and c, and all the other products reduce to one of those two.

With this representation we can now derive the multiplication algorithm:

Thanks to a reader who corrected a typo in an earlier version of this pseudocode
(a, b, c, d) × (x, y, z, w)
Call the answer (m, n, o, p); The easy part { m = a x; n = a y + b x; o = a z + b y + c x; p = a w + b z + c y + d x; }; The c2 = 1 + c part { m += c z + b w + d y + d w; n += c w + d z; o += c z + b w + d y + 2 d w; p += c w + d z ; };

That’s it. We now have a simple closed-form way of computing and expressing the locations of all vertices in the {5, (3,)* 4} tessellations. It is canonical (thanks to the irrationality of ϕ) and relatively efficient to compute. It is not, however, dense; for example, the representable point [ (0,1,0,0), (0,1,0,0), (0,0,0,1) ] is not a vertex in the tessellation.