mirror of https://github.com/CGAL/cgal
apply the same choice as the one made in r73262 for CDT_2
This commit is contained in:
parent
cd165546fc
commit
720244f8f8
|
|
@ -120,7 +120,12 @@ public:
|
||||||
void flip(Face_handle& f, int i);
|
void flip(Face_handle& f, int i);
|
||||||
void flip_around(Vertex_handle va);
|
void flip_around(Vertex_handle va);
|
||||||
void flip_around(List_vertices & new_vertices);
|
void flip_around(List_vertices & new_vertices);
|
||||||
void propagating_flip(Face_handle& f,int i);
|
#ifdef CGAL_CDT2_USE_RECURSIVE_PROPAGATING_FLIP
|
||||||
|
void non_recursive_propagating_flip(Face_handle f,int i);
|
||||||
|
void propagating_flip(Face_handle f,int i, int depth=0);
|
||||||
|
#else
|
||||||
|
void propagating_flip(Face_handle f,int i);
|
||||||
|
#endif
|
||||||
void propagating_flip(List_edges & edges);
|
void propagating_flip(List_edges & edges);
|
||||||
|
|
||||||
// CONFLICTS
|
// CONFLICTS
|
||||||
|
|
@ -483,35 +488,67 @@ flip_around(List_vertices& new_vertices)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef CGAL_DT2_USE_RECURSIVE_PROPAGATING_FLIP
|
||||||
template <class Gt, class Tds, class Itag >
|
template <class Gt, class Tds, class Itag >
|
||||||
void
|
void
|
||||||
Constrained_Delaunay_triangulation_2<Gt,Tds,Itag>::
|
Constrained_Delaunay_triangulation_2<Gt,Tds,Itag>::
|
||||||
propagating_flip(Face_handle& f,int i)
|
non_recursive_propagating_flip(Face_handle f , int i)
|
||||||
|
{
|
||||||
|
std::stack<Edge> edges;
|
||||||
|
const Vertex_handle& vp = f->vertex(i);
|
||||||
|
edges.push(Edge(f,i));
|
||||||
|
|
||||||
|
while(! edges.empty()){
|
||||||
|
const Edge& e = edges.top();
|
||||||
|
f = e.first;
|
||||||
|
i = e.second;
|
||||||
|
|
||||||
|
Face_handle ni = f->neighbor(i);
|
||||||
|
flip(f,i);
|
||||||
|
if ( !is_flipable(f,i) ) edges.pop();
|
||||||
|
|
||||||
|
i = n->index(vp);
|
||||||
|
if ( is_flipable(n,i) ) edges.push( Edge(n,i) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Gt, class Tds, class Itag >
|
||||||
|
void
|
||||||
|
Constrained_Delaunay_triangulation_2<Gt,Tds,Itag>::
|
||||||
|
propagating_flip(Face_handle f,int i, int depth)
|
||||||
|
{
|
||||||
|
if (!is_flipable(f,i)) return;
|
||||||
|
#ifdef CGAL_DT2_IMMEDIATELY_NON_RECURSIVE_PROPAGATING_FLIP
|
||||||
|
non_recursive_propagating_flip(f,i);
|
||||||
|
#else
|
||||||
|
int max_depth = 100;
|
||||||
|
if(depth==max_depth){
|
||||||
|
non_recursive_propagating_flip(f,i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Face_handle ni = f->neighbor(i);
|
||||||
|
flip(f, i); // flip for constrained triangulations
|
||||||
|
propagating_flip(f,i);
|
||||||
|
i = ni->index(f->vertex(i));
|
||||||
|
propagating_flip(ni,i);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
template < class Gt, class Tds, class Itag >
|
||||||
|
void
|
||||||
|
Constrained_Delaunay_triangulation_2<Gt,Tds,Itag>::
|
||||||
|
propagating_flip(Face_handle f,int i)
|
||||||
// similar to the corresponding function in Delaunay_triangulation_2.h
|
// similar to the corresponding function in Delaunay_triangulation_2.h
|
||||||
{
|
{
|
||||||
#ifdef CGAL_TRIANGULATION_2_USE_OLD_PROPAGATING_FLIP
|
|
||||||
if (!is_flipable(f,i)) return;
|
if (!is_flipable(f,i)) return;
|
||||||
Face_handle ni = f->neighbor(i);
|
Face_handle ni = f->neighbor(i);
|
||||||
flip(f, i); // flip for constrained triangulations
|
flip(f, i); // flip for constrained triangulations
|
||||||
propagating_flip(f,i);
|
propagating_flip(f,i);
|
||||||
i = ni->index(f->vertex(i));
|
i = ni->index(f->vertex(i));
|
||||||
propagating_flip(ni,i);
|
propagating_flip(ni,i);
|
||||||
#else // NO CGAL_TRIANGULATION_2_USE_OLD_PROPAGATING_FLIP
|
|
||||||
const Vertex_handle v = f->vertex(i);
|
|
||||||
std::stack<Face_handle> stack;
|
|
||||||
stack.push(f);
|
|
||||||
while(!stack.empty()) {
|
|
||||||
Face_handle f = stack.top();
|
|
||||||
stack.pop();
|
|
||||||
const int i = f->index(v);
|
|
||||||
if (!is_flipable(f,i,true)) continue;
|
|
||||||
const Face_handle n = f->neighbor(i);
|
|
||||||
flip(f, i); // flip for constrained triangulations
|
|
||||||
stack.push(n);
|
|
||||||
stack.push(f);
|
|
||||||
}
|
|
||||||
#endif // NO CGAL_TRIANGULATION_2_USE_OLD_PROPAGATING_FLIP
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
template < class Gt, class Tds, class Itag >
|
template < class Gt, class Tds, class Itag >
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue