added IsPolygonal, which tells you whether the mesh actually represents a polygonal mesh (false if triangle only)

This commit is contained in:
mtarini 2009-04-27 14:13:28 +00:00
parent 60041df5b4
commit a7e5e51ddc
1 changed files with 15 additions and 0 deletions

View File

@ -248,6 +248,7 @@ class ConnectedIterator
typedef typename MeshType::FaceType FaceType;
typedef typename MeshType::FacePointer FacePointer;
typedef typename MeshType::FaceIterator FaceIterator;
typedef typename MeshType::ConstFaceIterator ConstFaceIterator;
typedef typename MeshType::FaceContainer FaceContainer;
typedef typename vcg::Box3<ScalarType> Box3Type;
@ -310,6 +311,7 @@ private:
typedef typename MeshType::FaceType FaceType;
typedef typename MeshType::FacePointer FacePointer;
typedef typename MeshType::FaceIterator FaceIterator;
typedef typename MeshType::ConstFaceIterator ConstFaceIterator;
typedef typename MeshType::FaceContainer FaceContainer;
typedef typename vcg::Box3<ScalarType> Box3Type;
@ -713,6 +715,19 @@ private:
return flagManifold;
}
static bool IsPolygonal(const MeshType &m)
{
if (!m.HasPerFaceFlags()) return false;
for (ConstFaceIterator fi = m.face.begin(); fi != m.face.end(); ++fi) {
if (
!fi->IsD()
&&
(fi->Flags() & (MeshType::FaceType::FAUX0|MeshType::FaceType::FAUX1|MeshType::FaceType::FAUX2) )
) return true;
}
return false;
}
static int CountNonManifoldVertexFF( MeshType & m, bool select = true )
{
assert(tri::HasFFAdjacency(m));