curver.kernel.curve module¶
A module for representing (multi)curves on triangulations.
-
class
curver.kernel.curve.
Curve
(triangulation, geometric)[source]¶ Bases:
curver.kernel.curve.MultiCurve
A MultiCurve with a single component.
-
encode_twist
(power=1)[source]¶ Return an Encoding of a right Dehn twist about this curve, raised to the given power.
-
is_isolating
()[source]¶ Return if this curve is isolating, that is, if it is non-peripheral and a component of S - self does not contain a puncture.
-
is_minimal
()[source]¶ Return whether this curve is minimal.
A curve is minimal if its weight is as small as possible.
Note that minimal ==> short.
-
is_short
()[source]¶ Return whether this lamination is short.
A lamination is short if all of its non-peripheral components are parallel to edges of the triangulation that it is defined on. This makes computing its components very easy.
-
parallel
()[source]¶ Return an edge that this curve is parallel to.
Note that this is only defined for short, non-peripheral curves.
-
relative_twisting
(b, c)[source]¶ Return the relative twisting number of b about self relative to c.
This is the number of (right) Dehn twists about self that must be applied to b in order to minimise its intersection with c.
Assumes that this curve and the given laminations intersect. This curve must be non-peripheral.
-
slope
(lamination)[source]¶ Return the slope of the given lamination about this curve.
This is a Fraction that increases by one each time a right Dehn twist about this curve is performed unless -1 <= slope <= 1.
Assumes that this curve and the given lamination intersect. This curve must be non-peripheral.
-
-
class
curver.kernel.curve.
MultiCurve
(triangulation, geometric)[source]¶ Bases:
curver.kernel.lamination.Lamination
A Lamination in which every component is a Curve.
-
encode_twist
(power=1)[source]¶ Return an Encoding of a right Dehn (multi)twist about the components of this multicurve, raised to the given power.
-
is_filling
()[source]¶ Return if this Lamination fills the surface, that is, if it intersects all curves on the surface.
- Note that this is equivalent to:
- it meets every non S_{0,3} component of the surface, and
- its boundary is peripheral.
Furthermore, if any component of this lamination is a non-peripheral curve then it cannot fill.
-
is_separating
()[source]¶ Return whether this multicurve separates S.
That is, whether S - self has more components than S.
-
topological_type
()[source]¶ Return the topological type of this multicurve.
Two multicurves are in the same mapping class group orbit if and only their topological types are equal. These are labelled graphs and so equal means ‘label isomorphic’, so we return a CurvePartitionGraph class that uses networkx.is_isomorphic to determine equality.
-