|
Size: 1681
Comment:
|
Size: 3909
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| == Flat surfaces in Sage == | = Flat surfaces in Sage = |
| Line 3: | Line 3: |
| === Introduction === | == Introduction == |
| Line 5: | Line 5: |
| For general mathematic references see the [[https://lma.homelinux.org/wiki/FlatSurfaces/FlatSurfaces|Flat surfaces wiki]]. A flat surfaces can be seen either | For general mathematic references see the [[https://lma.homelinux.org/wiki/FlatSurfaces/FlatSurfaces|Flat surfaces wiki]]. A flat surface can be seen either |
| Line 7: | Line 7: |
| * as a flat metric with no holonomy on a surface, * as a Riemann surface and a non zero Abelian (or quadratic) differential. |
* as a flat metric with no holonomy on a compact surface, * as a Riemann surface together with a non zero Abelian (or quadratic) differential, * ... |
| Line 10: | Line 11: |
| This page is aimed to be a roadmap for the implementations of various algorithm related to flat surfaces and more generally geometry of surfaces. | This page is aimed to be a roadmap for the implementations of various algorithm related to flat surfaces and more generally geometry/combinatoric/dynamic of surfaces (Mapping class group, train track, pseudo-Anosov dynamic, ...). For the moment we share the [[http://wiki.sagemath.org/combinat|sage-combinat repository]] with mercurial for the development. This project take part in the wider [[SageDynamicsProject]] == General architecture == For now the main structure is as follows * sage.combinat.flat_surfaces (which contains various generic objects) * sage.combinat.flat_surfaces.iet (for interval exchange transformations stuff) * sage.combinat.flat_surfaces.origamis (for origamis/square tiled surfaces stuff) * sage.geometry.hyperbolic_geometry (hyperbolic spaces) * sage.groups.surface_gps (abstract surface groups) Where do we put * representation of surface group into PSL(2,R) * fundamental domains of such groups / Poincare polygons / Dirichlet fundamental domains == Roadmap == === Port of other programs === * Joshua Bowman program on iso-Delaunay tessellations (written in Java) * Finish Anton Zorich port of Interval Exchange Transformations and Linear Involutions (written in Mathematica) * Anton Zorich program for computing approximation of various Lyapunov exponents (written in C and Mathematica) * Alex Eskin program for analyzing saddle connections direction in a surface (written in C++) |
| Line 22: | Line 48: |
| * hyperelliptic curves (specifying the double cover over the sphere) | * hyperelliptic curves (specifying a double cover of the sphere) |
| Line 24: | Line 50: |
| Line 26: | Line 52: |
| * switch between representations (the one where everybody can be converted is triangulated flat surface) * computing fundamental group and homology * maps between flat surfaces * action of SL(2,R) and isomorphisms |
* switch between representations (the one to which everybody can be converted is triangulated flat surface) * computing fundamental group and relative homology and homology (as well as functors between them) * maps between flat surfaces (and functors to fundamental group and homologies) * action of SL(2,R) and isomorphisms (and functors) * Siegel Veech constants * Lyapunov exponents === Surface Group === They are needed from two point of vue: the group of the surface itself and its stabilizer under SL(2,R) or PSL(2,R) action. There must be some software for dealing with surface group. We need to look at * [[http://www.warwick.ac.uk/~mareg/download/kbmag2/|kbmag]]: Knuth-Bendix in Monoids and Automatic Groups implemented by Derek Holt |
| Line 32: | Line 66: |
| * the three 2D models: hyperbolic plane '''HH''', hyperbolic disc '''DD''' and the hyperboloïd * polygonal domains * tesselations (covering of HH by finite area convex polygonal domains) * Fuchsian groups and fundamental domains |
This part is roughly implemented in [[http://trac.sagemath.org/sage_trac/ticket/9439|trac #9439]] * the three 2D models: hyperbolic plane, hyperbolic disc and the hyperboloïd * points, geodesics and polygonal domains * tessellations (covering of HH by finite area convex polygonal domains) * Fuchsian groups, their fundamental domains and their associated tessellations The [[http://egl.math.umd.edu/|Experimental Geometry Lab]] (university of Maryland) published a lot of Mathematica package/worksheets to deal with Kleinian adn Fuchsian groups, hyperbolic tessellations, etc... |
Flat surfaces in Sage
Introduction
For general mathematic references see the Flat surfaces wiki. A flat surface can be seen either
- as a union of polygons glued along pairs of parallel sides,
- as a flat metric with no holonomy on a compact surface,
- as a Riemann surface together with a non zero Abelian (or quadratic) differential,
- ...
This page is aimed to be a roadmap for the implementations of various algorithm related to flat surfaces and more generally geometry/combinatoric/dynamic of surfaces (Mapping class group, train track, pseudo-Anosov dynamic, ...). For the moment we share the sage-combinat repository with mercurial for the development.
This project take part in the wider SageDynamicsProject
General architecture
For now the main structure is as follows
- sage.combinat.flat_surfaces (which contains various generic objects)
- sage.combinat.flat_surfaces.iet (for interval exchange transformations stuff)
- sage.combinat.flat_surfaces.origamis (for origamis/square tiled surfaces stuff)
- sage.geometry.hyperbolic_geometry (hyperbolic spaces)
- sage.groups.surface_gps (abstract surface groups)
Where do we put
- representation of surface group into PSL(2,R)
- fundamental domains of such groups / Poincare polygons / Dirichlet fundamental domains
Roadmap
Port of other programs
- Joshua Bowman program on iso-Delaunay tessellations (written in Java)
- Finish Anton Zorich port of Interval Exchange Transformations and Linear Involutions (written in Mathematica)
- Anton Zorich program for computing approximation of various Lyapunov exponents (written in C and Mathematica)
- Alex Eskin program for analyzing saddle connections direction in a surface (written in C++)
Different representations/implementations for flat surfaces
- (convex) polygonal surface
- rectangulated surface
- suspension of iet (and li) (almost in Sage)
- Thurston-Veech construction
- triangulated surface
- Delaunay surface (?)
- rectangulated surface
- Algebraic curve with Abelian or quadratic differential
- Coverings (make it relative)... need to implement maps between translation surfaces
- square tiled surfaces/origamis (covering of the torus) (almost in Sage)
- hyperelliptic curves (specifying a double cover of the sphere)
- Unfoldings of rational billiards
Needed generic methods
- switch between representations (the one to which everybody can be converted is triangulated flat surface)
- computing fundamental group and relative homology and homology (as well as functors between them)
- maps between flat surfaces (and functors to fundamental group and homologies)
- action of SL(2,R) and isomorphisms (and functors)
- Siegel Veech constants
- Lyapunov exponents
Surface Group
They are needed from two point of vue: the group of the surface itself and its stabilizer under SL(2,R) or PSL(2,R) action. There must be some software for dealing with surface group. We need to look at
kbmag: Knuth-Bendix in Monoids and Automatic Groups implemented by Derek Holt
Hyperbolic geometry
This part is roughly implemented in trac #9439
- the three 2D models: hyperbolic plane, hyperbolic disc and the hyperboloïd
- points, geodesics and polygonal domains
- tessellations (covering of HH by finite area convex polygonal domains)
- Fuchsian groups, their fundamental domains and their associated tessellations
The Experimental Geometry Lab (university of Maryland) published a lot of Mathematica package/worksheets to deal with Kleinian adn Fuchsian groups, hyperbolic tessellations, etc...
