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