diff --git a/Packages/Triangulation_2/changes.txt b/Packages/Triangulation_2/changes.txt index 18f9b4fee40..f6cf6c8ffcb 100644 --- a/Packages/Triangulation_2/changes.txt +++ b/Packages/Triangulation_2/changes.txt @@ -1,6 +1,9 @@ Package triangulation: provides triangulations Delaunay triangulations, constrained and regular triangulations with tests and examples. +Ver 7.08 () +- fixed namespace for sscanf and ... in demo/Triangulation_2/parse.C + Ver 7.07 (9/03/02) - changed Infinite_tester from private to protected for KCC - suppressed some typedef in test functions for KCC diff --git a/Packages/Triangulation_2/include/CGAL/Constrained_triangulation_plus_2.h b/Packages/Triangulation_2/include/CGAL/Constrained_triangulation_plus_2.h index 684f0154d56..34ac2e8d5ea 100644 --- a/Packages/Triangulation_2/include/CGAL/Constrained_triangulation_plus_2.h +++ b/Packages/Triangulation_2/include/CGAL/Constrained_triangulation_plus_2.h @@ -276,6 +276,7 @@ insert_subconstraint(Vertex_handle vaa, // insert the subconstraint [vaa vbb] // it will eventually be splitted into several subconstraints { + CGAL_triangulation_precondition( vaa != vbb); Vertex_handle vi; Face_handle fr; @@ -299,9 +300,12 @@ insert_subconstraint(Vertex_handle vaa, conflict_boundary_ba, vi); if ( intersection) { - hierarchy.split_constraint(vaa,vbb,vi); - insert_subconstraint(vaa,vi); - insert_subconstraint(vi,vbb); + if (vi != vaa && vi != vbb) { + hierarchy.split_constraint(vaa,vbb,vi); + insert_subconstraint(vaa,vi); + insert_subconstraint(vi,vbb); + } + else insert_subconstraint(vaa,vbb); return; } @@ -494,13 +498,19 @@ intersect(Face_handle f, int i, bool intersection = assign(pi, result); if (!intersection) { CGAL_triangulation_assertion(false); // what can I do here? TODO + // I should probably issue vi = one of vaa, vbb, vcc, vdd ? } remove_constraint(f, i); Vertex_handle vi = insert(pi, f); - hierarchy.split_constraint(vcc,vdd,vi); - insert_subconstraint(vcc,vi); - insert_subconstraint(vi, vdd); + // if intersection point is found on vcc or vdd nothin is to be done + // for the subconstraint [vcc,vdd] + // this may happen due to approximate construction of the intersection + if (vi != vcc && vi != vdd) { + hierarchy.split_constraint(vcc,vdd,vi); + insert_subconstraint(vcc,vi); + insert_subconstraint(vi, vdd); + } return vi; }