some clean up in the remove(Vertex* v) function

This commit is contained in:
Mariette Yvinec 1998-07-10 14:06:29 +00:00
parent e39cbafa58
commit c10a66340e
1 changed files with 23 additions and 20 deletions

View File

@ -310,16 +310,17 @@ public:
void remove(Vertex* v) void remove(Vertex* v)
// remove a vertex of degree 3 // remove a vertex of degree 3
{ {
CGAL_triangulation_precondition(v != NULL); CGAL_triangulation_assertion(v != NULL);
CGAL_triangulation_precondition(v != _infinite_vertex); CGAL_triangulation_assertion(v != _infinite_vertex);
CGAL_triangulation_precondition(v->degree() == 3); CGAL_triangulation_assertion(v->degree() == 3);
if (number_of_vertices()==1){ // this cannot happens because of third assertion;
set_number_of_vertices(0); // if (number_of_vertices()==1){
set_finite_vertex(NULL); // set_number_of_vertices(0);
delete v; // set_finite_vertex(NULL);
return; // delete v;
} // return;
// }
Face* f = v->face(); Face* f = v->face();
// take care of _finite_vertex data member // take care of _finite_vertex data member
@ -330,19 +331,21 @@ public:
set_finite_vertex( vv); set_finite_vertex( vv);
} }
if (number_of_vertices() == 2){ // this cannot happens because of third assertion;
Face* ff = f->neighbor(f->index(infinite_vertex())); // if (number_of_vertices() == 2){
delete f; // Face* ff = f->neighbor(f->index(infinite_vertex()));
delete ff; // delete f;
delete v; // delete ff;
set_number_of_vertices(1); // delete v;
} // set_number_of_vertices(1);
else{ // }
f->remove(v); // else
{
f->remove(v); //f->remove returns true because degree 3 has been asserted
delete v; delete v;
//update number of vertices //update number of vertices
Vertex* vv= finite_vertex(); // Vertex* vv= finite_vertex();
Face* f = vv->face(); //Face* f = vv->face();
set_number_of_vertices( number_of_vertices() -1); set_number_of_vertices( number_of_vertices() -1);
} }
} }