added one more call of VFStarVF that returns also the indexes of vertices as seen from the faces

This commit is contained in:
Nico Pietroni 2012-09-03 15:57:52 +00:00
parent d9a95aaffc
commit be2d3613b9
1 changed files with 24 additions and 3 deletions

View File

@ -625,6 +625,27 @@ void VFStarVF( typename FaceType::VertexType* vp, std::vector<FaceType *> &faceV
} }
} }
/*!
* Compute the set of faces adjacent to a given vertex using VF adjacency.
* \param vp pointer to the vertex whose star has to be computed.
* \param faceVec a std::vector of Face pointer that is filled with the adjacent faces.
* \param indexes a std::vector of integer of the vertex as it is seen from the faces
*/
template <class FaceType>
void VFStarVF( typename FaceType::VertexType* vp,
std::vector<FaceType *> &faceVec,
std::vector<int> &indexes)
{
typedef typename FaceType::VertexType* VertexPointer;
faceVec.clear();
face::VFIterator<FaceType> vfi(vp);
while(!vfi.End())
{
faceVec.push_back(vfi.F());
indexes.push_back(vfi.I());
++vfi;
}
}
/*! /*!
* Compute the ordered set of faces adjacent to a given vertex using VF adjacency.and FF adiacency * Compute the ordered set of faces adjacent to a given vertex using VF adjacency.and FF adiacency
* \param vp pointer to the vertex whose star has to be computed. * \param vp pointer to the vertex whose star has to be computed.
@ -632,7 +653,7 @@ void VFStarVF( typename FaceType::VertexType* vp, std::vector<FaceType *> &faceV
* *
*/ */
template <class FaceType> template <class FaceType>
static void VFOrderedStarVF_FF(typename FaceType::VertexType &vp, static void VFOrderedStarVF_FF(const typename FaceType::VertexType &vp,
std::vector<FaceType*> &faceVec) std::vector<FaceType*> &faceVec)
{ {
@ -640,8 +661,8 @@ static void VFOrderedStarVF_FF(typename FaceType::VertexType &vp,
assert (!vp.IsB()); assert (!vp.IsB());
///get first face sharing the edge ///get first face sharing the edge
FaceType *f_init=vp.VFp(); FaceType *f_init=vp.cVFp();
int edge_init=vp.VFi(); int edge_init=vp.cVFi();
///and initialize the pos ///and initialize the pos
vcg::face::Pos<FaceType> VFI(f_init,edge_init); vcg::face::Pos<FaceType> VFI(f_init,edge_init);