Skip to content

jc_voronoi 0.10.0

Choose a tag to compare

@JCash JCash released this 22 Jul 09:06

0.10.0

  • Replaced the beachline scan with a RAVL tree, eliminating pathological scaling. The 100k pathological case improves from approximately 9.15 s to 19.43 ms.
  • Replaced persistent graph-edge copies with shared edges and per-site iterators, substantially reducing retained memory.
  • Added packed unique-vertex storage and the jcv_get_num_vertices() / jcv_diagram_get_vertices() APIs.
  • Optimized edge sorting with an overflow-safe pseudo-angle.
  • Skip gap filling for interior cells when using the default box clipper.
  • Improved handling of nearly collinear sites.
  • Added more regression tests, documentation, examples, and showcases.

Breaking changes

  • Edge traversal now uses jcv_edge_iter and caller-owned jcv_edge values.
  • Removed jcv_diagram_get_next_edge, jcv_edge.next, jcv_graphedge, and jcv_site.edges.
  • Site edges now use jcv_site_get_edges() and jcv_edge_next().
  • jcv_delauney_edge.edge is now embedded rather than a pointer.
  • Site array order is not guaranteed to match input order; use site.index.
  • Public structs are no longer packed and their layouts have changed.
  • Removed JCV_DISABLE_STRUCT_PACKING; defining it now has no effect.
  • Custom clipper fill_fn implementations using jcv_site.edges must be updated.