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.

105 lines
2.7 KiB
C++

#pragma once
struct SCATTEREDDATAINDEX//用于插值时检索数据
{
short int index;
double distance;//离散点到被插值点的距离
};
#include "PointSearcher.h"
#include "Interpolator.h"
#include "TriangleCreator.h"
#include "ScatteredTracer.h"
#include "FaciesTracer.h"
class CGDFMap;
class CScatteredPoint
{
public:
CScatteredPoint();
~CScatteredPoint();
public:
double x;
/*不可能存在处于边界上的插入点*/
double y;
/*0x00--处于边界外未使用的离散点 0x01--离散点 0x02--处于边界上 0x04--新增网格点 0x08--虚拟井 //jxd 0x10--需要处理的空值*/
BYTE byteType;
/*在构造三角形时用于保存该点是否已经使用*/
BYTE byteFlag;
//Operations
public:
BOOL IsOriginPoint();
BOOL IsBorderPoint();
BOOL IsValidPoint();
BOOL IsAppendedPoint();
};
/// 沉积相追踪主要的类
class CScatteredTrace
{
public:
CScatteredTrace(void);
~CScatteredTrace(void);
public:
void SetWellArray(CObArray* pWellArray);
void SetFaciesTypeManager(CFaciesTypeMgr* pFaciesTypeManager);
CString GetStringData(int index,int iType);
double ConvertStringDataToData(int iType,LPCTSTR strValue);
CString ConvertDataToStringData(int iType,double dValue);
int GetStringDataEnumIndex(int iType,LPCTSTR pString);
void SetStringDataTypeArray(int iType,CStringArray& strarray);
CGDFMap* GetMap();
void SetMap(CGDFMap* pMap);
BOOL TraceFacies();
void Initialize(int iDataCount,int iTypeCount);
void SetData(int index,int iType,double dValue);
double GetData(int index,int iType);
void SetPoint(int index,double x,double y);
void SetStringData(int index,int iType,LPCTSTR str);
BOOL AddBorderToTracer(CFaciesRgnTracer* pTracer,BOOL &bUseBoundary,BOOL bUseFault);
CFaciesTracer* GetFaciesTracer();
CPointSearcher* GetPointSearcher();
CInterpolator* GetInterpolator();
BOOL IsStringData(int iType);
int AddCellNodePoint(double x,double y);
int AddBorderPoint(double x,double y);
int AddOriginPoint(double x,double y);
double* GetDataBuf();
int GetTypeCount();
int GetStringDataEnumCount(int iType);
void Clear();
void ClearPointFlag();
int GetDataCount();
CScatteredPoint* GetPointBuf();
void GetStringDataTypeArray(int iType,CStringArray& strarray);
CArray<CScatteredPoint,CScatteredPoint> m_PointArray;
CArray<double,double> m_DataArray;
CArray<int,int> m_FaciesArray;//保存各离散点的相类型
CArray<BOOL,BOOL> m_StringValueArray;//是否字串类型
CTypedPtrArray<CPtrArray,CStringArray*> m_StringDataArrayArray;
CArray<double,double> m_MinValueArray;
CArray<double,double> m_MaxValueArray;
CPointSearcher m_PointSearcher;
CInterpolator m_Interpolator;
CFaciesTracer m_FaciesTracer;
CObArray* m_pWellArray;
CFaciesTypeMgr* m_pFaciesTypeManager;
//CYAMapFile* m_pMapFile;
CGDFMap* m_pMap;
CArray<FACIESPOINT,FACIESPOINT> BorderPointArray;
};