Repository navigation
Releases: morishuz/delaunay32
Releases · morishuz/delaunay32
Release list
Delaunay32 0.7.0
This release improves numeric edge-case handling, internal modularity, sparse polygon sampling, and SVG construction.
Migration
- Rebuild all consumers:
Triangulatorhas a new binary layout. Public method
signatures remain unchanged. Versioned CMake consumers should request 0.7. - Seeded sampling remains reproducible within this release, but sparse
multi-domain sample sequences differ from earlier releases.
Added
- Add
delaunay_workload_benchmarkfor constraints, full results, SVG construction
and serialization, and rectangular/disconnected polygon sampling.
Changed
- Sample sparse polygon unions through area-weighted domain bounds, correcting
for overlapping proposal boxes. Dense regions retain global rejection
sampling. Seeds remain deterministic, but sparse multi-domain sequences change. - Store SVG path coordinates contiguously with ring offsets, removing per-triangle
allocations while preserving serialized output. - Hide triangulation implementation details behind a private implementation,
with dedicated edge-arena storage/allocation and grouped constraint workspace.
Public method signatures are unchanged; consumers must rebuild because the
Triangulatorbinary layout changed. - Share SVG geometry construction and polygon query traversal between integer
and floating-point overloads, retaining their distinct arithmetic predicates. - Preserve the topology kernel's specialized merge loops and direct storage
access; moved-from triangulators can be configured for a new problem.
Fixed
- Blue-noise sampling falls back to linear neighbor queries when tiny bounds
cannot support finite grid reciprocals, avoiding invalid integer conversions. - Automatic quantization rejects nonzero spans that require an infinite scale
instead of returning an invalid mapping and zero error report. - Jittered polygon sampling computes ring areas relative to a local origin,
preserving small domains translated to large coordinates. - Sampling rejects overflowing axis spans for bounds and polygon regions
before they can produce non-finite random coordinates.
Validation
- All 11 local Release tests passed with compiler warnings treated as errors.
- Installed-package consumer and 0.6/0.7 compatibility checks passed.
- Core-only shared-library build and full triangulation/workload benchmarks passed.
- All six release-commit CI jobs passed: Linux, macOS, Windows, AddressSanitizer/UndefinedBehaviorSanitizer, ThreadSanitizer, and forced 64-bit predicates.
Performance depends on the workload; sparse-domain sample sequences have changed as described above.
Delaunay32 0.6.3
Delaunay32 0.6.3 improves performance and fixes correctness and recovery issues. The public API, result format, and C++17 requirement remain unchanged.
Improvements
- Faster serial Morton sorting with fused radix histograms and fewer passes.
- Faster parallel topology construction through reduced cache-line sharing and reuse of child hull extrema.
- Spatial indexing accelerates validation of larger polygon boundaries.
- Full-result export builds adjacency in triangle order and inlines face discovery without adding a scratch buffer.
Fixes
- Polygon clipping correctly excludes regions separated by standalone constraints outside polygons or inside holes.
- Edge-arena allocation failures leave triangulators safe to reset and retry.
- Parallel allocation rejects blocks too small to hold a complete edge and uses the existing serial fallback.
- JSON and SVG output use locale-independent numeric formatting.
Validation covers Linux, macOS, Windows, address/undefined-behavior and thread sanitizers, and forced 64-bit predicates. Regression tests also cover sparse full results, reuse after collinear input, and output-allocation failure recovery.