his_location.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef __INCLUDE_HIS_LOCATION_HPP
  2. #define __INCLUDE_HIS_LOCATION_HPP
  3. #include <complex>
  4. #include <queue>
  5. #include "point.h"
  6. //速度
  7. //区域 地图变换
  8. //运动方向
  9. //路径变换
  10. struct location_card
  11. {
  12. location_card(uint32_t id,uint64_t type,uint32_t objid);
  13. uint32_t m_cardid;//卡id
  14. uint16_t m_type;//卡类型
  15. uint32_t m_objid;
  16. double m_arg;//运动方向角度值
  17. int m_areaid;//区域
  18. int m_mapid;//地图
  19. uint64_t m_timestamp;//入库后的时间
  20. point m_p;//入库后的点
  21. int m_direct_index;
  22. uint64_t last_timestamp;
  23. bool m_isInsert ; //是否
  24. static uint32_t m_difftime;//进入盲区得时长限制 时长
  25. static int m_distance;//进入盲区后,第一个点与之前得距离 像素距离
  26. void set_cid(uint32_t cid){m_objid=cid;}
  27. struct mini_data
  28. {
  29. mini_data(const point &p,uint64_t t)
  30. :p(p)
  31. ,time(t)
  32. {}
  33. point p;
  34. uint64_t time;
  35. };
  36. std::queue<mini_data> m_d;
  37. void init();
  38. void init_att(const point &pt,uint64_t time);
  39. void set_invalid();
  40. //当前m_arg运动方向角度值 是否有效 0x12345678无效
  41. bool is_valid();
  42. //计算运动方向角度值
  43. double make_arg(const point &pt,const point &p);
  44. void set(const point &pt,uint64_t time);
  45. // 是否在路径上改变方向
  46. bool line_changed(const point &pt);//,int &df)
  47. // 判断速度变化
  48. bool is_speed_changed(const point& pt,uint64_t time);
  49. // 超时
  50. bool time_out(const point &p,uint64_t time);
  51. // 区域变化
  52. bool is_area_changed(int new_areaid);
  53. // 地图变化
  54. bool is_map_changed(int new_mapid);
  55. // 计算当前点是否需要记录到DB中
  56. void push(uint64_t timestamp,const point & p,int32_t areaid,int32_t mapid,bool bclose = false);
  57. void insert();
  58. void update(const point &p,uint64_t timestamp,int flag=0,int dflag=0);
  59. // 操作路径上点的集合
  60. std::vector<point> find_path(const point &p1,const point &p2);
  61. //virtual bool handle_message(const point &p,uint64_t timestamp)=0;
  62. bool handle_message(const point &p,uint64_t timestamp);
  63. // 处理获取到点的集合,在路径上
  64. bool handle_path(std::vector<point> &rc,uint64_t timestamp,bool flag);
  65. };
  66. #endif