From cdf649aeef318cc5c3dae231d9b1c16352d13515 Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Sat, 25 Aug 2012 12:45:13 +0200 Subject: [PATCH] Added some comments. --- mtp_graph.cc | 8 ++++---- mtp_graph.h | 2 +- tracker.cc | 39 +++++++++++++++++++++++++-------------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/mtp_graph.cc b/mtp_graph.cc index 1f0f6d3..49b97f7 100644 --- a/mtp_graph.cc +++ b/mtp_graph.cc @@ -96,7 +96,7 @@ void Vertex::del_leaving_edge(Edge *e) { ////////////////////////////////////////////////////////////////////// MTPGraph::MTPGraph(int nb_vertices, int nb_edges, - int *from, int *to, + int *vertex_from, int *vertex_to, int source, int sink) { _nb_vertices = nb_vertices; _nb_edges = nb_edges; @@ -114,11 +114,11 @@ MTPGraph::MTPGraph(int nb_vertices, int nb_edges, } for(int e = 0; e < nb_edges; e++) { - _vertices[from[e]].add_leaving_edge(_edges + e); + _vertices[vertex_from[e]].add_leaving_edge(_edges + e); _edges[e].occupied = 0; _edges[e].id = e; - _edges[e].origin_vertex = _vertices + from[e]; - _edges[e].terminal_vertex = _vertices + to[e]; + _edges[e].origin_vertex = _vertices + vertex_from[e]; + _edges[e].terminal_vertex = _vertices + vertex_to[e]; } paths = 0; diff --git a/mtp_graph.h b/mtp_graph.h index bd805c2..5988688 100644 --- a/mtp_graph.h +++ b/mtp_graph.h @@ -60,7 +60,7 @@ public: int nb_paths; Path **paths; - MTPGraph(int nb_vertices, int nb_edges, int *from, int *to, + MTPGraph(int nb_vertices, int nb_edges, int *vertex_from, int *vertex_to, int source, int sink); ~MTPGraph(); diff --git a/tracker.cc b/tracker.cc index 0bb1449..362e52d 100644 --- a/tracker.cc +++ b/tracker.cc @@ -225,6 +225,8 @@ void Tracker::build_graph() { } } + // The edges from the source to the first time frame + for(int l = 0; l < _nb_locations; l++) { node_from[e] = source; node_to[e] = 1 + l + 0 * _nb_locations; @@ -232,26 +234,33 @@ void Tracker::build_graph() { e++; } - for(int t = 0; t < _nb_time_steps; t++) { + // The edges from the last frame to the sink + + for(int l = 0; l < _nb_locations; l++) { + node_from[e] = late_pair_node(_nb_time_steps - 1, l); + node_to[e] = sink; + _edge_lengths[e] = 0.0; + e++; + } + + // The edges between frames, corresponding to allowed motions + + for(int t = 0; t < _nb_time_steps - 1; t++) { for(int l = 0; l < _nb_locations; l++) { - if(t == _nb_time_steps - 1) { - node_from[e] = late_pair_node(t, l); - node_to[e] = sink; - _edge_lengths[e] = 0.0; - e++; - } else { - for(int k = 0; k < _nb_locations; k++) { - if(allowed_motion[l][k]) { - node_from[e] = late_pair_node(t, l); - node_to[e] = early_pair_node(t+1, k); - _edge_lengths[e] = 0.0; - e++; - } + for(int k = 0; k < _nb_locations; k++) { + if(allowed_motion[l][k]) { + node_from[e] = late_pair_node(t, l); + node_to[e] = early_pair_node(t+1, k); + _edge_lengths[e] = 0.0; + e++; } } } } + // The edges from the source to the entrances, and from the exits to + // the sink + for(int t = 0; t < _nb_time_steps; t++) { for(int l = 0; l < _nb_locations; l++) { if(t > 0 && entrances[l]) { @@ -269,6 +278,8 @@ void Tracker::build_graph() { } } + // We are done, build the graph + _graph = new MTPGraph(nb_vertices, nb_edges, node_from, node_to, source, sink); -- 2.20.1