|
|
|
|
|
#pragma once
|
|
|
|
|
|
/*@class: CSimpleGrid
|
|
|
|
|
|
* @desc: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
*/
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
#include <afxext.h>
|
|
|
|
|
|
#include "VoronoiMap/InterfaceElements.h"
|
|
|
|
|
|
|
|
|
|
|
|
using std::vector;
|
|
|
|
|
|
class CSimpleGrid
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSimpleGrid(void);
|
|
|
|
|
|
virtual ~CSimpleGrid(void);
|
|
|
|
|
|
void Clear(void);
|
|
|
|
|
|
void Create(double x0, double y0, double dx, double dy, int xnum, int ynum);
|
|
|
|
|
|
int xnum(void) { return m_numx; }
|
|
|
|
|
|
int ynum(void) { return m_numy; }
|
|
|
|
|
|
double X(int i);
|
|
|
|
|
|
double Y(int j);
|
|
|
|
|
|
|
|
|
|
|
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void WriteGridLines(CString strout);
|
|
|
|
|
|
|
|
|
|
|
|
void ReadPoints(const vector< CPointXYZ>& pts);
|
|
|
|
|
|
//<2F><>ϡ<EFBFBD><CFA1><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص㣬ÿ<E3A3AC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ౣ<EFBFBD><E0B1A3>1-2<><32><EFBFBD>㣨<EFBFBD><E3A3A8>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD>벻С<EBB2BB><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><>
|
|
|
|
|
|
void SimplifyNodePointsArray();
|
|
|
|
|
|
//<2F><>ϡ<EFBFBD><CFA1><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>p1, <20>;<EFBFBD><CDBE><EFBFBD>P1<50><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ĵ<EFBFBD>P2<50><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
|
|
|
|
|
void SimplifySeedGrid(int ix, int iy);
|
|
|
|
|
|
//<2F><>ϡ<EFBFBD><CFA1><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵĸ<DAB5><C4B8><EFBFBD>(ix,iy)ΪĿ<CEAA><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SimplifyNeighborGrid(int seedX, int seedY, int ix, int iy);
|
|
|
|
|
|
void GetAllNodePointIndexes(std::list<int>& ptIndexes); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
protected:
|
|
|
|
|
|
int GetNodeIndex(int ix, int iy); //<2F><>ȡix,iy<69><79>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
vector<int>& GetNodePointsVec(int ix, int iy); // ix, iy<69><79>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ص㼯
|
|
|
|
|
|
//<2F><><EFBFBD>Ҿ<EFBFBD><D2BE><EFBFBD>(x0,y0)<29><><EFBFBD><EFBFBD><EFBFBD>ĵ㣬<C4B5><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>distance
|
|
|
|
|
|
int GetNearestPoint(double x0, double y0, vector<int>& pts, double* distance = nullptr);
|
|
|
|
|
|
//<2F><><EFBFBD>Ҿ<EFBFBD><D2BE><EFBFBD>(x0,y0)<29><>Զ<EFBFBD>ĵ㣬<C4B5><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>;<EFBFBD><CDBE><EFBFBD>distance
|
|
|
|
|
|
int GetFarthestPoint(double x0, double y0, vector<int>& pts, double* distance = nullptr);
|
|
|
|
|
|
|
|
|
|
|
|
int m_numx; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
int m_numy; //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
double m_x0; //<2F><><EFBFBD><EFBFBD>x0
|
|
|
|
|
|
double m_y0; //<2F><><EFBFBD><EFBFBD>y0
|
|
|
|
|
|
double m_dx; //x<><78><EFBFBD><EFBFBD>
|
|
|
|
|
|
double m_dy; //y<><79><EFBFBD><EFBFBD>
|
|
|
|
|
|
double m_deltS;
|
|
|
|
|
|
vector<CPointXYZ> m_points;
|
|
|
|
|
|
vector<int>* m_nodePointsArray; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ɢ<EFBFBD><C9A2> m_nodePoints[0]= <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|