Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
""" Polygons and triangles in hyperbolic geometry
AUTHORS:
- Hartmut Monien (2011-08) - Vincent Delecroix (2014-11) """ #***************************************************************************** # Copyright (C) 2011 Hartmut Monien <monien@th.physik.uni-bonn.de>, # 2014 Vincent Delecroix <20100.delecroix@gmail.com>, # 2015 Stefan Kraemer <skraemer@th.physik.uni-bonn.de> # # Distributed under the terms of the GNU General Public License (GPL) # # This code is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # The full text of the GPL is available at: # # http://www.gnu.org/licenses/ #***************************************************************************** from __future__ import print_function
from sage.plot.bezier_path import BezierPath from sage.plot.misc import options, rename_keyword from sage.rings.all import CC
class HyperbolicPolygon(BezierPath): """ Primitive class for hyberbolic polygon type.
See ``hyperbolic_polygon?`` for information about plotting a hyperbolic polygon in the complex plane.
INPUT:
- ``pts`` -- coordinates of the polygon (as complex numbers)
- ``options`` -- dict of valid plot options to pass to constructor
EXAMPLES:
Note that constructions should use :func:`hyperbolic_polygon` or :func:`hyperbolic_triangle`::
sage: from sage.plot.hyperbolic_polygon import HyperbolicPolygon sage: print(HyperbolicPolygon([0, 1/2, I], {})) Hyperbolic polygon (0.000000000000000, 0.500000000000000, 1.00000000000000*I) """ def __init__(self, pts, options): """ Initialize HyperbolicPolygon.
EXAMPLES::
sage: from sage.plot.hyperbolic_polygon import HyperbolicPolygon sage: print(HyperbolicPolygon([0, 1/2, I], {})) Hyperbolic polygon (0.000000000000000, 0.500000000000000, 1.00000000000000*I) """
def _repr_(self): """ String representation of HyperbolicPolygon.
TESTS::
sage: from sage.plot.hyperbolic_polygon import HyperbolicPolygon sage: HyperbolicPolygon([0, 1/2, I], {})._repr_() 'Hyperbolic polygon (0.000000000000000, 0.500000000000000, 1.00000000000000*I)' """
def _hyperbolic_arc(self, z0, z3, first=False): """ Function to construct Bezier path as an approximation to the hyperbolic arc between the complex numbers z0 and z3 in the hyperbolic plane. """
else: (z1.real(), z1.imag()), (z2.real(), z2.imag()), (z3.real(), z3.imag())]) else: (z2.real(), z2.imag()), (z3.real(), z3.imag())])
@rename_keyword(color='rgbcolor') @options(alpha=1, fill=False, thickness=1, rgbcolor="blue", zorder=2, linestyle='solid') def hyperbolic_polygon(pts, **options): r""" Return a hyperbolic polygon in the hyperbolic plane with vertices ``pts``.
Type ``?hyperbolic_polygon`` to see all options.
INPUT:
- ``pts`` -- a list or tuple of complex numbers
OPTIONS:
- ``alpha`` -- default: 1
- ``fill`` -- default: ``False``
- ``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 polygon with coordinates `-1`, `3i`, `2+2i`, `1+i`::
sage: hyperbolic_polygon([-1,3*I,2+2*I,1+I]) Graphics object consisting of 1 graphics primitive
.. PLOT::
P = hyperbolic_polygon([-1,3*I,2+2*I,1+I]) sphinx_plot(P)
With more options::
sage: hyperbolic_polygon([-1,3*I,2+2*I,1+I], fill=True, color='red') Graphics object consisting of 1 graphics primitive
.. PLOT::
P = hyperbolic_polygon([-1,3*I,2+2*I,1+I], fill=True, color='red') sphinx_plot(P)
"""
def hyperbolic_triangle(a, b, c, **options): """ Return a hyperbolic triangle in the hyperbolic plane with vertices ``(a,b,c)``.
Type ``?hyperbolic_polygon`` to see all options.
INPUT:
- ``a, b, c`` -- complex numbers in the upper half complex plane
OPTIONS:
- ``alpha`` -- default: 1
- ``fill`` -- default: ``False``
- ``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 triangle with coordinates `0, 1/2+i\sqrt{3}/2` and `-1/2+i\sqrt{3}/2`::
sage: hyperbolic_triangle(0, -1/2+I*sqrt(3)/2, 1/2+I*sqrt(3)/2) Graphics object consisting of 1 graphics primitive
.. PLOT::
P = hyperbolic_triangle(0, 0.5*(-1+I*sqrt(3)), 0.5*(1+I*sqrt(3))) sphinx_plot(P)
A hyperbolic triangle with coordinates `0, 1` and `2+i` and a dashed line::
sage: hyperbolic_triangle(0, 1, 2+i, fill=true, rgbcolor='red', linestyle='--') Graphics object consisting of 1 graphics primitive
.. PLOT::
P = hyperbolic_triangle(0, 1, 2+i, fill=true, rgbcolor='red', linestyle='--') sphinx_plot(P)
""" |