From da6bf044f00f4183498b9961d51e7d2d5218d34f Mon Sep 17 00:00:00 2001 From: cignoni Date: Tue, 23 Nov 2004 10:34:45 +0000 Subject: [PATCH] passed parameters by reference in many funcs and gcc cleaning --- .../local_optimization/tri_edge_collapse.h | 19 +++++++++++++------ .../tri_edge_collapse_quadric.h | 15 +++++++++------ vcg/complex/trimesh/edge_collapse.h | 6 ++++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/vcg/complex/local_optimization/tri_edge_collapse.h b/vcg/complex/local_optimization/tri_edge_collapse.h index 70eb76f3..37c88949 100644 --- a/vcg/complex/local_optimization/tri_edge_collapse.h +++ b/vcg/complex/local_optimization/tri_edge_collapse.h @@ -22,6 +22,9 @@ ****************************************************************************/ /**************************************************************************** $Log: not supported by cvs2svn $ + Revision 1.13 2004/10/25 16:28:32 ganovelli + pos to edge + Revision 1.12 2004/09/15 11:16:02 ganovelli changed P() to cP() @@ -63,7 +66,8 @@ class TriEdgeCollapse: public LocalOptimization::LocModType , publi { public: /// static data to gather statistical information about the reasons of collapse failures - struct FailStat { + class FailStat { + public: static int &Volume() {static int vol=0; return vol;} static int &LinkConditionFace(){static int lkf=0; return lkf;} static int &LinkConditionEdge(){static int lke=0; return lke;} @@ -107,7 +111,7 @@ TriMeshType *mt; inline TriEdgeCollapse() {} ///Constructor with postype - inline TriEdgeCollapse(EdgeType p, int mark) + inline TriEdgeCollapse(const EdgeType &p, int mark) { localMark = mark; pos=p; @@ -149,18 +153,21 @@ public: { #ifdef __SAVE__LOG__ static FILE * co = fopen("col.txt","w"); -#endif __SAVE__LOG__ +#endif //SAVE__LOG__ GlobalMark()++;int nn=0; VertexType *v[2]; v[0]= pos.V(0);v[1]=pos.V(1); v[1]->IMark() = GlobalMark(); - vcg::face::VFIterator vfi(v[1]->VFp(),v[1]->VFi()); + // First loop around the remaining vertex to unmark visited flags + vcg::face::VFIterator vfi(v[1]->VFp(),v[1]->VFi()); while (!vfi.End()){ vfi.F()->V1(vfi.I())->ClearV(); vfi.F()->V2(vfi.I())->ClearV(); ++vfi; } + + // Second Loop vfi.F() = v[1]->VFp(); vfi.I() = v[1]->VFi(); while (!vfi.End()) @@ -173,7 +180,7 @@ static FILE * co = fopen("col.txt","w"); #ifdef __SAVE__LOG__ fprintf(co,"%i %i \n",vfi.F()->V(vfi.I())-&*mt->vert.begin(), vfi.F()->V1(vfi.I())-&*mt->vert.begin()); -#endif __SAVE__LOG__ +#endif //SAVE__LOG__ vfi.F()->V1(vfi.I())->SetV(); h_ret.push_back(HeapElem(new MYTYPE(EdgeType (vfi.F()->V(vfi.I()),vfi.F()->V1(vfi.I())),GlobalMark()))); @@ -188,7 +195,7 @@ static FILE * co = fopen("col.txt","w"); #ifdef __SAVE__LOG__ fprintf(co,"%i %i \n",vfi.F()->V(vfi.I())-&*mt->vert.begin(), vfi.F()->V2(vfi.I())-&*mt->vert.begin()); -#endif __SAVE__LOG__ +#endif //SAVE__LOG__ vfi.F()->V2(vfi.I())->SetV(); h_ret.push_back(HeapElem(new MYTYPE(EdgeType (vfi.F()->V(vfi.I()),vfi.F()->V2(vfi.I())),GlobalMark()))); diff --git a/vcg/complex/local_optimization/tri_edge_collapse_quadric.h b/vcg/complex/local_optimization/tri_edge_collapse_quadric.h index d26d66b3..c1bc789b 100644 --- a/vcg/complex/local_optimization/tri_edge_collapse_quadric.h +++ b/vcg/complex/local_optimization/tri_edge_collapse_quadric.h @@ -24,6 +24,10 @@ History $Log: not supported by cvs2svn $ +Revision 1.3 2004/10/25 07:07:56 ganovelli +A vcg.::Pos was used to implement the collapse type. CHanged +to vcg::Edge + Revision 1.2 2004/09/29 17:08:16 ganovelli corrected error in -error (see localoptimization) @@ -128,7 +132,7 @@ public: // puntatori ai vertici che sono stati messi non-w per preservare il boundary static std::vector & WV(){static std::vector _WV; return _WV;}; - inline TriEdgeCollapseQuadric(EdgeType p, int i) + inline TriEdgeCollapseQuadric(const EdgeType &p, int i) //:TEC(p,i){} { localMark = i; @@ -138,11 +142,10 @@ public: inline bool IsFeasible(){ - bool res = (!Params().PreserveTopology || LinkConditions(pos) ); - if(!res) - ++FailStat::LinkConditionEdge(); - return res; - } + bool res = ( !Params().PreserveTopology || LinkConditions(pos) ); + if(!res) ++( TriEdgeCollapse< TriMeshType,MYTYPE>::FailStat::LinkConditionEdge() ); + return res; + } void Execute(TriMeshType &m) { diff --git a/vcg/complex/trimesh/edge_collapse.h b/vcg/complex/trimesh/edge_collapse.h index 6326d12a..91ebc638 100644 --- a/vcg/complex/trimesh/edge_collapse.h +++ b/vcg/complex/trimesh/edge_collapse.h @@ -22,6 +22,8 @@ ****************************************************************************/ /**************************************************************************** History + $Log: not supported by cvs2svn $ + ****************************************************************************/ #ifndef __VCG_TETRA_TRI_COLLAPSE @@ -109,7 +111,7 @@ class EdgeCollapse static VFIVec & AV01(){static VFIVec av01; return av01;} - void FindSets(EdgeType p) + void FindSets(EdgeType &p) { VertexType * v0 = p.V(0); VertexType * v1 = p.V(1); @@ -202,7 +204,7 @@ class EdgeCollapse - int DoCollapse(EdgeType & c, Point3 p) + int DoCollapse(EdgeType & c, const Point3 &p) { FindSets(c); typename VFIVec::iterator i;