diff --git a/Mesh/BDS.cpp b/Mesh/BDS.cpp index 3ec9f9414305d60b0e695e4cfb64ac32a15c4a30..485e83ab958c45556ab8d052f7ee873f1cd40dc6 100644 --- a/Mesh/BDS.cpp +++ b/Mesh/BDS.cpp @@ -1,4 +1,4 @@ -// $Id: BDS.cpp,v 1.75 2007-04-12 13:09:09 remacle Exp $ +// $Id: BDS.cpp,v 1.76 2007-04-13 12:49:52 remacle Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -893,8 +893,8 @@ bool BDS_Mesh::collapse_edge_parametric(BDS_Edge * e, BDS_Point * p) std::list < BDS_Face * >t; BDS_Point *o = e->othervertex(p); - if(o->g != p->g) - return false; + // if(o->g != p->g) + // return false; // printf("collapsing an edge :"); // print_edge(e); diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index 3464176efa9ee77b776fdbb5d1feed6dddb15018..a7f542f7d9a91ab7091aa648be8ba11bc16a6957 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFace.cpp,v 1.71 2007-04-12 13:13:55 remacle Exp $ +// $Id: meshGFace.cpp,v 1.72 2007-04-13 12:49:52 remacle Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -270,7 +270,7 @@ void OptimizeMesh(GFace *gf, BDS_Mesh &m, const int NIT) ++itp; } } - if(0){ + for (int KK=0;KK<4;KK++){ // swap edges that provide a better configuration int NN1 = m.edges.size(); int NN2 = 0; @@ -278,30 +278,17 @@ void OptimizeMesh(GFace *gf, BDS_Mesh &m, const int NIT) while (1) { if (NN2++ >= NN1)break; - if (!(*it)->deleted && (*it)->numfaces() == 2) + if (!(*it)->deleted) { - - BDS_Point *op[2]; - (*it)->oppositeof(op); - BDS_Point *p1 = (*it)->p1; - BDS_Point *p2 = (*it)->p2; - std::list < BDS_Face * >t1,t2,to1,to2; - p1->getTriangles(t1); - p2->getTriangles(t2); - op[0]->getTriangles(to1); - op[1]->getTriangles(to2); - - if (t1.size() == 7 && t2.size() == 7 && to1.size() == 5 && to2.size() == 5) - m.swap_edge ( *it , BDS_SwapEdgeTestParametric()); - else if (t1.size() == 5 && t2.size() == 5 && to1.size() == 7 && to2.size() == 7) - m.swap_edge ( *it , BDS_SwapEdgeTestParametric()); - // else if ( edgeSwapTestQuality(*it) == 1) - // m.swap_edge ( *it , BDS_SwapEdgeTestParametric()); - } + int result = edgeSwapTestQuality(*it,5); + if (result >= 0) + if(edgeSwapTestDelaunay(*it,gf) || result > 0) + m.swap_edge ( *it , BDS_SwapEdgeTestParametric()); + } ++it; } + m.cleanup(); } - m.cleanup(); } }