interval_exchange_transformation#

Initialize self. See help(type(self)) for accurate signature.

class flatsurf.geometry.interval_exchange_transformation.FlowPolygonMap(ring, bot_labels, bot_lengths, top_labels, top_lengths)[source]#

The map obtained as the return map of the flow on the sides of a (convex) polygon.

Formally, this can be defined as follows: one start with two partition into (finitely many) intervals of a given interval. The map corresponds to changing from the first partition to the second. In other words, points are identified as pairs (i, x) where i is an atom and x is the relative position in this atom.

Contrarily to an interval exchange transformation, things here are going from bottom to top.

Note that this could also be used for homothetic surfaces. And to some extent to half translation surface.

EXAMPLES:

sage: from flatsurf.geometry.interval_exchange_transformation import FlowPolygonMap
sage: T = FlowPolygonMap(QQ, [0,1,2], [2,3,1], [2,1,0], [1,3,2])
sage: [T.forward_image(0,x) for x in range(3)]
[(2, 0), (1, 0), (1, 1)]
sage: [T.forward_image(1,x) for x in range(4)]
[(1, 1), (1, 2), (0, 0), (0, 1)]
sage: [T.forward_image(2,x) for x in range(1)]
[(0, 1)]
backward_image(i, x)[source]#

EXAMPLES:

sage: from flatsurf.geometry.interval_exchange_transformation import \
....:     FlowPolygonMap

sage: x = polygen(ZZ)
sage: K.<sqrt2> = NumberField(x^2 - 2, embedding=AA(2).sqrt())

sage: T = FlowPolygonMap(K, [0,1,2],
....:       [sqrt2,1+sqrt2,1], [2,0,1], [1,sqrt2,1+sqrt2])
sage: T.backward_image(*T.forward_image(1, 1))
(1, 1)
sage: T.backward_image(*T.forward_image(0, 1))
(0, 1)
sage: T.backward_image(*T.forward_image(0, sqrt2-1))
(0, sqrt2 - 1)
sage: T.backward_image(*T.forward_image(1, sqrt2-1))
(1, sqrt2 - 1)

Singularities are always sent to a (i,0):

sage: T = FlowPolygonMap(QQ, [2,3,4], [1,1,1], [0,1], [2,1])
sage: T.backward_image(0, 0)
(2, 0)
sage: T.backward_image(0, 1)  # could have equally been (2, 1)
(3, 0)
forward_image(i, x)[source]#

Return the forward image.

EXAMPLES:

sage: from flatsurf.geometry.interval_exchange_transformation import FlowPolygonMap

Singularities are always sent to a (i,0):

sage: T = FlowPolygonMap(QQ, [0,1], [2,1], [2,3,4], [1,1,1])
sage: T.forward_image(0, 0)
(2, 0)
sage: T.forward_image(0, 1)  # could have equally been (2, 1)
(3, 0)
length_bot(i)[source]#
length_top(i)[source]#