GeometryBasics.jl icon indicating copy to clipboard operation
GeometryBasics.jl copied to clipboard

Point2 in Polygon gives bad result.

Open valegnr opened this issue 1 year ago • 1 comments

I am unsure if i am using your code correctly, but i assume that the following code behaves different to what i would expect:

using GeometryBasics,StableRNGs

rng = StableRNG(123) 

results_tri = Vector{Bool}(undef,100)
results_poly = Vector{Bool}(undef,100)
for i in eachindex(results_tri)
    xs = sort(rand(rng,Float32,3))[[1,3,2]] #sorting for orientation of area
    ys = sort(rand(rng,Float32,3))
    points = Point2.(xs,ys)
    tri = Triangle(points...)
    pol = Polygon(points)
    point = 1/3 * sum(points)
    
    results_tri[i] = point in tri 
    results_poly[i] = point in pol 
end

sum(results_tri) == length(results_tri) # returns true
sum(results_poly) == length(results_poly) #returns false

This means to me that in(p::Point2,pol::Polygon) gives a wrong result. Thank you for your time and effort!

valegnr avatar Sep 03 '24 12:09 valegnr

GeometryBasics is meant to be a library that just defines types - try https://github.com/JuliaGeo/GeometryOps.jl or its predecessor https://github.com/JuliaGeometry/PolygonOps.jl for geometry algorithms that work with GeometryBasics!

asinghvi17 avatar Sep 03 '24 13:09 asinghvi17