Beispiel #1
0
void seqDist(int gvid0, int gvid1, int f0_, std::map<int, float>& dist) {
  const VortexSequence &s0 = vt.Sequences()[gvid0]; 
  const VortexSequence &s1 = vt.Sequences()[gvid1];
  int f0 = std::max(20000, std::max(s0.its, s1.its)), // limit: 20000
      f1 = std::min((int)distMatrices.size()-1, std::min(s0.its+s0.itl-1, s1.its+s1.itl-1));

  const int t0 = vt.Frames()[f0_];

  if (f0>f1) return;
  for (int f=f0; f<=f1; f++) {
    const int lvid0 = vt.gvid2lvid(f, gvid0);
    const int lvid1 = vt.gvid2lvid(f, gvid1);
    // fprintf(stderr, "f=%d, lvid0=%d, lvid1=%d\n", f, lvid0, lvid1);
    const int t = vt.Frames()[f];
    
    const int nv = sqrt(distMatrices[f].size());
    const float d = distMatrices[f][lvid0*nv + lvid1];
    dist[t-t0] = d; 
    
    // for (auto d : distMatrices[f]) fprintf(stderr, "%f ", d);
    // fprintf(stderr, "\n");
  }
}