l_infinity_delaunay_cells
¶
Cells for the L-infinity Delaunay triangulation.
Each cell of the L-infinity Delaunay triangulation can be identified with a marked triangulation. The marking corresponds to the position of the horizontal and vertical separatrices. Each triangle hence get one of the following types: bottom-left, bottom-right, top-left, top-right.
- class flatsurf.geometry.l_infinity_delaunay_cells.LInfinityMarkedTriangulation(num_faces, edge_identifications, edge_types, check=True)[source]¶
EXAMPLES:
sage: from flatsurf.geometry.l_infinity_delaunay_cells import \ ....: V_NONE, V_BOT, V_TOP, V_RIGHT, V_LEFT, LInfinityMarkedTriangulation sage: gluings = {(0,0):(1,2), (1,2):(0,0), (0,1):(1,0), (1,0):(0,1), ....: (0,2):(1,1), (1,1):(0,2)} sage: types = [(V_BOT, V_NONE, V_RIGHT), (V_NONE, V_LEFT, V_TOP)] sage: T = LInfinityMarkedTriangulation(2, gluings, types)
- barycenter()[source]¶
Return the translation surface in the barycenter of this polytope.
EXAMPLES:
sage: from flatsurf.geometry.l_infinity_delaunay_cells import \ ....: V_NONE, V_BOT, V_TOP, V_RIGHT, V_LEFT, LInfinityMarkedTriangulation sage: gluings = {(0,0):(1,2), (1,2):(0,0), (0,1):(1,0), (1,0):(0,1), ....: (0,2):(1,1), (1,1):(0,2)} sage: types = [(V_BOT, V_NONE, V_LEFT), (V_NONE, V_RIGHT, V_TOP)] sage: T = LInfinityMarkedTriangulation(2, gluings, types) sage: S = T.barycenter() sage: S.polygon(0) Polygon(vertices=[(0, 0), (3/7, 13/21), (-3/7, 11/21)]) sage: S.polygon(1) Polygon(vertices=[(0, 0), (6/7, 2/21), (3/7, 13/21)])
- bottom_top_pairs()[source]¶
Return a list
(p1,e1,p2,e2)
.EXAMPLES:
sage: from flatsurf.geometry.l_infinity_delaunay_cells import \ ....: V_NONE, V_BOT, V_TOP, V_RIGHT, V_LEFT, LInfinityMarkedTriangulation sage: gluings = {(0,0):(1,2), (1,2):(0,0), (0,1):(1,0), (1,0):(0,1), ....: (0,2):(1,1), (1,1):(0,2)} sage: types = [(V_BOT, V_NONE, V_RIGHT), (V_NONE, V_LEFT, V_TOP)] sage: T = LInfinityMarkedTriangulation(2, gluings, types) sage: T.bottom_top_pairs() [(0, 0, 1, 2)]
- polytope()[source]¶
Each edge correspond to a vector in RR^2 (identified to CC)
We assign the following coordinates
(p,e) -> real part at 2*(3*p + e) and imag part at 2*(3*p + e) + 1
The return polyhedron is compact as we fix each side to be of L-infinity length less than 1.
- right_left_pairs()[source]¶
Return a list
(p1,e1,p2,e2)
EXAMPLES:
sage: from flatsurf.geometry.l_infinity_delaunay_cells import \ ....: V_NONE, V_BOT, V_TOP, V_RIGHT, V_LEFT, LInfinityMarkedTriangulation sage: gluings = {(0,0):(1,2), (1,2):(0,0), (0,1):(1,0), (1,0):(0,1), ....: (0,2):(1,1), (1,1):(0,2)} sage: types = [(V_BOT, V_NONE, V_LEFT), (V_NONE, V_RIGHT, V_TOP)] sage: T = LInfinityMarkedTriangulation(2, gluings, types) sage: T.right_left_pairs() [(1, 1, 0, 2)]
- flatsurf.geometry.l_infinity_delaunay_cells.bottom_top_delaunay_condition(dim, p1, e1, p2, e2)[source]¶
Delaunay condition for bottom-top pairs of triangles
- flatsurf.geometry.l_infinity_delaunay_cells.opposite_condition(dim, i, j)[source]¶
encode the equality \(x_i = -x_j\)
EXAMPLES:
sage: from flatsurf.geometry.l_infinity_delaunay_cells import \ ....: opposite_condition, sign_and_norm_conditions sage: eq1 = opposite_condition(2, 0, 1) sage: eq2 = opposite_condition(2, 1, 0) sage: ieqs1 = sign_and_norm_conditions(2, 0, 1) sage: ieqs2 = sign_and_norm_conditions(2, 1, -1) sage: sorted(Polyhedron(eqns=[eq1], ieqs=ieqs1).vertices_list()) [[0, 0], [1, -1]] sage: sorted(Polyhedron(eqns=[eq1,eq2], ieqs=ieqs1).vertices_list()) [[0, 0], [1, -1]] sage: sorted(Polyhedron(eqns=[eq1,eq2], ieqs=ieqs1+ieqs2).vertices_list()) [[0, 0], [1, -1]]
- flatsurf.geometry.l_infinity_delaunay_cells.right_left_delaunay_condition(dim, p1, e1, p2, e2)[source]¶
Delaunay condition for right-left pairs of triangles
- flatsurf.geometry.l_infinity_delaunay_cells.sign_and_norm_conditions(dim, i, s)[source]¶
Inequalities:
if \(s=+1\), encode the inequalities \(+1 >= x_i >= 0\) if \(s=-1\), encode the inequalities \(-1 <= x_i <= 0\)
EXAMPLES:
sage: from flatsurf.geometry.l_infinity_delaunay_cells import sign_and_norm_conditions sage: sorted(Polyhedron(ieqs=sign_and_norm_conditions(1, 0, 1)).vertices_list()) [[0], [1]] sage: sorted(Polyhedron(ieqs=sign_and_norm_conditions(1, 0, -1)).vertices_list()) [[-1], [0]] sage: ieqs = [] sage: ieqs.extend(sign_and_norm_conditions(2, 0, 1)) sage: ieqs.extend(sign_and_norm_conditions(2, 1, -1)) sage: sorted(Polyhedron(ieqs=ieqs).vertices_list()) [[0, -1], [0, 0], [1, -1], [1, 0]]