Constructing shapes in hyperbolic space

161 Views Asked by At

I'm trying to get started writing a game that uses the order-4 dodecahedral honeycomb in hyperbolic space. I'm representing points as 4-vectors of the form $\left(\begin{smallmatrix}h\\x\\y\\z\end{smallmatrix}\right)$ where $h=\sqrt{x^2+y^2+z^2+1}$.

So far I have functions for:

  • Computing the distance between points: $\cosh^{-1}{(h_1h_2-x_1x_2-y_1y_2-z_1z_2)}$
  • Placing a point on an axis at a specific distance from the origin
  • Interpolating and extrapolating along geodesics

I haven't written a function for finding the intersection between lines yet but I don't believe I would have trouble with it.

What I need help with:

  • Some general techniques for actually constructing shapes (particularly polygons and polyhedra) in this model of hyperbolic space as opposed to just measuring their properties.
  • Specifically: how to construct the order-4 dodecahedral honeycomb

Thanks in advance.

1

There are 1 best solutions below

2
On BEST ANSWER

My main tool would be the two forms of the hyperbolic law of cosines. Like in the Euclidean case, you can compute a corner angle of a triangle given the lengths of its three edges. But contrary to Euclidean geometry, you can also compute an edge lengths given all the corner angles. So if you can work out the angles for some triangles related to your honeycomb, you can use this to obtain suitable edge lengths, and since you know how to place a point at a given distance from the origin, you can likely use this to eventually determine all the edges.

I guess I'd also think about all of this more in terms of isometric transformations: instead of placing a point at a given distance from the origin on a given axis, I know how I can turn any axis to a particularly easy axis (e.g. the $y=z=0$ axis) and I know how to express a translation along that axis by a given distance. I can combine these two to achieve what you described, but by combining them with other transformations, I can build up a more flexible repertoire of operations I can express.

Reacting to a comment, I want be more specific about this part of turning a particular axis into an easy axis. The key point here is that you can apply a rotation around the origin to the $x,y,z$ coordinates without touching the $h$ coordinate or changing the distances. In other words, if the center of rotation is the origin, then a Euclidean and a hyperbolic rotation are the same thing. Otherwise, you might want to move the center of rotation into the origin first, using a hyperbolic translation.