#ifndef __USG_INDIRECTALG_H__ #define __USG_INDIRECTALG_H__ #include "usg_common.h" #include "graph.h" struct Record { std::string id; time_t timestamp; Point coordinate; }; struct Status; class IndirectAlg { Figure frame; //逆行持续时间,要超过这个时间才算逆行 time_t keepTime; // 代表正确行走方向的向量 Vector2 direction; // 状态缓存 std::map statusMap; std::atomic mterminate; std::thread mthread; void threadRoutine(); public: IndirectAlg(); IndirectAlg(const std::initializer_list & edges, const time_t & _keepTime, const Vector2 & _direction); /** * @points 组成观测区域的彼此相邻的点 * @_keepTime 保持时间 * @_direction 正确行进的方向方向 */ IndirectAlg(const std::initializer_list & points, const time_t & _keepTime, const Vector2 & _direction); ~IndirectAlg(); void printRecord(int tag, Record &record); /** * 是否逆行 */ bool isRetrograde(Record &record); }; #endif