Interface to Hyperbolic Models - Hyperbolic Geometry

Skip to content
Back to top
View this page
Edit this page

# Interface to Hyperbolic Models

This module provides a convenient interface for interacting with models of hyperbolic space as well as their points, geodesics, and isometries.

The primary point of this module is to allow the code that implements hyperbolic space to be sufficiently decoupled while still providing a convenient user experience.

The interfaces are by default given abbreviated names. For example, UHP (upper half plane model), PD (Poincaré disk model), KM (Klein disk model), and HM (hyperboloid model).

Note

All of the current models of 2 dimensional hyperbolic space use the upper half plane model for their computations. This can lead to some problems, such as long coordinate strings for symbolic points. For example, the vector `(1, 0, sqrt(2))` defines a point in the hyperboloid model. Performing mapping this point to the upper half plane and performing computations there may return with vector whose components are unsimplified strings have several `sqrt(2)`’s. Presently, this drawback is outweighted by the rapidity with which new models can be implemented.

AUTHORS:

- Greg Laun (2013): Initial version.

- Rania Amer, Jean-Philippe Burelle, Bill Goldman, Zach Groton, Jeremy Lent, Leila Vaden, Derrick Wigglesworth (2011): many of the methods spread across the files.

EXAMPLES:

Sage

    sage: HyperbolicPlane().UHP().get_point(2 + I)
    Point in UHP I + 2

    sage: HyperbolicPlane().PD().get_point(1/2 + I/2)
    Point in PD 1/2*I + 1/2

Python

    >>> from sage.all import *
    >>> HyperbolicPlane().UHP().get_point(Integer(2) + I)
    Point in UHP I + 2

    >>> HyperbolicPlane().PD().get_point(Integer(1)/Integer(2) + I/Integer(2))
    Point in PD 1/2*I + 1/2

class sage.geometry.hyperbolic_space.hyperbolic_interface.HyperbolicModels(base)

  Bases: `Category_realization_of_parent`

  The category of hyperbolic models of hyperbolic space.

  class ParentMethods

    Bases: `object`

  super_categories()

    The super categories of `self`.

    EXAMPLES:

    Sage

        sage: from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicModels
        sage: H = HyperbolicPlane()
        sage: models = HyperbolicModels(H)
        sage: models.super_categories()
        [Category of metric spaces,
         Category of realizations of Hyperbolic plane]

    Python

        >>> from sage.all import *
        >>> from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicModels
        >>> H = HyperbolicPlane()
        >>> models = HyperbolicModels(H)
        >>> models.super_categories()
        [Category of metric spaces,
         Category of realizations of Hyperbolic plane]

class sage.geometry.hyperbolic_space.hyperbolic_interface.HyperbolicPlane

  Bases: `Parent`, `UniqueRepresentation`

  The hyperbolic plane \(\mathbb{H}^2\).

  Here are the models currently implemented:

  - `UHP` – upper half plane

  - `PD` – Poincaré disk

  - `KM` – Klein disk

  - `HM` – hyperboloid model

  HM

    alias of `HyperbolicModelHM`

  Hyperboloid

    alias of `HyperbolicModelHM`

  KM

    alias of `HyperbolicModelKM`

  KleinDisk

    alias of `HyperbolicModelKM`

  PD

    alias of `HyperbolicModelPD`

  PoincareDisk

    alias of `HyperbolicModelPD`

  UHP

    alias of `HyperbolicModelUHP`

  UpperHalfPlane

    alias of `HyperbolicModelUHP`

  a_realization()

    Return a realization of `self`.

    EXAMPLES:

    Sage

        sage: H = HyperbolicPlane()
        sage: H.a_realization()
        Hyperbolic plane in the Upper Half Plane Model

    Python

        >>> from sage.all import *
        >>> H = HyperbolicPlane()
        >>> H.a_realization()
        Hyperbolic plane in the Upper Half Plane Model

sage.geometry.hyperbolic_space.hyperbolic_interface.HyperbolicSpace(n)

  Return `n` dimensional hyperbolic space.

  EXAMPLES:

  Sage

      sage: from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicSpace
      sage: HyperbolicSpace(2)
      Hyperbolic plane

  Python

      >>> from sage.all import *
      >>> from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicSpace
      >>> HyperbolicSpace(Integer(2))
      Hyperbolic plane