diff --git a/vcg/simplex/face/topology.h b/vcg/simplex/face/topology.h index 636d6674..08175afe 100644 --- a/vcg/simplex/face/topology.h +++ b/vcg/simplex/face/topology.h @@ -794,19 +794,20 @@ void VFAppend(FaceType* & f, int z) template void VVStarVF( typename FaceType::VertexType* vp, std::vector &starVec) { - typedef typename FaceType::VertexType* VertexPointer; - starVec.clear(); - face::VFIterator vfi(vp); - while(!vfi.End()) - { - starVec.push_back(vfi.F()->V1(vfi.I())); - starVec.push_back(vfi.F()->V2(vfi.I())); - ++vfi; - } + typedef typename FaceType::VertexType* VertexPointer; + starVec.clear(); + face::VFIterator vfi(vp); + while(!vfi.End()) + { + const int vn = vfi.F()->VN(); + starVec.push_back(vfi.F()->V1(vfi.I())); + starVec.push_back(vfi.F()->V((vfi.I()+vn-1)%vn)); + ++vfi; + } - std::sort(starVec.begin(),starVec.end()); - typename std::vector::iterator new_end = std::unique(starVec.begin(),starVec.end()); - starVec.resize(new_end-starVec.begin()); + std::sort(starVec.begin(),starVec.end()); + typename std::vector::iterator new_end = std::unique(starVec.begin(),starVec.end()); + starVec.resize(new_end-starVec.begin()); } /*!