Releases: JuliaGeometry/DelaunayTriangulation.jl
v1.3.1
DelaunayTriangulation v1.3.1
Merged pull requests:
- Improve the README (#182) (@DanielVandH)
- Fix degenerate weighted triangulation (#184) (@DanielVandH)
Closed issues:
v1.3.0
This release finally introduces weighted triangulations and power diagrams, and also allows for users to provide a generic convex polygon to for clipping a Voronoi tessellation instead of only the convex hull.
- Weighted triangulations have now been implemented, as have power diagrams. The weights are also no longer restricted to
Float64
type. See #180. intersection_of_edge_and_bisector_ray
now accepts aproject
keyword argument. See #180.get_weight(w, i)
now returns, wheni
is not an integer, eitheri[3]
if it represents a point in space or0
. See #180.- Define
project_onto_line(p, q, r)
for projecting a pointr
onto the line defined byp
andq
. See #180. - Fixed a bug with clipping Voronoi tessellations in cases where there are no intersections of any Voronoi polygon with the convex hull. See #180.
voronoi
now accepts an optionalclip_polygon
keyword argument, defaulting tonothing
(corresponding to the convex hull), allowing for a convex clip polygon to be used instead of the convex hull. Theclip_polygon
should be aTuple
of the form(points, boundary_nodes)
where theboundary_nodes
give vertices ofpoints
adhering to the usual convention. Note that this could be used as an alternative to looping overget_polygon_coordinates
for clipping to a rectangle. See #180.centroidal_smooth
now acceptsclip_points
andclip_vertices
as keyword arguments, defaulting tonothing
(corresponding to the convex hull), to accommodate the newclip_polygon
keyword argument invoronoi
. See #180.has_multiple_curves
,has_multiple_sections
, andnum_boundary_edges
now have methods forTuple
s of integers. A bug was also fixed withnumber_type
of aTuple
ofTuple
s of coordinates returning theTuple
type instead of the coordinate type. See #180.
What's Changed
- Implement weighted Delaunay triangulations and power diagrams by @DanielVandH in #180
Full Changelog: v1.2.0...v1.3.0
v1.2.0
DelaunayTriangulation v1.2.0
Merged pull requests:
- Better default
set_point!
for matrices, and check for dimension of the user's points (#178) (@DanielVandH)
Closed issues:
- [BUG]: centroidal_smooth fails when applied to the triangulation of a sphere, Möbius strip, or Swiss roll. (#177)
v1.1.4
DelaunayTriangulation v1.1.4
Merged pull requests:
- Fix curve-bounded refinement with custom structs (#175) (@DanielVandH)
v1.1.3
v1.1.2
DelaunayTriangulation v1.1.2
Merged pull requests:
- some notes in docstrings (#171) (@DanielVandH)
Closed issues:
- [BUG]:
triangulate
function is not type-stable (#170)
v1.1.1
DelaunayTriangulation v1.1.1
Merged pull requests:
- Wrap matlab code in code blocks so it's easier to interpret in
test/helper_functions.jl
(#167) (@asinghvi17) - Don't make exported symbols public (#168) (@DanielVandH)
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)
v1.0.5
DelaunayTriangulation v1.0.5
Merged pull requests:
- Disable deepcopy on PolygonTrees (#130) (@DanielVandH)
v1.0.4
Nothing breaking. Main changes:
- Fixes some issue with type instabilities
- Adds
construct_polygon_hierarchy
to the public API list (it was already intended to be there) - All computations are now in the provided precision except for the triangle area and circumcenter which are done in
Float64
. A warning is given when a non-Float64 precision is given. - Closes #118
- Redesigns the
Polygon
struct to have anis_circular
field, avoiding the need forviews
- Completely refactors
validate_triangulation
. Still only lives in the test files though. Maybe one day it can live inside the package itself incase users somehow have a use for it.. - Clean up the runtests.jl file, and make sure that the README/docs are fully tested
- Use Aqua and fix ambiguities
- Remove accidental piracy of
minimum(::Nothing)
- Remove CI spam from method redefinitions
- Fix some issues with doc images and some typos
- Fix #109
Issues/PRs
- Upping version just to test cov by @DanielVandH in #112
- Fix typo in constrained_edges.jl docs by @juliohm in #113
- Fix typo in constrained_outer_boundary.jl docs by @juliohm in #114
- Fix image by @DanielVandH in #117
- Fix some type instabilities and other fixes by @DanielVandH in #119
New Contributors
Full Changelog: v1.0.3...v1.0.4