G11 #937: Shape Builder cuts art of thousands of segments with lines again

The planar map found each edge's source input by scanning every input
segment, and the face around each hole or merge point by scanning every
face, so it was quadratic in the segments; the Shape Builder therefore
gave up past 4096 segments (traced or type outlines) and offered whole
shapes. Index outline segments and faces by bounds on both axes
(RectIndex), walk an edge's segments lazily when finding its leaving
angle, and raise SHAPE_BUILDER_MAX_SEGMENTS to 65,536. Divide with open
paths shares the cap; its cap test now follows the constant.

Tests: a 20,000-segment blob cut by two lines, a 300-line hatch, the
index against a brute-force scan, and the existing cap test at the new
cap. Progress docs updated (G11, parity evidence, roadmap).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014gCpjL3yUhaH3jRp7ksufh
This commit is contained in:
Angelo Bernardini
2026-10-23 04:48:58 +07:00
committed by bflatastic
co-authored by Claude Opus 5.5
parent 974bca0c9d
commit e7233ef0c5
5 changed files with 213 additions and 53 deletions
+9 -1
View File
File diff suppressed because one or more lines are too long
+5 -2
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long