v1.1.0
DelaunayTriangulation v1.1.0
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()
, andAdaptiveKernel()
, respectively. The default is nowAdaptiveKernel()
. Moreover, triangle areas are now computed using the adaptiveorient
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 tofind_triangle
. For compatibility,jump_and_march
still works and is simply an alias offind_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
andis_point3
to detect if a given input is a point. This allows vector coordinates to be passed toconvert_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 tolock_convex_hull!
.
Merged pull requests:
- Allow for ExactPredicates to be toggled (#131) (@DanielVandH)
- Bump actions/checkout from 3 to 4 (#132) (@dependabot[bot])
- Change jump_and_march to find_triangle (#133) (@DanielVandH)
- Reorganise the includes (#135) (@DanielVandH)
- Change USE_EXACTPREDICATES to PREDICATES (#137) (@DanielVandH)
- Add
public
,const
, and test on pre-release (#140) (@DanielVandH) - Hint at what orientation means in the error message (#144) (@asinghvi17)
- Use contributions md (#160) (@DanielVandH)
- Fix convert_boundary_points_to_indices for vector of vector coordinates (#161) (@DanielVandH)
- Move out the config checks at the start of triangulate into their own function (#162) (@DanielVandH)
- Remove allocation in add_vertex! (#163) (@DanielVandH)
- Provide a choice of predicate kernel. Make AdaptivePredicates.jl the new default (#165) (@DanielVandH)
- Runic (#166) (@DanielVandH)
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
forjump_and_march
(#110) - Add
has_polygon_vertex
for VoronoiTessellations (#115) - Add
clean!(::Triangulation)
andclean!(::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 frompoints
andtriangles
(#143)