Polygonal paths #
A polygonal path is carried by a list of vertices; its poly carrier is the union of the
segments joining consecutive entries. This is the combinatorial representation the whole
of Part I works with — by the blueprint's polygonal overlay convention only finite
polygonal objects are ever overlaid, so vertex lists, not parametrizations, are the
primitive.
Blueprint #
poly— the carrier of a polygonal path.exists_poly_of_isPreconnected— Lemma 1.1 (polygonal connectedness), less the passage to a simple arc, which needs the finite-graph machinery and is proved with Lemma 1.2.
Segments #
The carrier of a vertex list #
The carrier of a polygonal path: the union of the segments joining consecutive vertices. A single vertex carries itself, so that a path may be constant.
Equations
- Schoenflies.poly [] = ∅
- Schoenflies.poly [v] = {v}
- Schoenflies.poly (u :: v :: rest) = segment ℝ u v ∪ Schoenflies.poly (v :: rest)
Instances For
The carrier of a nonempty vertex list is connected: consecutive segments share a vertex.
Polygonal connectedness #
Lemma 1.1 (polygonal connectedness), existence half. Any two points of a region are joined in it by a polygonal path.
The blueprint goes on to make the path simple, by subdividing at self-intersections and taking a simple path in the resulting finite graph; that half is deferred to the graph module, where the subdivision procedure is available.
Concatenating two vertex lists that agree at the join concatenates their carriers. The
hypothesis is what makes this true: without it poly [a] ∪ poly [b] = {a, b} misses the segment
that poly [a, b] carries.