}
void Tracker::build_graph() {
- // Delete existing graph if there was one
+ // Delete the existing graph if there was one
delete[] _edge_lengths;
delete _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;
#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;
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;
}