diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_overlapping_polyline.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_overlapping_polyline.cpp index 2df47f53932..96fa16269a3 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_overlapping_polyline.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_overlapping_polyline.cpp @@ -27,7 +27,7 @@ int main() { CT ct; - std::vector P = { Point(0,1), Point(1,1), Point(2,2), Point(3,1), Point(4,1), Point(5,1) }; + std::vector P = { Point(0,1), Point(1,1), Point(2,2), Point(3,1), Point(4,1), Point(4,2), Point(4,1), Point(5,1) }; std::vector Q = { Point(5,0), Point(4,1), Point(3,1), Point(2,2), Point(1,1), Point(0,0) }; std::vector R = { Point(3,1), Point(4,1) }; diff --git a/Polyline_simplification_2/include/CGAL/Polyline_simplification_2/simplify.h b/Polyline_simplification_2/include/CGAL/Polyline_simplification_2/simplify.h index 579bcfc9707..1b40efc3202 100644 --- a/Polyline_simplification_2/include/CGAL/Polyline_simplification_2/simplify.h +++ b/Polyline_simplification_2/include/CGAL/Polyline_simplification_2/simplify.h @@ -155,9 +155,15 @@ public: Constraint_iterator cit = pct.constraints_begin(), e = pct.constraints_end(); for(; cit!=e; ++cit){ Constraint_id cid = *cit; - Vertices_in_constraint_iterator it = pct.vertices_in_constraint_begin(cid); + Vertices_in_constraint_iterator it = pct.vertices_in_constraint_begin(cid), + ite = pct.vertices_in_constraint_end(cid); (*it)->set_removable(false); - it = pct.vertices_in_constraint_end(cid); + ++it; + for(; it != ite; ++it){ + if((boost::next(it) != ite) && (boost::prior(it)== boost::next(it))){ + (*it)->set_removable(false); + } + } it = boost::prior(it); (*it)->set_removable(false); }