HP.3: snap leave-angles onto distinct grid headings - #30
Draft
grootstebozewolf wants to merge 1 commit into
Draft
Conversation
Snap each leave's circle-square exit (not the shared +x tangent) onto an integer (dx, dy) lattice key. At scale 10 both H-SHELL-N-ODD leaves share (1, 0); stamp SHARED_SNAPPED_RAY and stop. faces() still returns TANGENT_LEAVE_ANGLE. Not a walk, not core HotPixel. Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
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 #29 (
cursor/hp2-curve-hotpixel-5bb4@784f3c25). Sibling of P2.5.5, not the 74-file blast. Do not merge into #7 /feature/sfa-curve-rgr. Do not restack onto #27 / #28.This is the HotPixel ladder. HP.0 / HP.1 / HP.2 done. This is HP.3 only.
Name is OverlayNGCurve, never OverlayNGCurved (NTSC0001).
What HP.3 is
A package-private snap next to
CurveHotPixelinorg.locationtech.jts.operation.overlayng.curve.CurveHotPixelstays a pixel test (intersects+exit).CurveHotPixelSnapturns a leave's pixel-exit into a discrete heading.Heading key: integer
(dx, dy)in the scaled lattice. The circle–square / arc–AABB exit is rounded withMath.round(half-up, same family as HotPixel scale-round) and subtracted from the already-rounded node. Two leaves have distinct headings iff the keys differ.(0, 0)is not a heading. Documented miss (null) when the string does not intersect the pixel or does not start in it.Do not snap the shared tangent. Both H-SHELL-N-ODD leaves at
(0, 5)are still +x (ANGLE_EPS = 1e-8). Snap the arc exit, not the supporting chord.Outcome at scale 10: shared ray, stamp
Investigated; not prescribed.
Pixel at
(0, 5), scale 10, width 0.1, half-open (left/bottom closed, top/right open). Both leaves start at the node and exit the open right side:(0,5)→(5,0)(0.05, 4.99975)(1, 50)(1, 0)(0,5)→(1,4)(0.05, 4.99875)(1, 50)(1, 0)They share one snapped grid point. HP.3 stamps
SHARED_SNAPPED_RAY("HP.3 shared snapped ray") and stops. Same stop rule as P2.5.4. No curvature-order tie-break (HP.1 already refuted that: 18.42 vs pair-kit13π+2).The unsnapped
facespath is unchanged:testN3TangentStampsNullandtestCurvatureOrderWalksWrongRingsstay bit-identical (missReason == TANGENT_LEAVE_ANGLE). The new stamp is not wired intofaces.Pins
leaveAnglestill +x).y=0, STADIUM_ODD capy=4) have no heading. Exit y stays near 5, not those chords.(1, 0)— shared ray, stamp.What this is not
HotPixel/ScaledNoder/SnapRoundingNoder/RobustLineIntersector/SegmentString.isApproximate()=false.intersectsScaledon a chord standing in for an arc.t_laser ≤ 1.15 × t_chainsaw(no overlay laser on this card).Never list (catalog)
TANGENT_LEAVE_ANGLEon the unsnappedfacespathorg.locationtech.jts.noding.snapround/ coreHotPixel.javafeature/sfa-curve-rgr/ PR SFA/SQL-MM curve awareness: Curve rename, arc-aware operations, OverlayNGCurve ratchet (#1195 RGR series) #7Verify
Same suite as #29. Slack 15% (unchanged). OverlayNGCurve never Curved. All green after this revision:
CurveSegmentStringTest32 / 0 (HP.1 + P2.5.4 stamps unchanged; four HP.3 pins added)CompoundCurveShellOverlayTest27 / 0CircularArcOverlayTest11 / 0CircularDiscOverlayTest12 / 0CircularDiscPolygonOverlayTest7 / 0CircularLineOverlayTest7 / 0OverlayNGCurvePhase0Test19 / 0OverlayNGCurveRatchetTest50 / 0OverlayNGCurvePerfGateTest82 / 0 (15% slack)jts-curvesucceededgit diffvs #29 touches onlymodules/curve(CurveHotPixel,CurveHotPixelSnap,CurveSegmentStringTest). CoreHotPixel.javaandorg.locationtech.jts.noding.snaproundwere not edited. HP.4 / HP.5 / P2.5.5 were not started.