cone_surfaces#

The category of cone surfaces.

A cone surface is a surface that can be built by gluing Euclidean polygons along their edges such that the matrix describing monodromy along a closed path is an isometry; that matrix is given by multiplying the individual matrices that describe how to transition between pairs of glued edges, see edge_matrix().

In sage-flatsurf, we restrict cone surfaces slightly by requiring that a cone surface is given by polygons such that each edge matrix is an isometry.

See flatsurf.geometry.categories for a general description of the category framework in sage-flatsurf.

Normally, you won’t create this (or any other) category directly. The correct category is automatically determined for immutable surfaces.

EXAMPLES:

We glue the sides of a square with a rotation of π/2. Since each gluing is just a rotation, this is a cone surface:

sage: from flatsurf import Polygon, MutableOrientedSimilaritySurface
sage: P = Polygon(vertices=[(0,0), (1,0), (1,1), (0,1)])
sage: S = MutableOrientedSimilaritySurface(QQ)
sage: S.add_polygon(P, label=0)
0
sage: S.glue((0, 0), (0, 1))
sage: S.glue((0, 2), (0, 3))
sage: S.set_immutable()

sage: C = S.category()

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: C.is_subcategory(ConeSurfaces())
True
class flatsurf.geometry.categories.cone_surfaces.ConeSurfaces[source]#

The category of surfaces built by gluing (Euclidean) polygons with isometries on the edges.

See cone_surfaces and is_cone_surface() on how this differs slightly from the customary definition of a cone surface.

EXAMPLES:

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: ConeSurfaces()
Category of cone surfaces
class FiniteType(base_category)[source]#

The category of cone surfaces built from finitely many polygons.

EXAMPLES:

sage: from flatsurf import Polygon, similarity_surfaces
sage: P = Polygon(edges=[(2, 0),(-1, 3),(-1, -3)])
sage: S = similarity_surfaces.self_glued_polygon(P)

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: S in ConeSurfaces().FiniteType()
True
class Oriented(base_category)[source]#

The category of oriented cone surfaces, i.e., orientable cone surfaces whose orientation can be chosen to be compatible with the embedding of its polygons in the real plane.

EXAMPLES:

sage: from flatsurf import Polygon, similarity_surfaces
sage: P = Polygon(edges=[(2, 0),(-1, 3),(-1, -3)])
sage: S = similarity_surfaces.self_glued_polygon(P)

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: S in ConeSurfaces().Oriented()
True
class ParentMethods[source]#

Provides methods available to all oriented cone surfaces.

If you want to add functionality for such surfaces you most likely want to put it here.

class WithoutBoundary(base_category)[source]#

The category of oriented cone surfaces without boundary.

EXAMPLES:

sage: from flatsurf import Polygon, similarity_surfaces
sage: P = Polygon(edges=[(2, 0),(-1, 3),(-1, -3)])
sage: S = similarity_surfaces.self_glued_polygon(P)

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: S in ConeSurfaces().Oriented().WithoutBoundary()
True
class Connected(base_category)[source]#

The category of oriented connected cone surfaces without boundary.

EXAMPLES:

sage: from flatsurf import Polygon, similarity_surfaces
sage: P = Polygon(edges=[(2, 0),(-1, 3),(-1, -3)])
sage: S = similarity_surfaces.self_glued_polygon(P)

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: S in ConeSurfaces().Oriented().Connected()
True
class ParentMethods[source]#

Provides methods available to all oriented connected cone surfaces without boundary.

If you want to add functionality for such surfaces you most likely want to put it here.

class ParentMethods[source]#

Provides methods available to all oriented cone surfaces without boundary.

If you want to add functionality for such surfaces you most likely want to put it here.

angles(numerical=False, return_adjacent_edges=False)[source]#

Return the set of angles around the vertices of the surface.

EXAMPLES:

sage: from flatsurf import polygons, similarity_surfaces
sage: T = polygons.triangle(3, 4, 5)
sage: S = similarity_surfaces.billiard(T)
sage: S.angles()
[1/3, 1/4, 5/12]
sage: S.angles(numerical=True)   # abs tol 1e-14
[0.333333333333333, 0.250000000000000, 0.416666666666667]

sage: S.angles(return_adjacent_edges=True)
[(1/3, [(0, 1), (1, 2)]), (1/4, [(0, 0), (1, 0)]), (5/12, [(1, 1), (0, 2)])]
class ParentMethods[source]#

Provides methods available to all cone surfaces built from finitely many polygons.

If you want to add functionality for such surfaces you most likely want to put it here.

area()[source]#

Return the area of this surface.

EXAMPLES:

sage: from flatsurf import Polygon, similarity_surfaces
sage: P = Polygon(edges=[(2, 0),(-1, 3),(-1, -3)])
sage: S = similarity_surfaces.self_glued_polygon(P)
sage: S.area()
3
class ParentMethods[source]#

Provides methods available to all cone surfaces.

If you want to add functionality for such surfaces you most likely want to put it here.

is_cone_surface()[source]#

Return whether this surface is a cone surface, i.e., whether its edges are glued by isometries.

Note

This is a stronger requirement than the usual definition of a cone surface, see cone_surfaces for details.

EXAMPLES:

sage: from flatsurf import translation_surfaces
sage: S = translation_surfaces.infinite_staircase()
sage: S.is_cone_surface()
True
super_categories()[source]#

Return the categories that a cone surfaces is also always a member of.

EXAMPLES:

sage: from flatsurf.geometry.categories import ConeSurfaces
sage: ConeSurfaces().super_categories()
[Category of similarity surfaces]