void smooth_border_vertices( Halfedge_handle e, OutputIterator out) { CGAL_precondition( e->is_border()); // We know that the vertex at this edge is from the unrefined mesh. // Get the locus vectors of the unrefined vertices in the neighborhood. Vector v0 = e->prev()->prev()->opposite()->vertex()->point() -CGAL::ORIGIN; Vector v1 = e->vertex()->point() - CGAL::ORIGIN; Vector v2 = e->next()->next()->next()->vertex()->point() - CGAL::ORIGIN; *out++ = CGAL::ORIGIN + (10.0 * v0 + 16.0 * v1 + v2) / 27.0; *out++ = CGAL::ORIGIN + ( 4.0 * v0 + 19.0 * v1 + 4.0 * v2) / 27.0; *out++ = CGAL::ORIGIN + ( v0 + 16.0 * v1 + 10.0 * v2) / 27.0; }
void trisect_border_halfedge( Polyhedron& P, Halfedge_handle e) { CGAL_precondition( e->is_border()); // Create two new vertices on e. e = e->prev(); P.split_vertex( e, e->next()->opposite()); P.split_vertex( e, e->next()->opposite()); e = e->next(); // We use later for the smoothing step that e->next()->next() // is our original halfedge we started with, i.e., its vertex is // from the unrefined mesh. Split the face twice. Halfedge_handle h = e->opposite()->next(); P.split_facet( e->next()->next()->opposite(), h); P.split_facet( e->next()->opposite(), h); }