P2.5.2 N-string node set in jts-curve (OV-P2 / Bar 2) - #23
Open
grootstebozewolf wants to merge 1 commit into
Open
grootstebozewolf wants to merge 1 commit into
grootstebozewolf wants to merge 1 commit into
Conversation
Package-private CurveSegmentNoder.nodes accepts N geometries or N string collections and unions each unordered pair. N=2 delegates to the pair noder. MIXED, pinch, and holed pairs stay null and add no point. No faces, no jts-core noding change. Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
This was referenced Aug 16, 2026
grootstebozewolf
marked this pull request as ready for review
August 16, 2026 12:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on
cursor/p24-hole-meets-diameter-a09a@ 3d11f8e (draft #20, HOLE-OUTER hole-on-diameter). Do not merge this into #7. This is OV-P2 / Bar 2, not OV-P1. Does not merge #12 / #13 / #15 / #16 / #17 / #18 / #19 / #20 / #7. Does not push tofeature/sfa-curve-rgror master. P2.5.5 is not started.Sentence
The noder is the named-miss suite, one assembly rule at a time. P2.1–P2.4 landed (pair nodes, overlap-as-edge, bite vs hole, two-hole, hole-on-diameter). Next general-N rung is all-pairs CurveSegmentString nodes in jts-curve. Densify is never a noder. Pick C (CurveSegmentString in jts-curve). A (metadata) already shipped. B (lie that
[i,i+1]is non-linear in core SegmentString) is P2.5.5, 74 files, LOCKED — not started.What this is
P2.5.2: same atoms as P2.1 (
CurveSegmentStringchord/arc +CurveSegmentNoder), N pairs not 2.Package-private in
org.locationtech.jts.operation.overlayng.curve:CurveSegmentNoder.nodes(Geometry[] geoms)CurveSegmentNoder.nodes(List<List<CurveSegmentString>> groups, double scale)CurveSegmentNoder.nodes(CurveSegmentString[] strings, double scale)Each unordered pair runs the existing pair noder. The N-set is the unique union. N=2 delegates to the pair path (bit-identical). MIXED / pinch stay edges via the existing P2.2 path —
nodes()may still be null on a MIXED pair; all-pairs does not invent crossings there. Geometry-level holed pair stays null (walk uses hole rings as strings, as in P2.3/P2.4).No faces (P2.5.3). No snap-rounding (P2.5.4). No
org.locationtech.jts.noding.SegmentStringchange (P2.5.5). No new public API. Name is OverlayNGCurve.Pins
Reuse existing kit-identical pins so N=2 still matches P2.1:
(3.5, ±√12.75)(0, ±5)(±3, 4)New N≥3 pins (existing fixtures only):
ON_DIAMETER) or pinch (CIRCLE_INT_TAN) inside an N-set adds no fake crossing. Pinch at(5, 0)is not a node.What this is not
feature/sfa-curve-rgr/ PR SFA/SQL-MM curve awareness: Curve rename, arc-aware operations, OverlayNGCurve ratchet (#1195 RGR series) #7 / locationtech masterVerify
All green after this revision:
CurveSegmentStringTest20 / 0 (N=2 bit-identical to P2.1 pins; N=3 union of HALF_DISC / HALF_HANGING / STADIUM_FOUR; MIXED / pinch add no fake node; holed Geometry pair stays null)CompoundCurveShellOverlayTest27 / 0 (P2.1–P2.4 / HOLE-OUTER unchanged)CircularArcOverlayTest11 / 0CircularDiscOverlayTest12 / 0CircularDiscPolygonOverlayTest7 / 0CircularLineOverlayTest7 / 0OverlayNGCurvePhase0Test19 / 0OverlayNGCurveRatchetTest50 / 0OverlayNGCurvePerfGateTest82 / 0 (15% slack)jts-curvesucceededSlack stays 15%. Overlay name is OverlayNGCurve. No new public API. No noder was written in jts-core. P2.5.5 was not started.