本文整理汇总了C++中cmesho::FacePointer::V1方法的典型用法代码示例。如果您正苦于以下问题:C++ FacePointer::V1方法的具体用法?C++ FacePointer::V1怎么用?C++ FacePointer::V1使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cmesho::FacePointer
的用法示例。
在下文中一共展示了FacePointer::V1方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DeleteCollinearBorder
int DeleteCollinearBorder(CMeshO &m, float threshold)
{
int total=0;
CMeshO::FaceIterator fi;
for(fi=m.face.begin();fi!=m.face.end();++fi)
if(!(*fi).IsD())
{
for(int i=0;i<3;++i)
{
if(face::IsBorder(*fi,i) && !face::IsBorder(*fi,(i+1)%3))
{
CMeshO::VertexPointer V0= (*fi).V0(i);
CMeshO::VertexPointer V1= (*fi).V1(i);
CMeshO::VertexPointer V2=0;
CMeshO::FacePointer fadj = (*fi).FFp((i+1)%3);
int adjBordInd = (*fi).FFi((i+1)%3);
if(fadj->V1(adjBordInd) == V1)
V2 = fadj->V2(adjBordInd);
else
continue; // non coerent face ordering.
if(face::IsBorder(*fadj,(adjBordInd+1)%3))
{
// the colinearity test;
Point3f pp;
float dist;
SegmentPointDistance(Segment3f(V0->cP(),V2->cP()),V1->cP(),pp,dist);
if(dist* threshold < Distance(V0->cP(),V2->cP()) )
{
(*fi).V1(i)=V2;
if(face::IsBorder(*fadj,(adjBordInd+2)%3))
{
(*fi).FFp((i+1)%3)=&*fi;
(*fi).FFi((i+1)%3)=(i+1)%3;
}
else
{
CMeshO::FacePointer fj = fadj->FFp((adjBordInd+2)%3);
int ij = fadj->FFi((adjBordInd+2)%3);
(*fi).FFp((i+1)%3)= fj;
(*fi).FFi((i+1)%3)= ij;
fj->FFp(ij)=&*fi;
fj->FFi(ij)=(i+1)%3;
}
tri::Allocator<CMeshO>::DeleteFace(m,*fadj);
total++;
}
}
}
}
}
return total;
}