Skip to content

fix: 3-point CurvePolygon hole paints arcs, not the chord triangle - #118

Draft
grootstebozewolf wants to merge 2 commits into
feature/sfa-curve-rgrfrom
cursor/tb-h-three-point-hole-arc-c29b
Draft

fix: 3-point CurvePolygon hole paints arcs, not the chord triangle#118
grootstebozewolf wants to merge 2 commits into
feature/sfa-curve-rgrfrom
cursor/tb-h-three-point-hole-arc-c29b

Conversation

@grootstebozewolf

@grootstebozewolf grootstebozewolf commented Aug 23, 2026

Copy link
Copy Markdown
Owner

Fixes #114 only. Do not merge. Do not join #60 #82 #92 #59 #102.

Observed (UX RC4 witness)

Type honest. Canvas HOLD. Hole is a stroke on the disc, not a punch.

Attached ring (do not invent another)

CURVEPOLYGON (CIRCULARSTRING (60 380, 240 440, 404 326, 60 380), CIRCULARSTRING (141 84, 270 28, 170 290, 141 84))

Two 4-control CircularStrings, first=last. No flatten. A pane keeps this WKT.

Expected

With that WKT loaded as A, the inner CircularString punches a hole (interior). Canvas draws the hole arcs, not the 3-point/4-point chord triangle.

Cause

The hole specified arc is a majority of its circumcircle. Closing through the antipode of the mid control redrew that same majority, so the path was a second stroke, not a disc.

Change (paint-path only)

CurveShapeWriter closes a 4-control first=last CircularString with the complementary sweep mid (the arc from last distinct control back to start that does not contain the specified interior control). WKT is not rewritten.

ISO/IEC 13249-3. No DOI. Not FCP-H. Not #86. HOLD merge. Off #7. No RC5.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 23, 2026 02:40
A hole that is still CIRCULARSTRING / COMPOUNDCURVE (ISO/IEC 13249-3)
must draw the arc(s) on the canvas. An open CircularString is odd and
at least three controls; a closed CS ring is five tokens first=last.
Do not treat (A,B,C,A) as a valid CircularString ring. Paint-only
complementary close; do not invent WKT. HOLD merge.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
The attached ring is two 4-control CircularStrings, first=last.
A major-arc hole closed through the antipode redrew the same
majority, so the canvas stroked the hole on the disc. Paint uses
the complementary sweep mid so the inner CIRCULARSTRING punches.
WKT unchanged. ISO/IEC 13249-3. HOLD merge.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>

Copy link
Copy Markdown
Owner Author

RC5 sequence: skipped. Competing #114 path vs #119+#120 (this PR comments that CIRCULARSTRING(A,B,C,A) is not a valid ring; 119+120 keep the PO 4-control witness and accept that form). Left open, not merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants