Added ComputeEdgeHistogram to Stat functions
This commit is contained in:
parent
25640feb09
commit
11fa2ba58a
|
@ -48,6 +48,7 @@ Initial Commit
|
||||||
#include <vcg/complex/algorithms/closest.h>
|
#include <vcg/complex/algorithms/closest.h>
|
||||||
#include <vcg/space/index/grid_static_ptr.h>
|
#include <vcg/space/index/grid_static_ptr.h>
|
||||||
#include <vcg/complex/allocate.h>
|
#include <vcg/complex/allocate.h>
|
||||||
|
#include <vcg/complex/algorithms/update/flag.h>
|
||||||
|
|
||||||
|
|
||||||
namespace vcg {
|
namespace vcg {
|
||||||
|
@ -64,6 +65,7 @@ class Stat
|
||||||
typedef typename MeshType::FaceType FaceType;
|
typedef typename MeshType::FaceType FaceType;
|
||||||
typedef typename MeshType::FacePointer FacePointer;
|
typedef typename MeshType::FacePointer FacePointer;
|
||||||
typedef typename MeshType::FaceIterator FaceIterator;
|
typedef typename MeshType::FaceIterator FaceIterator;
|
||||||
|
typedef typename MeshType::EdgeIterator EdgeIterator;
|
||||||
typedef typename MeshType::FaceContainer FaceContainer;
|
typedef typename MeshType::FaceContainer FaceContainer;
|
||||||
typedef typename vcg::Box3<ScalarType> Box3Type;
|
typedef typename vcg::Box3<ScalarType> Box3Type;
|
||||||
|
|
||||||
|
@ -202,14 +204,33 @@ class Stat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ComputeEdgeHistogram( MeshType & m, Histogramf &h) // V1.0
|
static void ComputeEdgeHistogram( MeshType & m, Histogramf &h)
|
||||||
{
|
{
|
||||||
ScalarType Diag = m.bbox.Diag();
|
assert(m.edge.size()>0);
|
||||||
h.Clear();
|
h.Clear();
|
||||||
h.SetRange( 0, Diag, 10000);
|
h.SetRange( 0, m.bbox.Diag(), 10000);
|
||||||
FaceIterator fi;VertexIterator vi;
|
for(EdgeIterator ei = m.edge.begin(); ei != m.edge.end(); ++ei)
|
||||||
for(vi = m.vert.begin(); vi != m.vert.end(); ++vi) (*vi).ClearV();
|
{
|
||||||
for(fi = m.face.begin(); fi != m.face.end(); ++fi)
|
if(!(*ei).IsD())
|
||||||
|
{
|
||||||
|
h.Add(Distance<float>((*ei).V(0)->P(),(*ei).V(1)->P()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static ScalarType ComputeEdgeAverage(MeshType & m)
|
||||||
|
{
|
||||||
|
Histogramf h;
|
||||||
|
ComputeEdgeHistogram(m,h);
|
||||||
|
return h.Avg();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int ComputeFaceEdgeHistogram( MeshType & m, Histogramf &h)
|
||||||
|
{
|
||||||
|
h.Clear();
|
||||||
|
h.SetRange( 0, m.bbox.Diag(), 10000);
|
||||||
|
tri::UpdateFlags<MeshType>::VertexClearV(m);
|
||||||
|
for(FaceIterator fi = m.face.begin(); fi != m.face.end(); ++fi)
|
||||||
{
|
{
|
||||||
if(!(*fi).IsD())
|
if(!(*fi).IsD())
|
||||||
{
|
{
|
||||||
|
@ -233,8 +254,6 @@ class Stat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(vi = m.vert.begin(); vi != m.vert.end(); ++vi)(*vi).ClearV();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}; // end class
|
}; // end class
|
||||||
|
|
Loading…
Reference in New Issue