Auxiliary-crosscut source overlays #
A local window can miss the current skeleton, so the raw source/grid overlay need not have the
two common vertices required for 2-connectivity. The degenerate cases of
prop:local-grid-attachment add one polygonal crosscut of the containing face. This module
builds the corresponding finite straight-line inner overlay while keeping the original wild
outer curve separate.
Blueprint #
Schoenflies.SourceNonboundarySegmentCover.crosscutOverlay— the old compact nonboundary carrier, one auxiliary crosscut, and the local grid in a single exact segment overlay.crosscutOverlay_pointSet— its exact carrier.crosscutOverlay_isDrawing,crosscutOverlay_pointSet_subset, andcrosscutOverlay_edge_dichotomy— the local plane and domain geometry needed by finite transfer.
Every source face of a generated pair lies in the prescribed open source domain.
The geometric output of cutting a bounded source face along the line carrying a selected grid edge. The closed crosscut swallows that edge; its open part lies in the face and both ends lie on the old source skeleton.
- crosscut : Piece
Closed segment spanning the selected source face.
Instances For
If the selected face has no wild-boundary points on its frontier, the entire closed crosscut lies in the open source domain.
A line through the relative interior of a selected grid edge in a bounded source face produces the exact auxiliary-crosscut data used by the mixed source overlay.
The exact geometry needed to adjoin a straight crosscut to a source drawing. Its interior is disjoint from the wild boundary; an endpoint is allowed on that boundary precisely when it is already a source vertex (as happens after subdividing the endpoint into the old skeleton).
- seg_subset_domain : J.seg ⊆ srcDom
Instances For
A crosscut whose complete closed segment lies in the open domain automatically satisfies the boundary-endpoint condition.
A source vertex lying on the realized outer set is already a vertex of the mapped outer graph.
A face crosscut together with the preliminary matched subdivision that makes both of its endpoints old source vertices. This is the representation needed when either endpoint lands in the interior of a wild outer edge.
- crosscutData : SourceFaceCrosscutData P F A
Crosscut geometry before refining its endpoints.
- subdivision : P.SubdivideSetData {self.crosscutData.crosscut.1, self.crosscutData.crosscut.2}
Matched subdivision making both crosscut endpoints vertices.
- geometry : SourceCrosscutGeometry self.subdivision.pair self.crosscutData.crosscut
Instances For
Every source-face crosscut admits a matched preliminary subdivision at its two endpoints. The construction is harmless when an endpoint was already a vertex and essential when it lies inside a wild outer edge.
The source pieces after adjoining one auxiliary crosscut and one local grid.
Equations
- Q.crosscutPieces J p s epsilon = Q.pieces ++ [J] ++ Schoenflies.localGridEdges p s (Schoenflies.localGridCount s epsilon)
Instances For
The finite straight-line overlay of the old compact source core, an auxiliary crosscut, and the local grid. Old nonboundary vertices and prescribed points are retained.
Equations
- Q.crosscutOverlay J p s epsilon extra = Schoenflies.attachGraph (Q.crosscutPieces J p s epsilon) (extra ++ P.sourceNonboundaryGraph.vertexFinset.toList)
Instances For
Every source piece in the crosscut overlay is nondegenerate.
The auxiliary-crosscut overlay is a finite straight-line plane graph.
The crosscut overlay occupies exactly the old compact source carrier, the auxiliary segment, and the local grid.
The old compact source core survives in the auxiliary-crosscut overlay.
The entire auxiliary segment survives in the overlay.
The entire local grid survives in the auxiliary-crosscut overlay.
Every old compact-core vertex is retained by the auxiliary-crosscut overlay.
Both endpoints of the auxiliary crosscut are overlay vertices.
Every raw local-grid vertex is retained by the auxiliary-crosscut overlay.
Every overlay edge is cut from the old compact cover, the auxiliary crosscut, or the local grid.
If both the crosscut and the window lie in the open source domain, the entire auxiliary overlay lies in the closed source domain.
Every auxiliary-overlay edge is polygonal and has all nonvertex points in the open source domain.
Away from overlay vertices, an auxiliary-overlay edge meeting an old open nonboundary edge is one of that edge's subdivision pieces.
Away from overlay vertices, an auxiliary-overlay edge meeting a raw local-grid edge is one of that edge's subdivision pieces.
Away from overlay vertices, an edge meeting the auxiliary crosscut is one of the crosscut's subdivision pieces.
The auxiliary straight-line overlay contains a plane subdivision of the raw local grid.
A single nondegenerate straight segment, with its two ends as vertices, is a plane drawing.
Fresh relabelling and the wild outer graph #
Fresh abstract edge names for an auxiliary-crosscut inner overlay.
- name : Piece → γ
Assignment of overlay vertices, edges and faces to fresh cell names.
- name_inj : Set.InjOn self.name (Q.crosscutOverlay J p s epsilon extra).edgeSet
Instances For
An infinite cell-name type supplies fresh names for the auxiliary-crosscut overlay.
The old outer graph, still drawn on the wild source curve.
Equations
- _w.outerGraph = Graph.map P.src.pos P.str.outerGraph
Instances For
The freshly relabelled auxiliary-crosscut inner overlay.
Equations
- w.innerGraph = (Q.crosscutOverlay J p s epsilon extra).relabelEdges w.name ⋯
Instances For
The mixed crosscut source graph.
Equations
- w.graph = w.outerGraph.union w.innerGraph
Instances For
The mixed drawing keeps the wild outer parametrizations and uses straight segments on all fresh inner edges.
Equations
- w.drawing e = if e ∈ P.str.outerGraph.edgeSet then P.src.drawing e else (Q.crosscutOverlay J p s epsilon extra).relabelDrawing w.name Schoenflies.segmentDrawing e
Instances For
Old outer names and freshly allocated inner names are disjoint.
On an old outer edge the mixed drawing is the old source drawing.
On a fresh inner edge the mixed drawing is its relabelled segment drawing.
The mixed drawing restricts to a drawing of the old wild outer graph.
The mixed drawing restricts to the relabelled auxiliary-crosscut inner overlay.
The outer part occupies exactly the wild source curve.
The inner part occupies exactly the straight-line auxiliary-crosscut overlay.
The wild outer graph and the auxiliary-crosscut inner overlay form a plane drawing.
The mixed crosscut source graph is finite.
The mixed graph occupies the wild outer curve, old compact core, auxiliary crosscut, and local grid.
The complete old source skeleton is retained by the mixed crosscut graph.
Every old source vertex is retained by the mixed crosscut graph.
Both ends of the auxiliary crosscut are vertices of the mixed graph.
The mixed crosscut graph stays in the closed source domain.
Every mixed edge is either on the wild outer curve or is a polygonal inner edge whose nonvertex points lie in the open source domain.
An edge of the mixed crosscut graph meeting an old open source edge away from mixed vertices is one of that edge's subdivision pieces.
The mixed crosscut graph contains a plane subdivision of the complete old source drawing.
The old-source trace inside the mixed crosscut graph remains 2-connected.
Every raw local-grid vertex is retained by the mixed crosscut graph.
The complete raw local-grid carrier is retained by the mixed crosscut graph.
A mixed edge meeting a raw grid edge away from mixed vertices is a subdivision piece of that grid edge.
A mixed edge meeting the auxiliary crosscut away from mixed vertices is one of the crosscut's subdivision pieces.
The mixed graph contains a plane subdivision of the one-edge auxiliary crosscut.
The mixed crosscut graph contains a plane subdivision of the raw local grid.
The local-grid trace inside the mixed crosscut graph remains 2-connected.
The subdivided auxiliary segment is the exact carrier of a path in the mixed graph.
If a nondegenerate raw grid edge lies on the auxiliary segment and both crosscut ends lie on the old source skeleton, the old trace, crosscut ear, and grid trace span a 2-connected subgraph. Consequently the complete mixed graph is 2-connected.
If the old nonouter source carrier is connected, adjoining a crosscut whose first endpoint lies on it and a grid edge carried by that crosscut preserves connectedness after removing the wild outer curve.
The boundary-tolerant connectedness argument. The crosscut with its wild-boundary endpoints removed is still connected because it lies between its connected open segment and that segment's closure. Hence one surviving source endpoint joins it to the old nonboundary carrier, while the swallowed grid edge joins it to the grid.
Once its two global attachment properties are known, the mixed crosscut graph is a complete source extension.
The crosscut construction is a source extension once its concrete geometric attachment data are supplied; no separate graph-theoretic 2-connectivity or carrier-connectedness hypotheses remain.
Boundary-tolerant packaging: once one crosscut endpoint survives deletion of the wild outer curve, the generalized crosscut geometry gives the complete source extension.
The concrete output required from a local-grid source attachment: a finite source extension whose carrier contains the complete raw local grid.
Finite graph extending the source skeleton and local grid.
Planar parametrizations of the extension edges.
- isSourceExtension : IsSourceExtension P.src srcOuter srcDom self.graph self.drawing
- localGrid_subset : (localGrid p s (localGridCount s epsilon)).pointSet segmentDrawing ⊆ self.graph.pointSet self.drawing
Instances For
The boundary-touching crosscut construction after its two endpoint subdivisions. This packages every global graph property except connectedness after deleting the wild outer curve; that last property is exactly what the blueprint's finite component-joining loop supplies.
- cover : SourceNonboundarySegmentCover r.subdivision.pair
Finite segment cover of the subdivided nonboundary skeleton.
- relabeling : self.cover.CrosscutOverlayRelabeling r.crosscutData.crosscut p s epsilon []
Fresh names for the crosscut and local-grid overlay.
- isDrawing : self.relabeling.graph.IsDrawing self.relabeling.drawing
- isTwoConnected : self.relabeling.graph.IsTwoConnected
- sourceSkeleton_subset : r.subdivision.pair.src.skeletonSet ⊆ self.relabeling.graph.pointSet self.relabeling.drawing
- pointSet_subset : self.relabeling.graph.pointSet self.relabeling.drawing ⊆ srcDom
- localGrid_subset : (localGrid p s (localGridCount s epsilon)).pointSet segmentDrawing ⊆ self.relabeling.graph.pointSet self.relabeling.drawing
Instances For
A refined crosscut overlay is already a complete local-grid source extension whenever at least one crosscut endpoint is not on the wild outer curve.
Equations
- o.toLocalGridSourceExtensionData hs hwindow hsource hattach hA = { graph := o.relabeling.graph, drawing := o.relabeling.drawing, isSourceExtension := ⋯, localGrid_subset := ⋯ }
Instances For
The boundary-touching branch now constructs a plane, 2-connected, domain-contained mixed overlay after a matched subdivision at the two crosscut endpoints. The construction also retains the entire refined source skeleton and the raw local grid.
Complete local-grid source attachment for the crosscut case in which the selected source face has no wild-boundary points on its frontier. The face crosscut swallows the chosen raw grid edge, its traced subdivision is attached as an ear, and the grid trace is then glued along the two distinct ends of that edge.