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.

86 lines
2.5 KiB
C

1 month ago
#pragma once
#include <vector>
#include <list>
#include "TBase/TObjectList.h"
#include "InterfaceElements.h"
/*@class: CVoronoi
* @desc: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>voronoiͼ<EFBFBD><EFBFBD>֧<EFBFBD>ֶϲ<EFBFBD>
ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-----<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
1<EFBFBD><EFBFBD>//<2F><><EFBFBD>öϲ<C3B6><CFB2>߱պ<DFB1><D5BA>ж<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>С<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>1/10Ϊ<30>պϣ<D5BA><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetFltClosingFraction(float fraction = 0.1);
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD>
bool CreateMap(const CString& strWell, const CString& strFlt, const CString& strBorder, const CString& strOutput);
-----<EFBFBD><EFBFBD><EFBFBD>ڴʽ:
1<EFBFBD><EFBFBD>//<2F><><EFBFBD>öϲ<C3B6><CFB2>߱պ<DFB1><D5BA>ж<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>С<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>1/10Ϊ<30>պϣ<D5BA><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SetFltClosingFraction(float fraction = 0.1);
2.//<2F><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ReadWellData(std::vector<CWellPoint>& inputWells);
3.//<2F><><EFBFBD>ɹ걳ͼ<EAB1B3><CDBC>flts = <20>ϲ<EFBFBD><CFB2>ߣ<EFBFBD> border = <20>߽<EFBFBD>
bool CreateMap(std::list<CPolyline>& flts, CPolyline& border);
4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>outputPolylines,<EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD>
int OutputResult(std::list<CPolyline>& outputPolylines);
* @date: 2023.3.11
*/
class AFX_EXT_CLASS CVoronoiMap
{
public:
struct Edge
{
Edge(void):iw1(-1),iw2(-1){}
int iw1; //<2F><>һ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int iw2; //<2F>ڶ<EFBFBD><DAB6>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
CVoronoiMap(void);
virtual ~CVoronoiMap(void);
//<2F><><EFBFBD>öϲ<C3B6><CFB2>߱պ<DFB1><D5BA>ж<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>С<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>1/10Ϊ<30>պ<EFBFBD>
void SetFltClosingFraction(float fraction = 0.1);
//<2F>걳ͼ<EAB1B3><CDBC><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD>strXyzΪ<7A><CEAA><EFBFBD>㣬strFlt = <20>ϲ㣬 strBorder=<3D>߽<EFBFBD><DFBD>ļ<EFBFBD><C4BC><EFBFBD>strout = <20><><EFBFBD><EFBFBD><EFBFBD>걳ͼ<EAB1B3><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CreateMap(const CString& strWell, const CString& strFlt, const CString& strBorder, const CString& strOutput);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>,<2C><><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʽΪ "3dPoint 18019278,3596719,0 0 <20><>x"
int ReadWellData(const CString& strWell);
//<2F><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ReadWellData(std::vector<CWellPoint>& inputWells);
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD>ɵ<EFBFBD><C9B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ걳ͼ<EAB1B3><CDBC>flts = <20>ϲ<EFBFBD><CFB2>ߣ<EFBFBD> border = <20>߽<EFBFBD>
bool CreateMap(std::list<CPolyline>& flts, CPolyline& border);
//<2F><><EFBFBD>걳ͼ<EAB1B3><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>outputPolylines,<2C><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>
int OutputResult(std::list<CPolyline>& outputPolylines);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
bool WriteResult(CString strOutput);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
bool WriteResult(FILE* fw);
//<2F><><EFBFBD><EFBFBD>m_voronoiCurves
void ClearVorMap(void);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ걳ͼ<EAB1B3><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> outputTriangleLines <20><>
int OutputTriangleLines(std::list<CPolyline>& triangleLines);
protected:
bool CreateMap(TPtrList& flts, void* border);
//<2F>ɸ<EFBFBD><C9B8>걳ͼ<EAB1B3><CDBC><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void AssignNames(void);
CWellPoint& GetWellPoint(int idx);
std::vector<CWellPoint> m_wellPoints; //<2F><><EFBFBD>о<EFBFBD><D0BE><EFBFBD>
TPtrList m_resultPolygons; //<2F><><EFBFBD>ɵĹ걳ͼ<EAB1B3><CDBC>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
std::vector<Edge> m_edges; //<2F>걳ͼ<EAB1B3><CDBC><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2023.3.24
float m_fClosingFraction;
};