1 | #include <vector> |
---|
2 | #include <Cubes/cubes.hh> |
---|
3 | #include <Utils/utils.hh> |
---|
4 | |
---|
5 | void mergeIntoList(Detection &object, vector <Detection> &objList, Param &par) |
---|
6 | { |
---|
7 | /** |
---|
8 | * mergeIntoList(Detection &, vector<Detection> &, Param &) |
---|
9 | * |
---|
10 | * A function to add a detection to a list of detections, checking |
---|
11 | * first to see if it can be merged with existing members of the list. |
---|
12 | * The merging is only done if the object is adjacent to one of the existing |
---|
13 | * members -- this is considered in all three directions. |
---|
14 | * To this end, the adjacent flag in par is set true, and the velocity |
---|
15 | * threshold is set to 1. These parameters are changed back before returning. |
---|
16 | */ |
---|
17 | |
---|
18 | bool *haveMerged = new bool; |
---|
19 | *haveMerged = false; |
---|
20 | long *ctr = new long; |
---|
21 | bool flagAdjacent = par.getFlagAdjacent(); |
---|
22 | par.setFlagAdjacent(true); |
---|
23 | float threshold = par.getThreshV(); |
---|
24 | par.setThreshV(1.); |
---|
25 | *ctr = 0; |
---|
26 | if(objList.size()>0){ |
---|
27 | do { |
---|
28 | Detection *obj2 = new Detection; |
---|
29 | *obj2 = objList.at(*ctr); |
---|
30 | if(areClose(object, *obj2, par)){ |
---|
31 | obj2->addAnObject(object); |
---|
32 | objList.erase( objList.begin() + *ctr ); |
---|
33 | objList.push_back( *obj2 ); |
---|
34 | *haveMerged = true; |
---|
35 | } |
---|
36 | else (*ctr)++; |
---|
37 | delete obj2; |
---|
38 | |
---|
39 | } while( !(*haveMerged) && (*ctr<objList.size()) ); |
---|
40 | } |
---|
41 | |
---|
42 | if(!(*haveMerged)) objList.push_back(object); |
---|
43 | |
---|
44 | delete haveMerged; |
---|
45 | delete ctr; |
---|
46 | par.setFlagAdjacent(flagAdjacent); |
---|
47 | par.setThreshV(threshold); |
---|
48 | |
---|
49 | } |
---|