Skip to content

fix: logoBuffer applies mitre and box caps on named BufferOp - #58

Merged
grootstebozewolf merged 3 commits into
feature/sfa-curve-rgrfrom
cursor/logo-buffer-mitre-box-03ed
Aug 16, 2026
Merged

fix: logoBuffer applies mitre and box caps on named BufferOp#58
grootstebozewolf merged 3 commits into
feature/sfa-curve-rgrfrom
cursor/logo-buffer-mitre-box-03ed

Conversation

@grootstebozewolf

@grootstebozewolf grootstebozewolf commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Hero halo is logoLines + logoBuffer (toLinear(0.0) + BufferOp) at distance 4, JOIN_MITRE with DEFAULT_MITRE_LIMIT (5, not 0), CAP_SQUARE (box caps). One BufferOp on the whole linearized ISO/IEC 13249-3 MultiCurve (J + T-stem + T-crossbar + S). HOLD merge.

Honesty

  • Named BufferOp / CHORD-PATH / NAMED-APPROX. toLinear(0.0) is CircularArcDensifier 1% of radius (J R=25 → ε=0.25; S R=17.5 → ε=0.175), then chords. Not a laser. Not clothoid. Not feat: TestBuilder logoClothoid named clothoid halo #55. Never isApproximate()=false.
  • Ignores A; rebuilds the wordmark.

Quiet defaults, written not flattened

  • Buffer.buffer after logo in A: CurveOps.bufferCurveExact.buffer null (not a disc) → linearise(extent*1e-6)Geometry.buffer(4) with no BufferParameters. Cap/Join widgets are hidden. CAP_ROUND + JOIN_ROUND.
  • Buffer.bufferWithParams: params reach BufferOp, but no linearize (control-point chords). Empty Quadrant Segs → 0. Empty Mitre Limit → 0.0 (JOIN_MITRE bevels). This PR does not add flatten there.
  • Connectedness: BufferOp on the whole collection already unions (BufferCurveSetBuilder.addCollection → one curveList → one node/polygonize). T–S gap is 5; at d=4, 4+4>5 so sausages overlap. “Not one halo” is a thick 4-stroke wordmark, not BufferOp forgetting to union. Real disconnect paths: Buffer.bufferEach / Each A (off by default), or empty A + Buffer.buffer NPE. Do not weld J/T/S. Do not union letters in logoLines.

What changed (logoBuffer only)

Old logoBuffer already densified at 1% radius and ran one BufferOp with CAP_SQUARE. The named gap was JOIN_ROUND (default) and no explicit mitre limit.

  • Set JOIN_MITRE and DEFAULT_MITRE_LIMIT (not 0).
  • Keep CAP_SQUARE.
  • Keep toLinear(0.0) + one BufferOp.

Tests

JTSFunctionsLogoBufferTest (5) and JTSFunctionsLogoLinesCurveTest (4) — 9 run, 0 failed. Locks: four-member MultiCurve stays un-welded; overlapping sausages are already one polygon (bufferEach stays 4); result equals toLinear(0.0) + BufferOp(mitre, box, limit 5) and differs from JOIN_ROUND and from mitreLimit 0; box-cap corner lands; S-bowl bulge is on the halo and off the control-point chainsaw. No isApproximate()=false.

Base is #7 @ 075740e. Does not revert #54 or #57. Does not join #55, #52, or #38.

Open in Web Open in Cursor 

cursoragent and others added 3 commits August 16, 2026 20:13
Hero halo is logoLines + logoBuffer: toLinear at a sagitta tied to
the buffer distance, then one BufferOp on the whole linearized
ISO/IEC 13249-3 MultiCurve. JOIN_MITRE and CAP_SQUARE now both land.
CHORD-PATH / NAMED-APPROX. Not a laser.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
The first bulge point sat under the T-bar offset, so the raw
control-point BufferOp covered it. The J mitre tip is likewise
occluded; JOIN_MITRE is locked by equalsExact against the named path.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
Hero stays toLinear(0.0) (CircularArcDensifier 1% radius) + one
BufferOp. JOIN_MITRE uses DEFAULT_MITRE_LIMIT, not 0. CAP_SQUARE
stays. Do not weld letters. Do not flatten bufferWithParams.
CHORD-PATH / NAMED-APPROX. Not a laser.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
@grootstebozewolf
grootstebozewolf marked this pull request as ready for review August 16, 2026 20:20
@grootstebozewolf
grootstebozewolf merged commit cbc45d4 into feature/sfa-curve-rgr Aug 16, 2026
4 checks passed
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