|
Geometry : |
Subject: [geometry] problem with intersection on legacy geometry
From: Lepere Renaud (lepere.renaud_at_[hidden])
Date: 2013-08-25 05:34:03
I have a legacy geometry and i want boost::geometry to use it. It
works on some examples but not always. I have followed the manual but
i am stuck with the following test :
BOOST_AUTO_TEST_CASE(TestPolygonUnion)
{
Polygon poly1(Ring({{0, 0}, {10, 0}, {10, 10}, {0, 10}}));
Polygon poly2(Ring({{5, 5}, {15, 5}, {15, 15}, {5, 15}}));
std::vector< Polygon > polygons;
intersection(poly1, poly2, polygons); <- in this method
BOOST_REQUIRE_EQUAL(polygons.size(), 1u);
BOOST_CHECK_EQUAL(area(polygons[0]), 25.0);
}
It leads to a error in backtrack_check_si.hpp
template
<
typename Geometry1,
typename Geometry2
>
class backtrack_check_self_intersections
{
...
// Make bad output clean
rings.resize(size_at_start);
ring.clear(); <- here this method does not exist
My ring class does not have this clear method ; should not it use the method i defined ?
template <> struct clear< Geom::Ring >
{
static void apply(Geom::Ring & r) { r.points().clear(); };
};
Best regards
Renaud
Geometry list run by mateusz at loskot.net