[3] | 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 | |
---|
[82] | 18 | bool haveMerged = false; |
---|
[3] | 19 | bool flagAdjacent = par.getFlagAdjacent(); |
---|
| 20 | par.setFlagAdjacent(true); |
---|
| 21 | float threshold = par.getThreshV(); |
---|
| 22 | par.setThreshV(1.); |
---|
[82] | 23 | long ctr = 0; |
---|
[3] | 24 | if(objList.size()>0){ |
---|
| 25 | do { |
---|
| 26 | Detection *obj2 = new Detection; |
---|
[107] | 27 | // *obj2 = objList.at(ctr); |
---|
| 28 | *obj2 = objList[ctr]; |
---|
[3] | 29 | if(areClose(object, *obj2, par)){ |
---|
| 30 | obj2->addAnObject(object); |
---|
[82] | 31 | objList.erase( objList.begin() + ctr ); |
---|
[3] | 32 | objList.push_back( *obj2 ); |
---|
[82] | 33 | haveMerged = true; |
---|
[3] | 34 | } |
---|
[82] | 35 | else ctr++; |
---|
[3] | 36 | delete obj2; |
---|
| 37 | |
---|
[82] | 38 | } while( !(haveMerged) && (ctr<objList.size()) ); |
---|
[3] | 39 | } |
---|
| 40 | |
---|
[82] | 41 | if(!haveMerged) objList.push_back(object); |
---|
[3] | 42 | |
---|
| 43 | par.setFlagAdjacent(flagAdjacent); |
---|
| 44 | par.setThreshV(threshold); |
---|
| 45 | |
---|
| 46 | } |
---|