_edge_lengths = 0;
_graph = 0;
- _edge_occupation = 0;
}
Tracker::~Tracker() {
delete[] _edge_lengths;
delete _graph;
- delete[] _edge_occupation;
deallocate_array<scalar_t>(_detection_score);
deallocate_array<int>(_allowed_motion);
}
// Delete existing graph
delete[] _edge_lengths;
- delete[] _graph;
- delete[] _edge_occupation;
+ delete _graph;
int nb_motions = 0;
for(int l = 0; l < _nb_locations; l++) {
int e = 0;
_edge_lengths = new scalar_t[nb_edges];
- _edge_occupation = new int[nb_edges];
// We put the in-node edges first, since these are the ones whose
// lengths we will have to change according to the detection score
}
}
- _graph->find_best_paths(_edge_lengths, _edge_occupation);
- _graph->print_dot();
+ _graph->find_best_paths(_edge_lengths);
+ _graph->retrieve_disjoint_paths();
+
+ // 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->nodes[n];
+ // }
+ // cout << endl;
+ // }
+ // _graph->print_dot();
}
-// void Tracker::track() {
-// }
-
-// int Tracker::nb_trajectories() {
-// }
-
-// int Tracker::trajectory_start_time(int k) {
-// }
+int Tracker::nb_trajectories() {
+ return _graph->nb_paths;
+}
-// int Tracker::trajectory_end_time(int k) {
-// }
+int Tracker::trajectory_duration(int k) {
+ return (_graph->paths[k]->length - 2) / 2;
+}
-// int Tracker::trajectory_location(int k, int time) {
-// }
+int Tracker::trajectory_location(int k, int time) {
+ return (_graph->paths[k]->nodes[2 * time + 1] - 1) % _nb_locations;
+}