1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- //头文件保护
- #ifndef TUNNEL_H
- #define TUNNEL_H
- /**
- * 文件 tunnel.h
- * 简述 用于实现以格子为基础元素的巷道定位数据模型
- * 详细信息
- * 作者 曾敏果; 邮箱:57862207@qq.com
- * 日期 2022-7-14
- */
- #include <deque>
- #include <vector>
- #include <boost/serialization/singleton.hpp>
- #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<tunnel_cell> m_vec_cells;
- //初始化巷道用的线段列表
- std::deque<line_v> m_queue_lines;
- };
- //巷道类单例定义
- typedef boost::serialization::singleton<tunnel> singleton_tunnel;
- #define s_tunnel singleton_tunnel::get_mutable_instance()
- #define s_tunnel_const singleton_tunnel::get_const_instance()
- #endif //#ifndef TUNNEL_H
|