VCGLIB中的FF邻接与VF邻接

f1->FFp(1) == f0 // f1中edge1的邻接面是f0
f1->FFi(1) == 0  // edge1在[f1中edge1的邻接面f0]中的编号是0

f0->FFp(0) == f1 // f0中edge0的邻接面是f1
f0->FFi(0) == 1  // edge0在[f0中edge0的邻接面f1]中的编号是1

// 这里的ci(i=0,1,2,3,4,5,6)都是Pos
// 代码中可能写作:
// typename TriangleMeshType::FaceType* currentFacePointer = &mesh.face[fId];
// vcg::face::Pos<typename TriangleMeshType::FaceType> ci(currentFacePointer, 0);
// Pos是<v,e,f>三元数

c2 = FlipV(c1) // c2和c1的三元数中只有v不同
c0 = FlipE(c1) // c0和c1的三元数中只有e不同
c3 = FlipF(c0) // c3和c0的三元数中只有f不同

CCW around v
c4 = FlipE(FlipF(c0)) 
c5 = FlipE(FlipF(c4))
Bounce
c6 = FlipE(FlipF(c5))
CW around v
c3 = FlipE(FlipF(c6))
c1 = FlipE(FlipF(c3))
Bounce
c0 = FlipE(FlipF(c1))

v.VFp() == f2      // v的VF邻接面是f2
v.VFi() == 0       // v在[v的VF邻接面f2]中的顶点编号是0

f2->VFp(0) == f3   // f2在顶点0的VF邻接链表中的下一个面是f3
f2->VFi(0) == 1    // f2的顶点0在[f2在顶点0的VF邻接链表中的下一个面f3]中的顶点编号是1
f3->VFp(1) == f1   // f3在顶点1的VF邻接链表中的下一个面是f1
f3->VFi(1) == 2    // f3的顶点1在[f3在顶点1的VF邻接链表中的下一个面f1]的顶点编号是2
f1->VFp(2) == f0   // f1在顶点2的VF邻接链表中的下一个面是f0
f1->VFi(2) == 2    // f1中的顶点2在[f1在顶点2的VF邻接链表中的下一个面f0]的顶点编号是2
f0->VFp(2) == NULL // f0在顶点2的VF邻接链表中的下一个面是nil
f0->VFi(2) == -1   // f0的顶点2在[f0在顶点2的VF邻接链表中的下一个面nil]的顶点编号是-1(没有意义啦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值