Arcs in hyperbolic geometry¶
AUTHORS:
- Hartmut Monien (2011 - 08) 
Three models of the hyperbolic plane are implemented: Upper Half Plane, Poincaré Disk, and Klein Disk, each with its different domain and metric tensor.
Upper half plane (UHP)
In this model, hyperbolic points are described by two coordinates, which we will represent by a complex number in the domain
with the corresponding metric tensor
Poincaré disk (PD)
In this model, hyperbolic points are described by two coordinates, which we will represent by a complex number within the unit circle, having therefore the following domain
with the corresponding metric tensor
Klein disk (KM)
In this model, the domain is again complex numbers within the unit circle as in the Poincaré disk model, but the corresponding metric tensor is different:
REFERENCES:
For additional models of the hyperbolic plane and its relationship see [CFKP1997]. For a more detailed explanation on hyperbolic arcs see [Sta1993].
- class sage.plot.hyperbolic_arc.HyperbolicArc(A, B, model, options)[source]¶
- Bases: - HyperbolicArcCore- Primitive class for hyberbolic arc type. - See - hyperbolic_arc?for information about plotting a hyperbolic arc in the complex plane.- INPUT: - A,- B– end points of the hyperbolic arc
- model– the hyperbolic model used, which is one of the following:- 'UHP'– upper half plane
- 'PD'– Poincaré disk
- 'KM'– Klein disk
 
 
- class sage.plot.hyperbolic_arc.HyperbolicArcCore(path, options)[source]¶
- Bases: - BezierPath- Base class for Hyperbolic arcs and hyperbolic polygons in the hyperbolic plane. - The Upper Half Model, Poincaré Disk Model, and Klein Disk model are supported. 
- sage.plot.hyperbolic_arc.hyperbolic_arc(a, b, model='UHP', alpha=1, fill=False, thickness=1, rgbcolor='blue', zorder=2, linestyle='solid', **options)[source]¶
- Plot an arc from - ato- bin hyperbolic plane.- INPUT: - a,- b– complex numbers connected by a hyperbolic arc
- model– (default:- 'UHP') hyperbolic model used, which is one of the following:- 'UHP'– upper half plane
- 'PD'– Poincaré disk
- 'KM'– Klein disk
- 'HM'– hyperboloid model
 
 - OPTIONS: - alpha– (default: 1)
- thickness– (default: 1)
- rgbcolor– (default:- 'blue')
- linestyle– (default:- 'solid') the style of the line, which is one of- 'dashed',- 'dotted',- 'solid',- 'dashdot', or- '--',- ':',- '-',- '-.', respectively
 - EXAMPLES: - Show a hyperbolic arc from \(0\) to \(1\): - sage: hyperbolic_arc(0, 1) Graphics object consisting of 1 graphics primitive - >>> from sage.all import * >>> hyperbolic_arc(Integer(0), Integer(1)) Graphics object consisting of 1 graphics primitive - Show a hyperbolic arc from \(1/2\) to \(i\) with a red thick line: - sage: hyperbolic_arc(0.5, I,color='red', thickness=2) Graphics object consisting of 1 graphics primitive - >>> from sage.all import * >>> hyperbolic_arc(RealNumber('0.5'), I,color='red', thickness=Integer(2)) Graphics object consisting of 1 graphics primitive - Show a hyperbolic arc from \(1+i\) to \(1+2i\) with dashed line: - sage: hyperbolic_arc(1+I, 1+2*I, linestyle='dashed', color='green') Graphics object consisting of 1 graphics primitive - >>> from sage.all import * >>> hyperbolic_arc(Integer(1)+I, Integer(1)+Integer(2)*I, linestyle='dashed', color='green') Graphics object consisting of 1 graphics primitive - sage: hyperbolic_arc(-1+I, 1+2*I, linestyle='--', color='orange') Graphics object consisting of 1 graphics primitive - >>> from sage.all import * >>> hyperbolic_arc(-Integer(1)+I, Integer(1)+Integer(2)*I, linestyle='--', color='orange') Graphics object consisting of 1 graphics primitive - Show a hyperbolic arc from a \(1+i\) to infinity: - sage: hyperbolic_arc(1 + I, infinity, color='brown') Graphics object consisting of 1 graphics primitive - >>> from sage.all import * >>> hyperbolic_arc(Integer(1) + I, infinity, color='brown') Graphics object consisting of 1 graphics primitive - We can also plot hyperbolic arcs in other models. - We show a hyperbolic arc from \(i\) to \(-1\) in red, another hyperbolic arc from \(e^{i\pi/3}\) to \(0.6 \cdot e^{i 3\pi/4}\) with dashed style in green, and finally a hyperbolic arc from \(-0.5+0.5i\) to \(0.5-0.5i\) together with the disk frontier in the Poincaré disk model: - sage: z1 = CC(0,1) sage: z2 = CC(-1,0) sage: z3 = CC((cos(pi/3),sin(pi/3))) sage: z4 = CC((0.6*cos(3*pi/4),0.6*sin(3*pi/4))) sage: z5 = CC(-0.5,0.5) sage: z6 = CC(0.5,-0.5) sage: a1 = hyperbolic_arc(z1, z2, model='PD', color='red') sage: a2 = hyperbolic_arc(z3, z4, model='PD', color='green') sage: a3 = hyperbolic_arc(z5, z6, model='PD', linestyle='--') sage: a1 + a2 + a3 Graphics object consisting of 6 graphics primitives - >>> from sage.all import * >>> z1 = CC(Integer(0),Integer(1)) >>> z2 = CC(-Integer(1),Integer(0)) >>> z3 = CC((cos(pi/Integer(3)),sin(pi/Integer(3)))) >>> z4 = CC((RealNumber('0.6')*cos(Integer(3)*pi/Integer(4)),RealNumber('0.6')*sin(Integer(3)*pi/Integer(4)))) >>> z5 = CC(-RealNumber('0.5'),RealNumber('0.5')) >>> z6 = CC(RealNumber('0.5'),-RealNumber('0.5')) >>> a1 = hyperbolic_arc(z1, z2, model='PD', color='red') >>> a2 = hyperbolic_arc(z3, z4, model='PD', color='green') >>> a3 = hyperbolic_arc(z5, z6, model='PD', linestyle='--') >>> a1 + a2 + a3 Graphics object consisting of 6 graphics primitives - We show the arcs defined by the same endpoints in the Klein disk model (note that these are not the image of those arcs when changing between the models): - sage: a1 = hyperbolic_arc(z1, z2, model='KM', color='red') sage: a2 = hyperbolic_arc(z3, z4, model='KM', color='green') sage: a3 = hyperbolic_arc(z5, z6, model='KM', linestyle='--') sage: a1 + a2 + a3 Graphics object consisting of 6 graphics primitives - >>> from sage.all import * >>> a1 = hyperbolic_arc(z1, z2, model='KM', color='red') >>> a2 = hyperbolic_arc(z3, z4, model='KM', color='green') >>> a3 = hyperbolic_arc(z5, z6, model='KM', linestyle='--') >>> a1 + a2 + a3 Graphics object consisting of 6 graphics primitives - Show a hyperbolic arc from \((1,2,\sqrt(6))\) to \((-2,-3,\sqrt(14))\) in the hyperboloid model: - sage: a = (1,2,sqrt(6)) sage: b = (-2,-3,sqrt(14)) sage: hyperbolic_arc(a, b, model='HM') Graphics3d Object - >>> from sage.all import * >>> a = (Integer(1),Integer(2),sqrt(Integer(6))) >>> b = (-Integer(2),-Integer(3),sqrt(Integer(14))) >>> hyperbolic_arc(a, b, model='HM') Graphics3d Object