You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.