X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=tracker.cc;h=c66c89de179e41aedba54ebafe37b1b01903da0e;hb=9bbc3775491edae5bb92679ecca0f525877371f5;hp=f5dffd88e521373036cd147060d6bf3353ccc6ac;hpb=535b8ede7d6646ea17135da10c8a16416524f6e9;p=mtp.git diff --git a/tracker.cc b/tracker.cc index f5dffd8..c66c89d 100644 --- a/tracker.cc +++ b/tracker.cc @@ -60,7 +60,7 @@ Tracker::~Tracker() { } void Tracker::build_graph() { - // Delete existing graph if there was one + // Delete the existing graph if there was one delete[] _edge_lengths; delete _graph; @@ -81,11 +81,10 @@ void Tracker::build_graph() { // frame to the sink _nb_locations * 2 + // The edges from the source to the entrances and from the exists - // to the sink (in every time frames but the first for the source, - // and last for the exits) + // to the sink (in every time frames but the first for the + // entrances, and last for the exits) (_nb_time_steps - 1) * (nb_exits + nb_entrances) + - // The edges for the motions, between every pair of successive - // frames + // The edges for the motions, between every successive frames (_nb_time_steps - 1) * nb_motions + // The edges inside the duplicated nodes _nb_locations * _nb_time_steps; @@ -186,8 +185,8 @@ void Tracker::track() { #ifdef VERBOSE for(int p = 0; p < _graph->nb_paths; p++) { Path *path = _graph->paths[p]; - cout << "PATH " << p << " [length " << path->length << "] " << path->nodes[0]; - for(int n = 1; n < path->length; n++) { + cout << "PATH " << p << " [length " << path->nb_nodes << "] " << path->nodes[0]; + for(int n = 1; n < path->nb_nodes; n++) { cout << " -> " << path->nodes[n]; } cout << endl; @@ -199,14 +198,18 @@ int Tracker::nb_trajectories() { return _graph->nb_paths; } +scalar_t Tracker::trajectory_score(int k) { + return -_graph->paths[k]->length; +} + int Tracker::trajectory_entrance_time(int k) { return (_graph->paths[k]->nodes[1] - 1) / (2 * _nb_locations); } int Tracker::trajectory_duration(int k) { - return (_graph->paths[k]->length - 2) / 2; + return (_graph->paths[k]->nb_nodes - 2) / 2; } -int Tracker::trajectory_location(int k, int time) { - return (_graph->paths[k]->nodes[2 * time + 1] - 1) % _nb_locations; +int Tracker::trajectory_location(int k, int time_from_entry) { + return (_graph->paths[k]->nodes[2 * time_from_entry + 1] - 1) % _nb_locations; }