Boost C++ Libraries: Ticket #9804: boost::geometry::intersection returns input polygon when the result should be empty. https://svn.boost.org/trac10/ticket/9804 <p> The result of an intersection is sometimes equal to one of the input polygons, when the result should be empty. For example: </p> <pre class="wiki"> typedef boost::geometry::model::d2::point_xy&lt;double&gt; Point; typedef boost::geometry::model::polygon&lt;Point&gt; Polygon; Polygon pg1; Polygon pg2; boost::geometry::model::multi_polygon&lt;Polygon&gt; result; boost::geometry::append(pg1, Point(-6.0, 3.2500000000000013)); boost::geometry::append(pg1, Point(-9.0, 3.2500000000000022)); boost::geometry::append(pg1, Point(-9.0, 6.5)); boost::geometry::append(pg1, Point(-6.0, 6.5)); boost::geometry::append(pg1, Point(-6.0, 3.2500000000000013)); boost::geometry::append(pg2, Point(-3.0, 0.0)); boost::geometry::append(pg2, Point(-6.0, 0.0)); boost::geometry::append(pg2, Point(-6.0, 3.2500000000000013)); boost::geometry::append(pg2, Point(-3.0, 3.2500000000000009)); boost::geometry::append(pg2, Point(-3.0, 0.0)); boost::geometry::intersection(pg1, pg2, result); </pre><p> After the intersection, result contains a polygon equal to pg1. We're using boost 1.55 and also tried the rescale_to_integer branch, which gives the same results. </p> <p> The problem seems to be with boost::geometry::within. We've previously had problems with within that we resolved by using a different strategy. Changing the strategy of the within calls in the function update_selection_map in select_rings.hpp makes intersection return the correct result for this case. </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/9804 Trac 1.4.3