biVector forum

Most elegant description of the Klein Quartic in GA


does anyone know what would be the most elegant description of the Klein Quartic (Klein quartic - Wikipedia) using GA ?
I’m really new to GA and also really struggle to understand the Klein Quartic, so I’m kinda lost. I was hoping that I could get a better understanding of it using GA.

Cheers !

As the Wikipedia article describes, the Klein quartic can be realized as a quotient of the hyperbolic disk by a discrete group X where X is a subgroup of index 336 in the triangle group *237 generated by reflections in the sides of a hyperbolic triangle with angles \pi/2, \pi/3 and \pi/7.

Using the hyperbolic 2D PGA P(\mathbb{R}^*_{2,1,0}) I have implemented this triangle group (and others) in a ganja demo and embedded it into an Observable notebook here. You can perhaps get a feel for how the underlying math is mirrored in the PGA code.

A couple of comments:

  1. This is the projective (aka Klein) model of hyperbolic plane, where straight lines are straight. Most of the pictures made of the hyperbolic plane use the conformal (aka Poincare) model, in which lines are represented by circular arcs. The advantage of the conformal model is that you can see more of the tessellation. The conversion from one to the other is a simple matter to write in a GLSL shader but I’m not so far along in my understanding of ganja to do that.
  2. The default settings of the demo show 8 regular heptagons; the fundamental domain of the Klein quartic consists of 24 such heptagons. The sliders in the Observable notebook allow you to draw more of the tessellation but not to draw exactly these 24 heptagons.

It’s just a demo to show you what the basic mathematical objects are and how they behave if you don’t already know. Actually understanding the significance of the Klein quartic requires a broad and deep knowledge of higher geometry and analysis, IMHO.


thank you very much. having some code along with some visualization to look at definetly helps my understanding. :slight_smile: