void KantShelling::UpdateSepf1(IntList &NewSepFaces) // for all f \in NewxSepFaces, for all v incident // to f, sepf[v]++. {tbrin b, b0; int f; NewSepFaces.ToHead(); while ((f=~NewSepFaces)!=0) {b0=b=Face2Brin[f]; do {if(IsOuterV[G.vin[b]()]) _sepf(G.vin[b](),1); b=G.cir[-b]; } while (b!=b0); ++NewSepFaces; } }
void KantShelling::UpdateSepf2(IntList &NewOuterVertices) // for all v \in NewOuterVertices, recalculate sepf[v]. {tbrin b, b0; int f; NewOuterVertices.ToHead(); int vi, count; while ((vi=~NewOuterVertices)!=0) {count=0; b0=b=G.FirstBrin(vi); do {f=Brin2Face[b]; if(!MarkedF[f] && (outv[f]>=3 || (outv[f]==2 && oute[f]==0))) count++; b=G.cir[b]; } while (b!=b0); _sepf(vi,count-sepf[vi]); ++NewOuterVertices; } }