Straight-Line Flow

Straight-Line Flow#

Acting on surfaces by matrices.#

from flatsurf import translation_surfaces

s = translation_surfaces.veech_double_n_gon(5)
s.plot()
../_images/cac7b694f6cfa24444f865033d0c6192e91e23165df0934c302c9fc080b22108.png

Defines the tangent_bundle on the surface defined over the base_ring of s.

TB = s.tangent_bundle()
baricenter = sum(s.polygon(0).vertices()) / 5

Define the tangent vector based at the baricenter of polygon 0 aimed downward.

v = TB(0, baricenter, (0, -1))

Convert to a straight-line trajectory. Trajectories are unions of segments in polygons.

traj = v.straight_line_trajectory()
s.plot() + traj.plot()
../_images/e014d74ff5a2fccd58d5076e48173533f37b34be179d3cc34b9eb2571310b82a.png

Flow into the next \(100\) polygons or until the trajectory hits a vertex.

traj.flow(100)
s.plot() + traj.plot()
../_images/dc4be57a98f2e3c461f9a6676e1b78a31b4b85601d8cce96b49f540aa6d816bf.png

We can tell its type.

traj.is_saddle_connection()
True

You can also test if a straight-line trajectory is closed or a forward/backward separatrix.

Lets do it again but in the slope one direction.

v = TB(0, baricenter, (1, 1))
traj = v.straight_line_trajectory()
traj.flow(100)
s.plot() + traj.plot()
../_images/275029d87d023ecdae9d307d2c4fa6ba3df502bbc5ffd8f3308d1edf92ea90a7.png

We remark that it follows from work of Veech that the slope one direction is ergodic for the straight-line flow.