コード例 #1
0
ファイル: flow.cpp プロジェクト: Daron-Wan/snap
 void SetLabel (int NId, int Label) {
   if (Label > LabelLimit + 1) { Label = MaxLabel; }
   int OldLabel = LabelsV[NId];
   LabelsV[NId] = Label;
   LabelCounts[OldLabel]--;
   LabelCounts[Label]++;
   if (Label != MaxLabel) { LabelLimit = max(LabelLimit, Label); }
   if (LabelCounts[OldLabel] == 0) { CheckGap (OldLabel); }
 }
コード例 #2
0
void
FlatTriangleFanTree::FillGaps(const AFlatGeoPoint &origin, ReachFanParms &parms)
{
  // worth checking for gaps?
  if (vs.size() > 2 && parms.rpolars.IsTurningReachEnabled()) {

    // now check gaps
    const RoutePoint o(origin, RoughAltitude(0));
    RouteLink e_last(RoutePoint(*vs.begin(), RoughAltitude(0)),
                     o, parms.task_proj);
    for (auto x_last = vs.cbegin(), end = vs.cend(),
         x = x_last + 1; x != end; x_last = x++) {
      if (TooClose(*x, origin) || TooClose(*x_last, origin))
        continue;

      const RouteLink e(RoutePoint(*x, RoughAltitude(0)), o, parms.task_proj);
      // check if children need to be added
      CheckGap(origin, e_last, e, parms);

      e_last = e;
    }
  }
}