[Boost-bugs] [Boost C++ Libraries] #6696: boost::geometry::intersection on two triangles creates self-intersecting polygon

Subject: [Boost-bugs] [Boost C++ Libraries] #6696: boost::geometry::intersection on two triangles creates self-intersecting polygon
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2012-03-17 00:51:20


#6696: boost::geometry::intersection on two triangles creates self-intersecting
polygon
------------------------------------------------------------------------------------------+
 Reporter: snubdodecahedron@… | Owner: barendgehrels
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: geometry
  Version: Boost 1.49.0 | Severity: Problem
 Keywords: has_self_intersections intersection geometry overlay_invalid_input_exception |
------------------------------------------------------------------------------------------+
 The code below creates two triangles sharing one vertex, intersects them,
 and then tests the result for self intersections. The test fails on
 1.49.0.

 #include <iostream>
 #include <deque>

 #include <boost/geometry.hpp>
 #include <boost/geometry/geometries/point_xy.hpp>
 #include <boost/geometry/geometries/polygon.hpp>
 #include <boost/geometry/io/wkt/wkt.hpp>
 #include <boost/geometry/multi/geometries/register/multi_polygon.hpp>

 typedef
 boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>,false>
 polygon;
 BOOST_GEOMETRY_REGISTER_MULTI_POLYGON(std::deque<polygon>);

 int main()
 {
     polygon green, blue;
     std::deque<polygon> output;

     boost::geometry::read_wkt(
         "POLYGON((0.94458145927637815475 0.76153991837054491043 ,
 0.37399105052463710308 0.59515245421789586544 , "
         "0.031151068862527608871 0.95449111564084887505 ,
 0.94458145927637815475 0.76153991837054491043))", green);

     boost::geometry::read_wkt(
         "POLYGON((0.94458145927637815475 0.76153991837054491043 ,
 0.90063317718199253914 0.7487243450636832387 , "
         "0.57996011668279578988 0.83856179693083876536 ,
 0.94458145927637815475 0.76153991837054491043))", blue);

     boost::geometry::intersection(blue, green, output);

     std::cout<<"testing output"<<std::endl;

     boost::geometry::detail::overlay::has_self_intersections(output);

     std::cout<<"valid output"<<std::endl;

     return 0;
 }

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/6696>
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 : 2017-02-16 18:50:09 UTC