JuliaGeometry / VoronoiDelaunay.jl

Fast and robust Voronoi & Delaunay tessellation creation with Julia
Other
124 stars 26 forks source link

Failure with 4 points #55

Open blegat opened 3 years ago

blegat commented 3 years ago

There are issues reporting incorrect result with delaunayedges https://github.com/JuliaGeometry/VoronoiDelaunay.jl/issues/51, and voronoiedges https://github.com/JuliaGeometry/VoronoiDelaunay.jl/issues/54. This issue might be related but it's about the iterator on delaunay triangles. I tried to make a minimal reproducing example with only 4 points:

ε = 0.025
points = [
    VoronoiDelaunay.GeometricalPredicates.Point2D(1.5, 1.5)
    VoronoiDelaunay.GeometricalPredicates.Point2D(1 + ε, 1 + ε)
    VoronoiDelaunay.GeometricalPredicates.Point2D(2 - ε, 1.25)
    VoronoiDelaunay.GeometricalPredicates.Point2D(1.5, 2 - ε)
]
tess = VoronoiDelaunay.DelaunayTessellation(length(points))
push!(tess, points)
# Does not show anything while we would expect 4 triangles:
for Δ in tess
    @show Δ
end

Here is one with 3 points:

ε = 0.025
points = [
    VoronoiDelaunay.GeometricalPredicates.Point2D(1.5, 1.5)
    VoronoiDelaunay.GeometricalPredicates.Point2D(1 + ε, 1 + ε)
    VoronoiDelaunay.GeometricalPredicates.Point2D(2 - ε, 1.25)
    VoronoiDelaunay.GeometricalPredicates.Point2D(1.5, 2 - ε)
]
tess = VoronoiDelaunay.DelaunayTessellation(length(points))
push!(tess, points)
# Does not show anything while we would expect a triangle
for Δ in tess
    @show Δ
end
dkarrasch commented 2 years ago

For some reason, all triangles are identified as external, and hence omitted from the iteration.