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: 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
>>> 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
HyperbolicPlane().UHP().get_point(2 + I) HyperbolicPlane().PD().get_point(1/2 + I/2)
- class sage.geometry.hyperbolic_space.hyperbolic_interface.HyperbolicModels(base)[source]¶
Bases:
Category_realization_of_parent
The category of hyperbolic models of hyperbolic space.
- super_categories()[source]¶
The super categories of
self
.EXAMPLES:
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]
>>> 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]
from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicModels H = HyperbolicPlane() models = HyperbolicModels(H) models.super_categories()
- class sage.geometry.hyperbolic_space.hyperbolic_interface.HyperbolicPlane[source]¶
Bases:
Parent
,UniqueRepresentation
The hyperbolic plane \(\mathbb{H}^2\).
Here are the models currently implemented:
UHP
– upper half planePD
– Poincaré diskKM
– Klein diskHM
– hyperboloid model
- HM[source]¶
alias of
HyperbolicModelHM
- Hyperboloid[source]¶
alias of
HyperbolicModelHM
- KM[source]¶
alias of
HyperbolicModelKM
- KleinDisk[source]¶
alias of
HyperbolicModelKM
- PD[source]¶
alias of
HyperbolicModelPD
- PoincareDisk[source]¶
alias of
HyperbolicModelPD
- UHP[source]¶
alias of
HyperbolicModelUHP
- UpperHalfPlane[source]¶
alias of
HyperbolicModelUHP
- a_realization()[source]¶
Return a realization of
self
.EXAMPLES:
sage: H = HyperbolicPlane() sage: H.a_realization() Hyperbolic plane in the Upper Half Plane Model
>>> from sage.all import * >>> H = HyperbolicPlane() >>> H.a_realization() Hyperbolic plane in the Upper Half Plane Model
H = HyperbolicPlane() H.a_realization()
- sage.geometry.hyperbolic_space.hyperbolic_interface.HyperbolicSpace(n)[source]¶
Return
n
dimensional hyperbolic space.EXAMPLES:
sage: from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicSpace sage: HyperbolicSpace(2) Hyperbolic plane
>>> from sage.all import * >>> from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicSpace >>> HyperbolicSpace(Integer(2)) Hyperbolic plane
from sage.geometry.hyperbolic_space.hyperbolic_interface import HyperbolicSpace HyperbolicSpace(2)