diff --git a/vcg/simplex/face/topology.h b/vcg/simplex/face/topology.h index 9859b843..52823758 100644 --- a/vcg/simplex/face/topology.h +++ b/vcg/simplex/face/topology.h @@ -430,6 +430,40 @@ void SwapEdge(FaceType &f, const int z) } } +/*! Perform a simple edge collapse + * Basic link conditions + * +*/ +template +bool FFLinkCondition(MeshType &m, typename MeshType::FaceType &f, const int z) +{ + typedef typename MeshType::FaceType FaceType; + typedef typename MeshType::VertexType VertexType; + typedef typename vcg::face::Pos< FaceType > PosType; + + VertexType *v0=f.V0(z); + VertexType *v1=f.V1(z); + + PosType p0(&f,v0); + PosType p1(&f,v1); + std::vectorv0Vec; + std::vectorv1Vec; + VVOrderedStarFF(p0,v0Vec); + VVOrderedStarFF(p1,v1Vec); + std::set v0set; + v0set.insert(v0Vec.begin(),v0Vec.end()); + assert(v0set.size() == v0Vec.size()); + int cnt =0; + for(size_t i=0;i indicating the vertex whose star has to be computed. + * \param vertexVec a std::vector of VertexPtr filled vertices around the given vertex. + * +*/ +template +void VVOrderedStarFF(Pos &startPos, + std::vector &vertexVec) +{ + vertexVec.clear(); + std::vector > posVec; + VFOrderedStarFF(startPos,posVec); + for(size_t i=0;i