示例#1
0
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;
      }
  }
示例#2
0
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;
      }
  }