Polygonal sets, and segments as arcs #
IsPolygonal is the blueprint's set-level predicate: a finite union of line segments, which
here is exactly the carrier of some vertex list.
The theorem the plane-graph layer needs from this module is isArcBetween_segment: a
nondegenerate segment is an arc between its endpoints. It is what makes the drawing
condition free for a polygonal plane graph — an edge's arc obligation is discharged by the
segment itself, and the distinctness of its ends is already part of well-formedness.
Blueprint #
IsPolygonal— §1, "an arc or curve is polygonal if it is a finite union of line segments".isArcBetween_segment— a nondegenerate segment is an arc between its endpoints.
A set is polygonal when it is the carrier of a finite vertex list, that is, a finite union of line segments.
Equations
- Schoenflies.IsPolygonal A = ∃ (vs : List Schoenflies.Plane), A = Schoenflies.poly vs
Instances For
lineMap a b is injective on the unit interval exactly when the segment is
nondegenerate: two parameters differ by a multiple of b - a. Exposed separately because the
plane-graph drawing condition asks for the parametrization, not just its image.
A nondegenerate segment is an arc between its endpoints, parametrized by
AffineMap.lineMap a b.
A polygonal set is carried by a vertex list running from any of its points to any other.
The list is written with its two ends displayed, so no List.head/List.getLast obligations
appear.
Two polygonal sets that meet have a polygonal union. Anchor both lists at a common point and concatenate.