diff --git a/Triangulation_2/include/CGAL/Regular_triangulation_2.h b/Triangulation_2/include/CGAL/Regular_triangulation_2.h index cb60ed29190..c2eee0d338b 100644 --- a/Triangulation_2/include/CGAL/Regular_triangulation_2.h +++ b/Triangulation_2/include/CGAL/Regular_triangulation_2.h @@ -1068,16 +1068,24 @@ insert(const Weighted_point &p, Locate_type lt, Face_handle loc, int li) } Vertex_handle vv = loc->vertex(li); - if (power_test (vv->point(), p) < 0) { - return hide_new_vertex (loc, p); - } - - v = this->_tds.create_vertex(); - v->set_point(p); - exchange_incidences(v,vv); - hide_vertex(loc, vv); - regularize (v); - return v; + CGAL::Oriented_side side = power_test (vv->point(), p); + + switch(side) { + + case ON_NEGATIVE_SIDE: + return hide_new_vertex (loc, p); + + case ON_POSITIVE_SIDE: + v = this->_tds.create_vertex(); + v->set_point(p); + exchange_incidences(v,vv); + hide_vertex(loc, vv); + regularize (v); + return v; + + case ON_ORIENTED_BOUNDARY: + return vv; + } } case Base::EDGE: {