flatsurf / sage-flatsurf

Flat surfaces in Sage
https://flatsurf.github.io/sage-flatsurf/
GNU General Public License v2.0
10 stars 10 forks source link

Convex geometry of the hyperbolic plane #156

Closed sfreedman67 closed 1 year ago

sfreedman67 commented 2 years ago

This is a draft of notes that we took at a meeting in Bordeaux in early 2022. Please extend these notes.


Geometry on the hyperbolic plane is not really implemented in SageMath. It's needed for our implementation of #155. While it might eventually go upstream into SageMath, we want to first implement it in sage-flatsurf.

Here are some objects that we think we should implement:

class flatsurf.geometry.HyperbolicPlane:
    # over a fixed base ring. Probably does nothing but store that base ring.

class flatsurf.geometry.HyperbolicBoundaryPoint:
    # projective coordinates of a boundary point.

class flatsurf.geometry.HyperbolicGeodesic:

class flatsurf.geometry.HyperbolicEdge:
    # a geodesic segment

class flatsurf.geometry.HyperbolicHalfPlane:
    # a geodesic + an orientation. Implements sagemath containment for points.

class flatsurf.geometry.HyperbolicPoint:
    # a pair of geodesics. lazily computes cached exact coordinates, e.g., for hashing.

class flatsurf.geometry.HyperbolicPolytope:
    # intersection of half planes, as a list of edges.

It is not completely clear which hyperbolic model is the best to work with (probably the hyperboloid is more "linear").

videlec commented 2 years ago

I think that if we use the hyperboloid model (ie R^{2,1}) then there is no issue with taking square-roots for computing coordinates. The only drawback is that computations are now in 3 dimensions (but homogeneous cones, not general polytopes).

videlec commented 2 years ago

I also think that a boundary point is a special case of point (it is just that the quadratic form evaluates to zero). There is also "beyond ideal" points that are in the positive cone of the space.

saraedum commented 1 year ago

Fixed in #158.