Initial version by Pat Hooper whooper@ccny.cuny.edu, Dec 16, 2017.
In [1]:
from flatsurf import *
In [2]:
s = translation_surfaces.veech_double_n_gon(5)
In [3]:
s.plot()
Out[3]:
Defines the tangent_bundle on the surface defined over the base_ring of s.
In [4]:
TB = s.tangent_bundle()
In [5]:
baricenter = sum(s.polygon(0).vertices())/5
Define the tangent vector based at the baricenter of polygon 0 aimed downward.
In [6]:
v = TB(0, baricenter, (0,-1))
Convert to a straight-line trajectory. Trajectories are unions of segments in polygons.
In [7]:
traj = v.straight_line_trajectory()
In [8]:
s.plot()+traj.plot()
Out[8]:
Flow into the next $100$ polygons or until the trajectory hits a vertex.
In [9]:
traj.flow(100)
In [10]:
s.plot()+traj.plot()
Out[10]:
We can tell its type.
In [11]:
traj.is_saddle_connection()
Out[11]:
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.
In [12]:
v = TB(0, baricenter, (1,1))
In [13]:
traj=v.straight_line_trajectory()
In [14]:
traj.flow(100)
In [15]:
s.plot()+traj.plot()
Out[15]:
We remark that it follows from work of Veech that the slope one direction is ergodic for the straight-line flow.