half_dilation_surface
#
Initialize self. See help(type(self)) for accurate signature.
- class flatsurf.geometry.half_dilation_surface.GL2RImageSurface(surface, m, ring=None, category=None)[source]#
The GL(2,R) image of an oriented similarity surface.
EXAMPLE:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: SS = r * S sage: S.canonicalize() == SS.canonicalize() True
- is_compact()[source]#
Return whether this surface is compact as a topological space.
This implements
flatsurf.geometry.categories.topological_surfaces.TopologicalSurfaces.ParentMethods.is_compact()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.is_compact() True
- is_mutable()[source]#
Return whether this surface is mutable, i.e., return
False
.This implements
flatsurf.geometry.categories.topological_surfaces.TopologicalSurfaces.ParentMethods.is_mutable()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.is_mutable() False
- is_translation_surface(positive=True)[source]#
Return whether this surface is a translation surface, i.e., glued edges can be transformed into each other by translations.
This implements
flatsurf.geometry.categories.similarity_surfaces.SimilaritySurfaces.ParentMethods.is_translation_surface()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.is_translation_surface() True
- labels()[source]#
Return the labels of this surface.
This implements
flatsurf.geometry.categories.polygonal_surfaces.PolygonalSurfaces.ParentMethods.labels()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.labels() (0, 1, 2)
- opposite_edge(p, e)[source]#
Return the polygon label and edge index when crossing over the
edge
of the polygonlabel
.This implements
flatsurf.geometry.categories.polygonal_surfaces.PolygonalSurfaces.ParentMethods.opposite_edge()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.opposite_edge(0, 0) (2, 0)
- polygon(lab)[source]#
Return the polygon with
label
.This implements
flatsurf.geometry.categories.polygonal_surfaces.PolygonalSurfaces.ParentMethods.polygon()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.polygon(0) Polygon(vertices=[(0, 0), (a, -a), (a + 2, -a), (2*a + 2, 0), (2*a + 2, 2), (a + 2, a + 2), (a, a + 2), (0, 2)])
- roots()[source]#
Return root labels for the polygons forming the connected components of this surface.
This implements
flatsurf.geometry.categories.polygonal_surfaces.PolygonalSurfaces.ParentMethods.roots()
.EXAMPLES:
sage: from flatsurf import translation_surfaces sage: S = translation_surfaces.octagon_and_squares() sage: r = matrix(ZZ,[[0, 1], [1, 0]]) sage: S = r * S sage: S.roots() (0,)
- class flatsurf.geometry.half_dilation_surface.GL2RMapping(s, m, ring=None, category=None)[source]#
This class pushes a surface forward under a matrix.
Note that for matrices of negative determinant we need to relabel edges (because edges must have a counterclockwise cyclic order). For each n-gon in the surface, we relabel edges according to the involution e mapsto n-1-e.
EXAMPLE:
sage: from flatsurf import translation_surfaces sage: s=translation_surfaces.veech_2n_gon(4) sage: from flatsurf.geometry.half_dilation_surface import GL2RMapping sage: mat=Matrix([[2,1],[1,1]]) sage: m=GL2RMapping(s,mat) sage: TestSuite(m.codomain()).run()