handle tetras in removeunrefvert

This commit is contained in:
T.Alderighi 2018-06-07 10:58:10 +02:00
parent d37d9cdbfc
commit 0cc19679b0
2 changed files with 1543 additions and 1534 deletions

View File

@ -336,17 +336,26 @@ public:
std::vector<bool> referredVec(m.vert.size(),false);
int deleted = 0;
for(auto fi=m.face.begin();fi!=m.face.end();++fi)
for(auto fi = m.face.begin(); fi != m.face.end(); ++fi)
if( !(*fi).IsD() )
for(auto j=0;j<(*fi).VN();++j)
referredVec[tri::Index(m,(*fi).V(j))]=true;
for(auto j=0; j < (*fi).VN(); ++j)
referredVec[tri::Index(m, (*fi).V(j))]=true;
for(auto ei=m.edge.begin();ei!=m.edge.end();++ei)
if( !(*ei).IsD() ){
referredVec[tri::Index(m,(*ei).V(0))]=true;
referredVec[tri::Index(m,(*ei).V(1))]=true;
referredVec[tri::Index(m, (*ei).V(0))]=true;
referredVec[tri::Index(m, (*ei).V(1))]=true;
}
for(auto ti=m.tetra.begin(); ti!=m.tetra.end();++ti)
if( !(*ti).IsD() ){
referredVec[tri::Index(m, (*ti).V(0))]=true;
referredVec[tri::Index(m, (*ti).V(1))]=true;
referredVec[tri::Index(m, (*ti).V(2))]=true;
referredVec[tri::Index(m, (*ti).V(3))]=true;
}
if(!DeleteVertexFlag)
return std::count(referredVec.begin(),referredVec.end(),true);

View File

@ -382,7 +382,7 @@ public:
Clear();
}
int Mem(const int & nv, const int & nf) const {
int Mem(const int & nv, const int & nf, const int & nt) const {
typename std::set< PointerToAttribute>::const_iterator i;
int size = 0;
size += sizeof(TriMesh)+sizeof(VertexType)*nv+sizeof(FaceType)*nf;
@ -394,7 +394,7 @@ public:
for( i = face_attr.begin(); i != face_attr.end(); ++i)
size += ((SimpleTempDataBase*)(*i)._handle)->SizeOf()*nf;
for (i = tetra_attr.begin(); i != tetra_attr.end(); ++i)
size += ((SimpleTempDataBase *)(*i)._handle)->SizeOf() * tn;
size += ((SimpleTempDataBase *)(*i)._handle)->SizeOf() * nt;
for( i = mesh_attr.begin(); i != mesh_attr.end(); ++i)
size += ((SimpleTempDataBase*)(*i)._handle)->SizeOf();