|
|
|
|
|
#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;
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|