Fixes and apply to multipolygon

This commit is contained in:
Maxime Gimeno 2020-01-03 10:51:19 +01:00
parent 9a330fd140
commit 6c35826afd
2 changed files with 12 additions and 5 deletions

View File

@ -44,7 +44,7 @@ namespace internal {
template <typename K>
void pop_back_if_equal_to_front(CGAL::Polygon_2<K>& poly)
{
CGAL::Polygon_2<K>::iterator it = poly.end();
typename CGAL::Polygon_2<K>::iterator it = poly.end();
--it;
if( (*poly.begin()) == *it){
poly.erase(it);
@ -233,7 +233,16 @@ read_multi_polygon_WKT( std::istream& in,
if(type.substr(0, 12).compare("MULTIPOLYGON")==0)
{
boost::geometry::read_wkt(line, gc);
try {
boost::geometry::read_wkt(line, gc);
} catch( ...){
in.setstate(std::ios::failbit);
return in;
};
for( typename
internal::Geometry_container<MultiPolygon, boost::geometry::multi_polygon_tag>::iterator it
= gc.begin(); it != gc.end(); ++it)
pop_back_if_equal_to_front(*it);
break;
}
}

View File

@ -60,17 +60,14 @@ Polygon generate_polygon()
border.push_back(bl);
border.push_back(t);
border.push_back(br);
border.push_back(bl);
Polygon::Polygon_2 hole1;
hole1.push_back(Point((xt+xmax)/2, (ymin+ymid)/2));
hole1.push_back(Point(((xt+xmax)/2), ymid));
hole1.push_back(Point(xt+(xmax-xt)/4, (ymin+ymid)/2));
hole1.push_back(Point((xt+xmax)/2, (ymin+ymid)/2));
Polygon::Polygon_2 hole2;
hole2.push_back(Point((xt+xmin)/2, (ymin+ymid)/2));
hole2.push_back(Point(((xt+xmin)/2), ymid));
hole2.push_back(Point(xmin+(xt-xmin)/4, (ymin+ymid)/2));
hole2.push_back(Point((xt+xmin)/2, (ymin+ymid)/2));
Polygon::Holes_container holes;
holes.push_back(hole1);
holes.push_back(hole2);
@ -150,6 +147,7 @@ int main()
CGAL::read_polygon_WKT(is, test_poly);
is.close();
}
CGAL_assertion(poly == test_poly);
MultiPoint pees = generate_multipoint();