/[ff3d]/ff3d/solver/MeshSimplifier.cpp
ViewVC logotype

Diff of /ff3d/solver/MeshSimplifier.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by delpinux, Sun May 11 18:07:21 2003 UTC revision 1.4 by delpinux, Sun Jun 15 18:37:33 2003 UTC
# Line 89  void MeshSimplifier::__proceed(const Mes Line 89  void MeshSimplifier::__proceed(const Mes
89      }      }
90    }    }
91    
92      typedef std::map<const Vertex*, std::set<Triangle*> > VertexTriangles;
93      VertexTriangles vertexTriangles;
94    
95      for (typename IntermediateCells::const_iterator i = intermediateCells.begin();
96           i != intermediateCells.end(); ++i) {
97        ElementType* const & pT = (*i);
98        const ElementType& t = *pT;
99    
100        for (size_t n = 0; n < ElementType::NumberOfVertices; ++n) {
101          (vertexTriangles[&(t(n))]).insert(pT);
102        }
103      }
104    
105    for(typename EdgeElements::iterator i = edgeElements.begin();    for(typename EdgeElements::iterator i = edgeElements.begin();
106        i != edgeElements.end(); ++i) {        i != edgeElements.end(); ++i) {
107      vertexEdges[(*vertices).number(*((*i).first).first) ].insert((*i).first);      vertexEdges[(*vertices).number(*((*i).first).first) ].insert((*i).first);
# Line 109  void MeshSimplifier::__proceed(const Mes Line 122  void MeshSimplifier::__proceed(const Mes
122      maxSize = std::max(norm, maxSize);      maxSize = std::max(norm, maxSize);
123    }    }
124    
   
125    // Edge collapsing    // Edge collapsing
126    for (typename EdgeSizes::iterator i = edgeSizes.begin();    for (typename EdgeSizes::iterator i = edgeSizes.begin();
127         (*i).first < 0.25*maxSize; ++i) {         (*i).first < 0.5*maxSize; ++i) {
     TinyVector<ElementType::NumberOfVertices, const Vertex*> newVertices;  
128    
129      const Vertex* v0 = ((*i).second).first;      TinyVector<ElementType::NumberOfVertices, const Vertex*> newVertices;
     const Vertex* v1 = ((*i).second).second;  
130    
131      for (size_t n=0; n<ElementType::NumberOfVertices; ++n) {      Vertex* v0 = ((*i).second).first;
132        // WRITE COLLAPSING ELEMENTS HERE.      Vertex* v1 = ((*i).second).second;
     }  
133    
134      size_t v0Number = (*vertices).number(*v0);      size_t v0Number = (*vertices).number(*v0);
135    
136        std::set<ElementType*>& trianglesToModify = vertexTriangles[v1];
137            
138      for(typename std::list<ElementType*>::iterator      for(typename std::list<ElementType*>::iterator
139            j = edgeElements[(*i).second].begin();            j = edgeElements[(*i).second].begin();
140          j != edgeElements[(*i).second].end(); ++j) {          j != edgeElements[(*i).second].end(); ++j) {
141        intermediateCells.erase(*j);        intermediateCells.erase(*j);
142          trianglesToModify.erase(*j);
143        }
144    
145        for (typename std::set<ElementType*>::iterator tt = trianglesToModify.begin();
146             tt != trianglesToModify.end(); ++tt) {
147          (*tt)->replace(v1, v0);
148      }      }
149    }    }
150    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26