curver.kernel.lamination.Lamination

class curver.kernel.lamination.Lamination(triangulation, geometric)[source]

Bases: object

This represents a lamination on a triangulation.

Users should create these via Triangulation(…) or Triangulation.lamination(…).

dual_weight(edge)[source]

Return the number of component of this lamination dual to the given edge.

Note that when there is a terminal normal arc then we record this weight with a negative sign.

is_empty()[source]

Return whether this lamination has no components.

is_integral()[source]

Return whether this lamination is integral.

is_non_peripheral()[source]

Return whether this lamination does not have any peripheral components.

is_peripheral()[source]

Return whether this lamination consists entirely of peripheral components.

left_weight(edge)[source]

Return the number of component of this lamination dual to the left of the given edge.

Note that when there is a terminal normal arc then we record this weight with a negative sign.

non_peripheral(promote=True)[source]

Return the lamination consisting of the non-peripheral components of this Lamination.

parallel_components()[source]

Return a dictionary mapping component to (multiplicity, edge) for each component of self that is parallel to an edge.

peripheral(promote=True)[source]

Return the lamination consisting of the peripheral components of this Lamination.

peripheral_components()[source]

Return a dictionary mapping component to (multiplicity, vertex) for each component of self that is peripheral around a vertex.

promote()[source]

Return this lamination in its finest form.

right_weight(edge)[source]

Return the number of component of this lamination dual to the right the given edge.

Note that when there is a terminal normal arc then we record this weight with a negative sign.

trace_curve(edge, intersection, max_length)[source]

Return the curve obtained by following along this lamination and closing up when you get back to this edge.

We start at the given edge and intersection point and only go for at most max_length. A ValueError is raised if:

  • we do not get back to the starting edge within this number of steps,
  • the lamination terminates into a vertex, or
  • upon returning to start_edge we cannot close up without creating intersections.
weight()[source]

Return the geometric intersection of this lamination with its underlying triangulation.