which means that the interiors of polygons 3 and 4 in the result intersect (internally in relateget_turns correctly returns 2 crossing turns). Two equal points should be generated as a result of intersection of the holes of the input polygons. Two different points are generated instead.
Side note: ~this is not~ previously this was not detected by is_valid() due to a bug in this algorithm incorrectly using point_on_border() to check if interiors intersect.
Detected for several cases of
sym_difference
, e.g. difference.cpp test caseintersect_holes_intersect_and_disjoint
used in the example below:With develop branch and msvc-14.0 (Visual Studio 2015) x86 Debug mode the output is:
which means that the interiors of polygons 3 and 4 in the result intersect (internally in
relate
get_turns
correctly returns 2 crossing turns). Two equal points should be generated as a result of intersection of the holes of the input polygons. Two different points are generated instead.Side note: ~this is not~ previously this was not detected by
is_valid()
due to a bug in this algorithm incorrectly usingpoint_on_border()
to check if interiors intersect.