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.

54 lines
1.7 KiB
C

1 month ago
#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>
};