Skip to content

v1.1.0

Compare
Choose a tag to compare
@github-actions github-actions released this 28 Jul 12:09
· 51 commits to main since this release
2b3314e

DelaunayTriangulation v1.1.0

Diff since v1.0.5

There are a lot of changes in this release, most of them irrelevant for the user. The most important change is the following:

  • We now support a choice between fast, exact, and adaptive predicates via FastKernel(), ExactKernel(), and AdaptiveKernel(), respectively. The default is now AdaptiveKernel(). Moreover, triangle areas are now computed using the adaptive orient predicate to be more robust. See #165.

Previously, ExactPredicates.jl was used everywhere, which can be slow and not necessary for certain point sets. The FastKernel() option
has no exact or adaptive arithmetic and so should be used with caution. The documentation discusses these choices in more detail.

To actually configure the choice of predicate, you can e.g. in triangulate use the predicates keyword argument and pass one of
DelaunayTriangulation.FastKernel(), DelaunayTriangulation.ExactKernel(), or DelaunayTriangulation.AdaptiveKernel(). If you are computing a predicate manually, then the predicate is instead passed as the first argument.

Some other changes:

  • Added DelauanyTriangulation.validate_triangulation for validating triangulations. See #131.
  • Fixed a bug with the currently unused orient(p, q, r, s) predicate. See #131.
  • Added private functions getz, _getz, getxyz, and _getxyz. See #131.
  • jump_and_march has now been renamed to find_triangle. For compatibility, jump_and_march still works and is simply an alias of find_triangle. See #133.
  • Mutable structs now use const on fields that aren't changed. For compatibility with older versions, this is implemented using a macro that is a no-op where this is not supported. See #140.
  • We now use the public word to define public functions. This is only included on Julia versions v1.11 and above. See #140.
  • We now test on the pre-release. See #140.
  • The module DelaunayTriangulation now has a docstring. See #140.
  • The .md files for tutorials and applications in the docs have been properly updated to match their literate counterparts. See #140.
  • We now use a workflow to enforce changes to NEWS.md for any PRs. See #140.
  • Improved the error message for an incorrect orientation. See #144.
  • Added a CONTRIBUTING.md file and issue templates. See #160.
  • Added is_point2 and is_point3 to detect if a given input is a point. This allows vector coordinates to be passed to convert_boundary_points_to_indices. See #161.
  • Removed an allocation from add_vertex!. See #163.
  • Fixed an issue with the user-supplied rng not being passed to lock_convex_hull!.

Merged pull requests:

Closed issues:

  • Spatial sorting for fast insertion (#34)
  • Detection of intersecting segments in user input (#42)
  • Support for clipped/centroidal Voronoi tessellations on non-convex geometries and multiply-connected/disjoint triangulations (#48)
  • Integer division error with Float32 for clipped Voronoi (#72)
  • Voronoi treemap (#87)
  • Add an alias find_triangle for jump_and_march (#110)
  • Add has_polygon_vertex for VoronoiTessellations (#115)
  • Add clean!(::Triangulation) and clean!(::VoronoiTessellation) (with better names) (#116)
  • Weighted triangulations and Voronoi power diagrams (#124)
  • Centroidal Voronoi tessellations with inhomogeneous density (#125)
  • Retriangulating perturbed data sets (#126)
  • Inserting curves into a triangulation (#127)
  • Maximum angle constraints (#128)
  • Look into AdaptivePredicates.jl (#136)
  • Thoughts for 3D Delaunay tetrahedralisations (#139)
  • Add a reconstruct function for building triangulations from points and triangles (#143)