From c4e116a42ab4ceca09f75c4413062773a2e87fa8 Mon Sep 17 00:00:00 2001 From: cignoni Date: Wed, 14 Mar 2012 16:01:30 +0000 Subject: [PATCH] Corrected a bug in the RemoveUnreferencedVertex. It considered only faces and removed vertices referenced by edges --- vcg/complex/algorithms/clean.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vcg/complex/algorithms/clean.h b/vcg/complex/algorithms/clean.h index 02d92eb3..b8c15028 100644 --- a/vcg/complex/algorithms/clean.h +++ b/vcg/complex/algorithms/clean.h @@ -335,6 +335,7 @@ private: static int RemoveUnreferencedVertex( MeshType& m, bool DeleteVertexFlag=true) // V1.0 { FaceIterator fi; + EdgeIterator ei; VertexIterator vi; int referredBit = VertexType::NewBitFlag(); @@ -349,14 +350,20 @@ private: for(j=0;j<3;++j) (*fi).V(j)->SetUserBit(referredBit); + for(ei=m.edge.begin();ei!=m.edge.end();++ei) + if( !(*ei).IsD() ){ + (*ei).V(0)->SetUserBit(referredBit); + (*ei).V(1)->SetUserBit(referredBit); + } + for(vi=m.vert.begin();vi!=m.vert.end();++vi) if( (!(*vi).IsD()) && (!(*vi).IsUserBit(referredBit))) { if(DeleteVertexFlag) Allocator::DeleteVertex(m,*vi); - ++deleted; + ++deleted; } - VertexType::DeleteBitFlag(referredBit); - return deleted; + VertexType::DeleteBitFlag(referredBit); + return deleted; } /**