Skip to content

TestBuilder JTS logoLines as curves, not densified polylines - #42

Merged
cursor[bot] merged 3 commits into
feature/sfa-curve-rgrfrom
cursor/tb-logo-lines-curves-33ba
Aug 16, 2026
Merged

TestBuilder JTS logoLines as curves, not densified polylines#42
cursor[bot] merged 3 commits into
feature/sfa-curve-rgrfrom
cursor/tb-logo-lines-curves-33ba

Conversation

@grootstebozewolf

Copy link
Copy Markdown
Owner

TestBuilder JTS logoLines is curves. Not Bar 2. Do not merge into #7.

What

JTSFunctions.logoLines built the JTS logo with GeometricShapeFactory.createArc (10-point polylines) then createLineString. The J hook and both S bowls were fake arcs.

This draft returns real curve geometry:

  • J is a CompoundCurve: stem (top + vertical) + quarter-circle CircularString + base
  • T stays two straight LineStrings
  • S is a CompoundCurve: straights + two semicircle CircularStrings
  • Letters are assembled as a MultiCurve. TestBuilder already walks collections and paints arcs through CurveShapeWriter. union() would linearise.

Construction uses the honest factory: createCircularString then createCompoundCurve(new LineString[]{ ... }). Never createCompoundCurve(CoordinateSequence) (the polyline lie on this branch).

logoBuffer still uses BufferOp + square caps. It linearises the curve result first so the buffer sees the arcs, not control-point chords. That densify is not claimed exact. No laser buffer.

jtsVersion is unchanged.

Out of scope

Pin

JTSFunctionsLogoLinesCurveTest asserts logoLines contains CircularString / CompoundCurve members, that J/S are not 10-point LineString arcs from GeometricShapeFactory, and that jtsVersion still delegates to JTSVersion.CURRENT_VERSION.

Base

Draft off feature/sfa-curve-rgr (#7 @ 8e39e39). Do not merge into #7 or locationtech master.

Open in Web Open in Cursor 

Replace GeometricShapeFactory 10-point polyline arcs in logoLines with
honest CircularString members assembled via createCircularString then
createCompoundCurve(LineString[]). J is stem+quarter+base, S is
straights+two semicircles, T stays straight, union is a MultiCurve.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
cursoragent and others added 2 commits August 16, 2026 15:50
Exact hull for CompoundCurve / stadium / two-cap mixes: a CurvePolygon
whose shell is the exposed arcs plus supporting tangents. Disc and
single-arc paths stay as they were. Clothoid and all-straight members
are a named null so densify stays the fallback and is never flagged
exact. Not a noder; not Bar 2; not a merge into #7.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
Arc vertices from cos/sin were within eps of the input points but
not equal, so the legacy LinearRing derived from the CompoundCurve
shell rejected the ring. Snap junctions and pin the bulge on the
arc member rather than the densified distance path.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
@cursor
cursor Bot marked this pull request as ready for review August 16, 2026 15:59
@cursor
cursor Bot merged commit f3de10b into feature/sfa-curve-rgr Aug 16, 2026
4 checks passed
cursor Bot pushed a commit that referenced this pull request Aug 16, 2026
Keep #31 stadium MIC and #42 circular-plus-straight hull in CurveExact.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
cursor Bot pushed a commit that referenced this pull request Aug 16, 2026
Cite #41-via-#42 H-CC, #42 logoLines, #43 A/B, #44 WKB export,
#22 LEC, #31 stadium MIC, #39 clothoid extras, #35 TB-IN.
D-HF stays 0ca71b4 on #7, not #45.

Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
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