Skip to content

v19.0.1

Latest

Choose a tag to compare

@BotellaA BotellaA released this 17 Oct 00:23
98d5ba2

19.0.1 (2026-10-17)

Bug Fixes

  • AABBTree: ignore non-finite hint distance in closest_element_box (8805514)
  • BoundingBox: keep box unchanged when adding an empty box (84bd4d4)
  • CoordinateSystem: reset cached inverse when directions change (18feacc)
  • Distance: consider every visible facet in point_tetrahedron_distance (35bccd0)
  • Distance: detect line crossing a triangle with exact predicates (ca85a31)
  • Distance: fix point_ellipse_distance for general queries (6d3c82d)
  • Distance: make segment_line_distance robust for small angles (61700f0)
  • Distance: make segment_segment_distance robust for near-parallel segments (890c5eb)
  • Distance: point_ellipse_distance beyond the tips of elongated ellipses (c4c5a39)
  • Distance: point_sphere_distance for points close to the center (f6884df)
  • Distance: point_tetrahedron_distance for nearly flat tetrahedra (699818b)
  • Distance: point_triangle_distance 2D with flat triangle (a71eeec)
  • Distance: segment_triangle_distance with segments below GLOBAL_EPSILON (4ee7059)
  • Distance: sign point_circle_signed_distance w.r.t. the circle plane (85c1b02)
  • FacetStorage: merge facets that collide in update_facet_vertices (107cc4a)
  • FacetStorage: repair inconsistent facet indices when loading instead of rejecting (2a3700a)
  • FacetStorage: validate facet indices when loading (13cf47a)
  • Frame: compare directions by length for elongation queries (7b8b9fa)
  • FrameTransform: map frame directions with a true permutation (03a65ec)
  • Geometry: point predicates CMake properties to detail/ (1901353)
  • Geometry: tier 2 robustness fixes for degenerate inputs (#1350) (961f682)
  • Intersection: detect parallel lines in line_line_intersection (84cc935)
  • IntersectionDetection: project coplanar 3D primitives along the plane normal (5cb3250)
  • Intersection: keep segment endpoints touching the triangle (6b8e007)
  • Intersection: robust 2D segment/segment and segment/line intersections (988a510)
  • Intersection: robust line and segment sphere intersections (082c96c)
  • Intersection: robust plane/plane and plane/circle intersections (6ef9d36)
  • Intersection: robust segment and line triangle intersections (eecea68)
  • Intersection: segment_sphere_intersection for segments just beyond GLOBAL_EPSILON (e5ceb6e)
  • Mensuration: compute triangle area from a cross product (d0c0299)
  • Mensuration: stop zeroing valid flat tetrahedra volumes (a0cb6a8)
  • Polygon: use area-weighted normal for concave polygons (2fc3465)
  • Position: point_tetrahedron_position for negative tetrahedra (8a8ae33)
  • Position: project 3D point_triangle_position on the best axis plane (4180e32)
  • Position: use exact predicates only in point_tetrahedron_position (c246aee)
  • Sign: compute polygon_area_sign at a convex hull vertex (b691a9a)
  • Sign: handle flat spike at the hull vertex in polygon_area_sign (fd1d4ad)
  • Triangle: reset cached normal in set_point (2dfd990)

Performance Improvements

  • AABBTree: evaluate closest_element_box hint element once (10c721e)
  • AABBTree: parallelize other intersections over the other tree subtrees (5d5f8f1)
  • AABBTree: split nodes along the spread of element centers (22b193b)
  • BarycentricCoordinates: detect degenerated inputs without exceptions (a564e7a)
  • BoundingBox: reuse segment shape data and reject triangles/tetrahedra early (295d1f4)
  • Builder: reserve edges/facets storage in reserve_tetrahedra/triangles (3b9e458)
  • Distance: choose point_triangle_distance pivot without Triangle::pivot (0608d34)
  • FacetStorage: avoid container copies in is_opposite (91572d4)
  • FacetStorage: cheaper delete_facets/clean_facets (af6ecd1)
  • FacetStorage: move facet map instead of copying it in update_facet_vertices (494ac5f)
  • FacetStorage: reserve storage when enabling edges/facets (226c4ff)
  • HybridSolid: map polyhedron vertex count to type with a switch (e072aca)
  • Information: map positions to index and string with a switch (392d0c7)
  • Intersection: skip eager correctness computations when clearly valid (316ea3f)
  • Mensuration: compute triangle cross product on scalar coordinates (b9994b2)
  • Mensuration: drop edge selection in triangle cross product (4255a82)
  • NNSearch: build large kd-trees with several threads (b5faae9)
  • NNSearch: search colocated points by chunks without sorting (aef62e1)
  • Point: define trivial accessors and operators inline (84ce05d)
  • PointsSort: skip flat axes in 3D Morton mapping (e65c933)
  • Position: call exact predicates directly for tetrahedron and 3D triangle (5c34b1d)
  • Quality: compute triangle_angle_based_quality in closed form (0f5408f)
  • Triangle: store the pivot and normal cache only for 3D triangles (7f2b5ad)