| | |
| | | time_t firstInvalTime; |
| | | //上次逆行的时间 |
| | | time_t lastInvalTime; |
| | | //第一次正确行的时间 |
| | | time_t firstValTime; |
| | | //上次逆=正确行的时间 |
| | | time_t lastValTime; |
| | | //上一次出现的坐标 |
| | | Point lastCoordinate; |
| | | // Status(std::string _id, time_t ftime, time_t ltime, Point coordinate): |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * for debug |
| | | */ |
| | | void IndirectAlg::printRecord(int tag, Record &record) { |
| | | printf("%d %ld : {%f, %f}\n", tag, record.timestamp, record.coordinate.x, record.coordinate.y); |
| | | // printf("%d %ld : {%f, %f}\n", tag, record.timestamp, record.coordinate.x, record.coordinate.y); |
| | | } |
| | | |
| | | /** |
| | |
| | | .lastTime = record.timestamp, |
| | | .firstInvalTime = 0, |
| | | .lastInvalTime = 0, |
| | | .firstValTime = 0, |
| | | .lastValTime = 0, |
| | | .lastCoordinate = record.coordinate}); |
| | | |
| | | statusMap.insert({record.id, status}); |
| | |
| | | if(status->firstInvalTime ==0) { |
| | | //第一次发生逆行 |
| | | status->firstInvalTime = status->lastInvalTime = record.timestamp; |
| | | //printf("%第一次发生逆行的时间=%ld\n", status->firstInvalTime); |
| | | printRecord(4, record); |
| | | return false; |
| | | |
| | | } else { |
| | | status->lastInvalTime = record.timestamp; |
| | | //printf("%后续发生逆行的时间=%ld\n", status->lastInvalTime); |
| | | //逆行时间超过keeptime |
| | | if (status->lastInvalTime - status-> firstInvalTime > keepTime) { |
| | | if (status->lastInvalTime - status-> firstInvalTime >= keepTime) { |
| | | status->firstValTime = status->lastValTime = 0; |
| | | printRecord(5, record); |
| | | return true; |
| | | } |
| | |
| | | return false; |
| | | } |
| | | } else { |
| | | |
| | | if(status->firstValTime ==0) { |
| | | status->firstValTime = status->lastValTime = record.timestamp; |
| | | printRecord(7, record); |
| | | } else { |
| | | status->lastValTime = record.timestamp; |
| | | //逆行时间超过keeptime |
| | | if (status->lastValTime - status-> firstValTime >= keepTime) { |
| | | status->firstInvalTime = status->lastInvalTime = 0; |
| | | printRecord(8, record); |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |