Polygonal joining ears for boundary-touching source crosscuts #
When both ends of the auxiliary face crosscut lie on the wild outer curve, deleting that curve
separates the crosscut/grid carrier from the old nonboundary source carrier. The last step of
prop:local-grid-attachment joins those two carriers by a simple polygonal arc in the open
source domain.
This module begins with the finite inner construction: re-overlay the already-subdivided source
core, crosscut, and grid together with the joining segments, retaining every old inner vertex.
OverlayExtension then supplies the plane-subdivision certificate automatically.
Two edge-disjoint subgraphs of one plane drawing can meet only at vertices common to both. This is the converse interface used when an already-plane union is re-subdivided on one side.
Re-overlay the complete auxiliary-crosscut inner graph together with a list of polygonal joining segments.
Equations
- Q.joinedCrosscutOverlay J p s epsilon extra joins = Schoenflies.extendOverlay (Q.crosscutPieces J p s epsilon) (extra ++ P.sourceNonboundaryGraph.vertexFinset.toList) joins
Instances For
The joined inner overlay occupies exactly the old core/crosscut/grid carrier together with the polygonal joining carrier.
The joined inner overlay is a finite straight-line plane graph.
Every vertex of the core/crosscut/grid overlay survives the joining re-overlay.
The joined inner overlay is a plane subdivision extension of the complete old inner crosscut overlay.
Every old inner edge is absorbed by its subdivision in the joined overlay.
A joined-overlay edge meeting the joining carrier away from overlay vertices is absorbed by that carrier.
Every endpoint of a joining segment is a vertex of the joined inner overlay.
Fresh relabelling and the wild outer graph #
Fresh abstract edge names for the joined inner overlay.
- name : Piece → γ
Fresh names for the overlay after adding the joining segments.
- name_inj : Set.InjOn self.name (Q.joinedCrosscutOverlay J p s epsilon extra joins).edgeSet
Instances For
An infinite cell-name type supplies fresh names for the joined overlay.
The unchanged mapped wild outer graph.
Equations
- _u.outerGraph = Graph.map P.src.pos P.str.outerGraph
Instances For
The freshly relabelled joined inner overlay.
Equations
- u.innerGraph = (Q.joinedCrosscutOverlay J p s epsilon extra joins).relabelEdges u.name ⋯
Instances For
The mixed graph after adjoining the polygonal join.
Equations
- u.graph = u.outerGraph.union u.innerGraph
Instances For
The joined drawing keeps the wild outer parametrizations and draws every inner edge as a straight segment.
Equations
- u.drawing e = if e ∈ P.str.outerGraph.edgeSet then P.src.drawing e else (Q.joinedCrosscutOverlay J p s epsilon extra joins).relabelDrawing u.name Schoenflies.segmentDrawing e
Instances For
The joined inner overlay remains plane when every joining segment lies in the open source domain.
The joined mixed graph is finite.
Exact carrier of the joined mixed graph.
Every vertex of the old mixed crosscut graph survives the joining re-overlay.
A new mixed edge meeting an old mixed edge away from new vertices is one of that old edge's subdivision pieces.
The joined mixed graph is a plane subdivision extension of the complete old mixed graph.
The exact trace of the old mixed carrier remains 2-connected in the joined graph.
Every endpoint of a joining segment is a vertex of the joined mixed graph.
The complete polygonal joining carrier lies in the joined mixed graph.
A joined mixed edge meeting the polygonal joining carrier away from mixed vertices is absorbed by that carrier.
The trace supported on the polygonal joining carrier occupies that carrier exactly.
An arc presented by the joining pieces is the exact carrier of a path in the joined mixed graph.
Attaching a polygonal joining arc between two old-carrier points makes the entire joined mixed graph 2-connected.
The joined graph remains a plane subdivision extension of the complete old source drawing.
The joined graph stays in the closed source domain.
Every joined inner edge is cut either from an old core/crosscut/grid edge or from one of the polygonal joining segments.
Every joined mixed edge either lies on the wild outer curve or is polygonal with all nonvertex points in the open source domain.
A joined edge meeting an old source cell away from joined vertices is absorbed by that old source edge.
A join running from the open crosscut to the old nonboundary source carrier makes the joined carrier connected after deletion of the wild outer curve.
The joined construction is a complete source extension.
The complete output of the boundary-crosscut joining construction.
- oldOverlay : RefinedCrosscutOverlayData r p s epsilon
Crosscut overlay before joining its components.
Polygonal segments joining the nonboundary components.
- joinedRelabeling : SourceNonboundarySegmentCover.JoinedCrosscutOverlayRelabeling self.oldOverlay.relabeling self.joins
Cell names for the overlay including the joining segments.
- isSourceExtension : IsSourceExtension r.subdivision.pair.src srcOuter srcDom self.joinedRelabeling.graph self.joinedRelabeling.drawing
- localGrid_subset : (localGrid p s (localGridCount s epsilon)).pointSet segmentDrawing ⊆ self.joinedRelabeling.graph.pointSet self.joinedRelabeling.drawing
Instances For
Construct the manuscript's final polygonal component-joining ear. A midpoint of the open crosscut and a point of the connected old nonboundary carrier lie in the same open connected source domain, so polygonal connectedness supplies a simple joining arc. Re-overlaying its segments and attaching its exact trace gives a complete local-grid source extension even when both crosscut endpoints lie on the wild outer curve.
Complete the boundary-touching local-grid attachment starting only from a bounded source face and a grid edge whose relative interior lies on a line through that face. The preliminary matched subdivision preserves the old source carrier, so connectedness of the original nonboundary source graph is exactly the connectedness needed by the polygonal joining step.
In the actual Schönflies source domain, the hypotheses needed to draw the final joining arc are automatic consequences of Jordan separation: the closed domain minus its boundary is the connected open inside region.
The relative interiors of a local grid's bottom and top leftmost edges are disjoint.
If the complete source/grid intersection has at most one point, at least one of two opposite horizontal grid edges has relative interior disjoint from the source skeleton.
In the two-common-point branch, retaining those points explicitly in the raw source/grid overlay gives the complete local-grid source extension directly.
A raw grid edge whose open segment misses the current source skeleton lies in one bounded source face. Thus it supplies all of the face-selection data required by the auxiliary crosscut and joining construction.
The at-most-one-common-point branch automatically supplies a skeleton-disjoint grid edge, so the completed face-crosscut and joining construction applies without further choices.
Exhaustive local-grid attachment. With two distinct source/grid intersection points the raw overlay extends the current pair directly. Otherwise a raw grid edge misses the skeleton in its relative interior, and a matched endpoint subdivision followed by the crosscut and polygonal joining ears produces the extension.
A matched finite source-skeleton subdivision is already a stage transition.
The uniform stage-level output of local-grid attachment, after running forward finite transfer. Both geometric branches now return one generated refinement of the original pair, with admissibility restored and the complete raw local grid in its source skeleton.
- pair : GeneratedPair S₀ C (C ∪ inside C) tgtOuter tgtDom
Generated matched pair after the local-grid transfer.
- parent : γ → γ
Parent cell of each cell in the refinement.
- transition : StageTransition self.pair P self.parent
- src_isAdmissible : self.pair.src.IsAdmissible C (C ∪ inside C)
- tgt_isAdmissible : self.pair.tgt.IsAdmissible tgtOuter tgtDom
- localGrid_subset : (localGrid p s (localGridCount s epsilon)).pointSet segmentDrawing ⊆ self.pair.src.skeletonSet
Instances For
Local-grid forward successor. The source/grid intersection dichotomy, the auxiliary face crosscut, endpoint subdivisions, polygonal joining ear, and forward finite transfer are all internal.