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 polygon label.

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()
pull_vector_back(tangent_vector)[source]#

Applies the inverse of the mapping to the provided vector.

push_vector_forward(tangent_vector)[source]#

Applies the mapping to the provided vector.