#pragma once #include "VoronoiMap/InterfaceElements.h" #include /*@class: CPointSubset * @desc: 用于对点集按距离抽稀, 使用说明: 1. 声明变量 vector vecpts; std::vector idxReserved; CPointSubset subset; 2.vecpts插入数据 3. 调用subset.CreateSubsetWithMinDist( 150.0, idxReserved); 使用方法: * @date: 2023.5.24 */ class CPointSubset { public: CPointSubset(void); ~CPointSubset(void); //从文件中读取散点 int ReadPoints(CString strXyz); //从内存中读取散点 int ReadPoints(std::vector& vecXyz); //通过设置最小距离抽稀数据, 生成的子集点之间距离大于fMinDist ,idxReserved = 保留的点序号 //idxRemoved = 移除的点序号 int CreateSubsetWithMinDist(float fMinDist, std::vector& idxReserved, std::vector* idxRemoved = nullptr); //由点序号写出点集到文件 int WritePoints(CString fname,std::vector& idxReserved); // 抽稀后的 xyz 列表 const std::vector &points() { return m_points; } protected: void GetExtremeValues(void); //获取散点极值 std::vector m_points; double m_xmin; //x最小 double m_xmax; //x最大 double m_ymin; //y最小 double m_ymax; //y最大 };