#ifndef _LOC_POINT_HPP_ #define _LOC_POINT_HPP_ #include "point.h" #include "line_fit.h" struct loc_message; struct loc_point:point { int64_t m_time; int m_ct; uint32_t m_cid; uint8_t m_type; int m_sid; int m_site_cell_index = -1; uint64_t m_time_tmp = 0; float m_acc; float m_rav; int m_cell_index = -1; std::string m_direction; double m_speed_change_rate = 0.0; int m_cred_level; int m_tof[2]; int16_t m_rsp[2]; int m_step; double m_area; point m_sol[2]; double m_dist; double m_speed; double m_speed_avg = 0; double m_angle; // 输出角度信息到历史记录zengmg int m_stat; bool m_useless; double m_dist1; //smooth phase 1 double m_dist2; //smooth phase 3 double m_smooth_x; double m_smooth_y; fit_result m_k; fit_result&set_k(const fit_result&k) { return m_k=k; } loc_point(); const point& operator[](int i)const { return m_sol[i]; } point& operator[](int i) { return m_sol[i]; } double loc_dist(const point&pt)const { return m_sol[0].dist_direct(pt); } double loc_dist(const loc_point&lp)const { return m_sol[0].dist_direct(lp.m_sol[0]); } bool is_same_site(const loc_point&o)const { return m_sid==o.m_sid; } double time_off(const loc_point&o)const { return (o.m_time-m_time)/1000.; } double ct_off(const loc_point&o)const { return o.m_ct-m_ct; } void debug_out(const char * str="")const ; void set_sol(int i,const point&p) ; bool b_50m()const { static int tof_50m=50/(15.65*2.996*1e-4); return m_tof[0]==0?m_tof[1]>tof_50m:m_tof[0]>tof_50m; } loc_point& reset() ; int inc_cl(int cred_level) ; int set_cl(int cred_level) ; int cl()const ; void set_source(const loc_message&li,const loc_message&li2) ; void set_source(const loc_message&li) ; }; #endif