# Constructing shapes in hyperbolic space

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

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.