geometry icon indicating copy to clipboard operation
geometry copied to clipboard

bg::intersection result is the second input polygon instead of empty polygon

Open snowman791 opened this issue 2 years ago • 1 comments

on version 1.83 the bg::Intersection generates wrong result for this specific case. The result polygon is same as the second input polygon Q. When the first polygon P has instead of the value 1e-14 eg. 1e-13 or 1e-15, the result is empty, which is correct.

using boost_point_2d = boost::geometry::model::d2::point_xy; using boost_polygon_2d = boost::geometry::model::polygon<boost_point_2d, false>; using boost_multipolygon_2d = boost::geometry::model::multi_polygon<boost_polygon_2d>;

boost_polygon_2d P = {{{1e-14, 0}, {-10, 50}, {-20, 50}, {1e-14, 0}}}; boost_polygon_2d Q = {{{0, 1000}, {0, 0}, {1000, 0}, {1000, 1000}, {0, 1000}}}; boost_multipolygon_2d R;

bg::intersection(P, Q, R); image

snowman791 avatar Sep 14 '23 10:09 snowman791

A side note: the correct result is not empty, it is a triangle

MULTIPOLYGON(((0 p1,1e-14 0,0 p2,0 p1)))

where p1, p2 are intersection points of the segments (-10 50, 1e-14 0) and (-20 50, 1e-14 0) with segment (0 0, 0 1000).

So, I think both results you get are wrong.

vissarion avatar Dec 01 '23 14:12 vissarion