Subject: [Boost-bugs] [Boost C++ Libraries] #13519: Invalid result for boost::geometry::difference
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2018-04-13 15:21:43
#13519: Invalid result for boost::geometry::difference
---------------------------------+----------------------------
Reporter: lehnert@⦠| Owner: Barend Gehrels
Type: Bugs | Status: new
Milestone: To Be Determined | Component: geometry
Version: Boost 1.66.0 | Severity: Problem
Keywords: geometry difference |
---------------------------------+----------------------------
Hello,
executing the following polygon difference operation produces an obviously
incorrect result.
From a relatively large face a small face is subtracted and the result is
very small.
Code snippet:
using point_type = boost::geometry::model::d2::point_xy<double>;
using polygon = boost::geometry::model::polygon<point_type>;
using multi_polygon = boost::geometry::model::multi_polygon<polygon>;
polygon op1, op2; multi_polygon result;
boost::geometry::read_wkt("MULTIPOLYGON(((-1.54499301090586272
0.996130119403307535, -1.54499299947730218 0.99761525234323567,
-1.54655249947779994 0.995186041738558957, -1.54499301090586272
0.996130119403307535)), ((-1.54655249947779994 0.995186041738558957,
-1.54499301719928761 0.995312293499367451, -1.54499301635595665
0.995421883734666779, -1.54655249947779994 0.995186041738558957)),
((-1.5466074994591299 1.08624204173854011, -1.54631431516927331
1.08619819902499004, -1.54633399044383202 1.08621614521949872,
-1.5466074994591299 1.08624204173854011)), ((-1.5466074994591299
1.08624204173854011, -1.54499299946018764 1.08107828103308101,
-1.54499301135365474 1.08339600649103418, -1.5466074994591299
1.08624204173854011)), ((-1.53918049946492008 1.05799404173705991,
-1.5466074994591299 1.08624204173854011, -1.54634340852929708
1.08622473535414787, -1.99999999954877006 1.5, -1.99999999954877006 0.5,
-1.54499301954877 0.995006979999999985, -1.54499301770602582
0.995246443249784174, -1.54655249947779994 0.995186041738558957,
-1.54499299947244828 1.02129648988327593, -1.5449929994644851
1.06013330832250108, -1.5466074994591299 1.08624204173854011,
-1.54499299946029955 1.08053288029024164, -1.53891949946469997
1.05905604173701007, -1.53918049946492008 1.05799404173705991)))", op1);
boost::geometry::read_wkt("POLYGON((-1.53581949946317997
1.06649704173632998, -1.5466074994591299 1.08624204173854011,
-1.53723249946403007 1.06231704173661989, -1.53581949946317997
1.06649704173632998))", op2);
boost::geometry::difference(op1, op2, result);
-- Ticket URL: <https://svn.boost.org/trac10/ticket/13519> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2018-04-13 15:28:06 UTC