//头文件保护 #ifndef TUNNEL_H #define TUNNEL_H /** * 文件 tunnel.h * 简述 用于实现以格子为基础元素的巷道定位数据模型 * 详细信息 * 作者 曾敏果; 邮箱:57862207@qq.com * 日期 2022-7-14 */ #include #include #include #include "point.h" #include "line.h" #include "db/db_api/CDBSingletonDefine.h" #include "db/db_api/CDBResultSet.h" // 格子类,用于存储定位结果的基本单元 class tunnel_cell { public: tunnel_cell(double x, double y, double z); ~tunnel_cell(); //格子的实际坐标值,用于将格子转换成具体的坐标进行显示 double x; double y; double z; protected: private: //所属基站号,不在任何基站覆盖范围内,id为-1 //int reader_id; //距基站的距离,靠近井口方向为正,靠近井底方向为负,若不在任何基站覆盖范围,此变量值无效 //double dist; }; //巷道类,将巷道分成一个一个的格子,用于存储巷道的格子集合。 class tunnel { public: tunnel(); ~tunnel(); //初始化格子列表 bool init_cells(); //初始化巷道 bool init_tunnel(); //通过格子索引号获取格子的具体位置 bool get_position_by_cell_index(int index, point& pos); //获取总格子数 int get_cells_count(); //通过坐标来获取其在的格子位置,用于将基站坐标映射到格子索引号 int get_cell_index_by_position(const point& pos); protected: private: //从数据库中读取初始化格子用线段 bool read_lines_from_db(); //将线段队列转换成格子 bool transform_lines_to_cells(); // 格子队列 [7/14/2022 zengminguo] std::vector m_vec_cells; //初始化巷道用的线段列表 std::deque m_queue_lines; }; //巷道类单例定义 typedef boost::serialization::singleton singleton_tunnel; #define s_tunnel singleton_tunnel::get_mutable_instance() #define s_tunnel_const singleton_tunnel::get_const_instance() #endif //#ifndef TUNNEL_H