You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "VoronoiMap/InterfaceElements.h"
|
|
#include <vector>
|
|
|
|
/*@class: CPointSubset
|
|
* @desc: 用于对点集按距离抽稀,
|
|
使用说明:
|
|
1. 声明变量 vector<CPointXYZ> vecpts;
|
|
std::vector<int> 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<CPointXYZ>& vecXyz);
|
|
//通过设置最小距离抽稀数据, 生成的子集点之间距离大于fMinDist ,idxReserved = 保留的点序号
|
|
//idxRemoved = 移除的点序号
|
|
int CreateSubsetWithMinDist(float fMinDist, std::vector<int>& idxReserved,
|
|
std::vector<int>* idxRemoved = nullptr);
|
|
//由点序号写出点集到文件
|
|
int WritePoints(CString fname,std::vector<int>& idxReserved);
|
|
|
|
// 抽稀后的 xyz 列表
|
|
const std::vector<CPointXYZ> &points() { return m_points; }
|
|
|
|
protected:
|
|
void GetExtremeValues(void); //获取散点极值
|
|
|
|
std::vector<CPointXYZ> m_points;
|
|
double m_xmin; //x最小
|
|
double m_xmax; //x最大
|
|
double m_ymin; //y最小
|
|
double m_ymax; //y最大
|
|
};
|
|
|