vert tetra iterator
This commit is contained in:
parent
bb2d190b88
commit
d37d9cdbfc
|
@ -98,11 +98,13 @@ public:
|
||||||
inline int & IMark() { assert(0); static int tmp=-1; return tmp;}
|
inline int & IMark() { assert(0); static int tmp=-1; return tmp;}
|
||||||
inline int cIMark() const {return 0;}
|
inline int cIMark() const {return 0;}
|
||||||
|
|
||||||
|
inline bool IsMarkEnabled() const { return T::TetraType::HasMark(); }
|
||||||
|
|
||||||
static bool HasMark() { return false; }
|
static bool HasMark() { return false; }
|
||||||
static bool HasMarkOcc() { return false; }
|
static bool HasMarkOcc() { return false; }
|
||||||
|
|
||||||
//Empty Adjacency
|
//Empty Adjacency
|
||||||
typedef int VFAdjType;
|
typedef int VTAdjType;
|
||||||
typename T::TetraPointer & VTp ( const int ) { static typename T::TetraPointer tp=0; assert(0); return tp; }
|
typename T::TetraPointer & VTp ( const int ) { static typename T::TetraPointer tp=0; assert(0); return tp; }
|
||||||
typename T::TetraPointer const cVTp( const int ) const { static typename T::TetraPointer const tp=0; assert(0); return tp; }
|
typename T::TetraPointer const cVTp( const int ) const { static typename T::TetraPointer const tp=0; assert(0); return tp; }
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,28 @@ namespace vcg {
|
||||||
/*@{*/
|
/*@{*/
|
||||||
|
|
||||||
|
|
||||||
|
template <class TetraType>
|
||||||
|
void VVStarVT( typename TetraType::VertexPointer vp, std::vector<typename TetraType::VertexPointer> & starVec)
|
||||||
|
{
|
||||||
|
typedef typename TetraType::VertexPointer VertexPointer;
|
||||||
|
|
||||||
|
starVec.clear();
|
||||||
|
|
||||||
|
tetra::VTIterator<TetraType> vti(vp->VTp(), vp->VTi());
|
||||||
|
|
||||||
|
while (!vti.End())
|
||||||
|
{
|
||||||
|
starVec.push_back(vti.Vt()->V1(vti.Vi()));
|
||||||
|
starVec.push_back(vti.Vt()->V2(vti.Vi()));
|
||||||
|
starVec.push_back(vti.Vt()->V3(vti.Vi()));
|
||||||
|
++vti;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::sort(starVec.begin(), starVec.end());
|
||||||
|
typename std::vector<VertexPointer>::iterator new_end = std::unique(starVec.begin(),starVec.end());
|
||||||
|
starVec.resize(new_end - starVec.begin());
|
||||||
|
}
|
||||||
|
|
||||||
/** Class VTIterator.
|
/** Class VTIterator.
|
||||||
This is a vertex - tetrahedron iterator
|
This is a vertex - tetrahedron iterator
|
||||||
@param MTTYPE (Template Parameter) Specifies the type of the tetrahedron.
|
@param MTTYPE (Template Parameter) Specifies the type of the tetrahedron.
|
||||||
|
@ -89,8 +111,8 @@ void operator++()
|
||||||
{
|
{
|
||||||
int vi=Vi();
|
int vi=Vi();
|
||||||
TetraType * tw = Vt();
|
TetraType * tw = Vt();
|
||||||
Vt() = tw->TVp(vi);
|
Vt() = tw->VTp(vi);
|
||||||
Vi() = tw->TVi(vi);
|
Vi() = tw->VTi(vi);
|
||||||
|
|
||||||
assert((Vt()==NULL)||((tw->V(vi))==(Vt()->V(Vi()))));
|
assert((Vt()==NULL)||((tw->V(vi))==(Vt()->V(Vi()))));
|
||||||
}
|
}
|
||||||
|
|
|
@ -315,7 +315,8 @@ class Tetra
|
||||||
return edgesface[indexE0][indexE1];
|
return edgesface[indexE0][indexE1];
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute the barycenter
|
/** @brief Computes the tetrahedron barycenter
|
||||||
|
*/
|
||||||
template <class TetraType>
|
template <class TetraType>
|
||||||
static Point3<typename TetraType::ScalarType> Barycenter(const TetraType &t)
|
static Point3<typename TetraType::ScalarType> Barycenter(const TetraType &t)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue