As mentioned in pervious posts, I’ve been exploring how Geometric Algebra (GA) can be used to generate a surface from a topology. More specifically, I’m interested in how a pentagonal (5, 4) tiling of the hyperbolic plane can be procedurally transformed into a unique surface embedded in 3D Euclidean space.
The problem is a problem of differential geometry and how to compactly describe how a surfaces evolves according to local curvature. In other words, I’m wondering if there a quantity that can be placed at the faces, edges, and vertices of the hyperbolic tiling that can then be interpolated across the tiling to give a particular surface and how such a quantity might be defined with minimal information by leveraging the constraints of the hyperbolic tiling and the topology defined by how the tiles are connected.
Going off the idea that pairs of lines define a the square of a versor transforming one line into the other, I wondered if I could use pairs of lines associated with each edge of the dual graph of the tiling to generate the surfaces. The motivation for using the dual graph is that the faces become quadrilaterals, which are simpler to interpolate across than pentagons. If, from the line pairs, I can generate the way a space frame transforms across the quadrilateral edges, I should be able to produce the surface of each quadrilateral and glue them together to create the 2-manifold surface.
The Dual Graph
As a test example, I’m using a torus, which has 4 faces and 6 vertices in the pentagonal tiling. The dual of the torus has 6 faces and 4 vertices. For any structure representing a surface with faces, edges, and vertices, the dual of that structure exchanges faces and vertices and edges for their bisectors.
In the above images, the faces are the red dots, vertices are black. The pink lines are the edges of the faces while the blue lines are the dual edges. Thus the blue lines mark out the quadrilaterals centered about the dual faces (vertices).
In this particular example, there are 2 degenerate cases where the quadrilateral consists of 2 copies of the same pair of edges. The dual faces to the far left and far right are both quadrilaterals are double covered because if you trace from one dual vertex to the next and then to the second, you end up at the first. The third and fourth edges repeat this cycle, completing the double cover. It’s not easy to see that it’s double covered in the surface view since the edges exactly coincide, but in the hyperbolic tiling view, it’s easy to see that the dual cycle occurs from circulating around a vertex where the pattern of faces encountered has a period of 2.
This degeneracy is described by vertex 3 having a cone angle of 180 degrees since it only takes a 180 degree rotation to go from face 1 to face 3 and back to face 1. It’s called a cone angle since when a cone is flattened into a plane, the angle made at the apex of the cone is less than 360 degrees.
Constructing the Surface Panels
Keeping in mind the degenerate cases, the basic idea here is to calculate how a space frame transforms across the dual graph edges and use that information of fill in the panels themselves. Here a space frame is simply the normal, tangent, and bitangent vectors on the surface making up a local coordinate frame. The way the space frames transform across the surface uniquely determines its form. To generate the transformations, we can apply versors generated by pairs of lines.
When generating versors from lines, the result is a mixture of translational and rotational components depending on how the lines relate to each other. If 2 lines intersect, their point of intersection will be the point about which the rotation described by their versor operates. If they don’t intersect, the vector between their closest points gives the translation.
To generate the surface, all that needs to be done is specify pairs of lines for each dual edge. Most of the curves are quite trivial since they only involve a rotational component. For example, the edge along the top of the torus can be generated by lines lying in the XZ-plane intersecting at (0, r, 0) where r is the minor radius.
The tricky part comes when both a rotational and translation component are involved. To generate the transformations for the degenerate dual faces, the space frame needs to rotate 90 degrees in the XY-plane and 45 degrees in the XZ-plane with a translation component thrown in.
Of course, it’s trivial to do with with two separate versors, but with a single versor, it doesn’t quite work out. The problem is that the translational component is partially in the plane of rotation. As a result the transformation cannot be described by ratios of lines. To see this, imagine trying to define a translational versor as seen above. Notice how the lines are parallel. Now imagine trying to generate the exact same motion but with lines pointing in the direction of the motion. It’s impossible because the line translated along its direction is the exact same line. A line extends to infinity in both directions, so it can’t be translated along this path. If two lines define a rotation, that rotation has a plane and if we also need to define a rotation in that plane, then we’re out of luck because the nature of the lines won’t accomodate it since the translation will at least partially be in the invariant direction defined by the lines.
I puzzled over how to generate the above transformation with a single versor for a long time before I realized what the problem was. It seems that lines are not good candidates for what I’m trying to do in the end despite their usefulness in describing rigid body motions. Instead, I need another primitive tool that can more properly describe the differential geometry quantities involved, namely curvature. This will be investigated in the next experiment.