|
|
#pragma once
|
|
|
|
|
|
#include "DrawModel/BaseFunction.h"
|
|
|
#include "DrawOperator/PublicFunction.h"
|
|
|
#include "DrawOperator/Xy.h"
|
|
|
#include "DrawOperator/One.h"
|
|
|
#include "DrawOperator/TypeDefine.h"
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS GridCalculate
|
|
|
{
|
|
|
public:
|
|
|
GridCalculate();
|
|
|
~GridCalculate();
|
|
|
|
|
|
/************************************************************************/
|
|
|
/* 执行计算 */
|
|
|
/* 返回值:0,计算失败;1,计算成功。 */
|
|
|
/* functionMode: */
|
|
|
/* 0、曲面A + 曲面B;1、曲面A - 曲面B;2、曲面B - 曲面A; */
|
|
|
/* 3、曲面A * 曲面B;4、曲面A / 曲面B;5、曲面B / 曲面A; */
|
|
|
/* 6、C=MIN(A,B)。A或B是空,则C为空; */
|
|
|
/* 7、C=MIN(A,B)。A或B有一个是空,则C为有效的值;A与B全是空,则C为空; */
|
|
|
/* 8、C=MAX(A,B)。A或B是空,则C为空; */
|
|
|
/* 9、C=MAX(A,B)。A或B有一个是空,则C为有效的值;A与B全是空,则C为空; */
|
|
|
/* 10、C=A。如果A<B,则C为A,否则C为空; */
|
|
|
/* 11、C=A。如果A<B或A为有效值B为空时,C为A,否则C为空; */
|
|
|
/* 12、C=A。如果A>B,则C为A,否则C为空; */
|
|
|
/* 13、C=A。如果A>B或A为有效值B为空时,C为A,否则C为空; */
|
|
|
/* 14、C=A。如果A与B为有效值时,C为A,否则C为空; */
|
|
|
/* 15、C=A。如果A为有效值时C为A,否则如果B为有效值时C为B,否则C为空; */
|
|
|
/* 16、C=A。如果A与B都是有效值时,C为A不同于B的值,否则C为空; */
|
|
|
/* 17、C=A。如果A与B都是有效值时,C为A不同于B的值,如果A或B为有效值时,C为有效的值,否则C为空; */
|
|
|
/* 18、C=SUM(A,B)。C=A+B,如果有一个为有效值,则C为有效值; */
|
|
|
/* 19、C=DEC(A,B)。C=A-B,如果有一个为有效值,则C为有效值; */
|
|
|
/* gridMode: */
|
|
|
/* 1、与“曲面A”相同; */
|
|
|
/* 2、与“曲面B”相同; */
|
|
|
/* 3、“曲面A”+“曲面B”; */
|
|
|
/* 4、“曲面A”与“曲面B”的重叠区域; */
|
|
|
/************************************************************************/
|
|
|
int Caculate(LPCTSTR fileA, LPCTSTR fileB, LPCTSTR fileOut,int outFormat,
|
|
|
double& x0, double& y0, double& dx, double& dy, int& numX, int& numY,
|
|
|
int functionMode, int gridMode=1);
|
|
|
|
|
|
int Play(double& x0, double& y0, double& dx, double& dy, int& numX, int& numY);
|
|
|
|
|
|
int CaculateMesh(CMesh* pMeshA, CMesh* pMeshB, CMesh* pMeshOut, int outFormat,
|
|
|
int functionMode, int gridMode);
|
|
|
//int PlayMesh(CMesh* pMeshOut);
|
|
|
|
|
|
void SetFile(CString fileA, CString fileB, CString fileOut, int outFormat);
|
|
|
void SetFunction(int functionMode, int gridMode);
|
|
|
|
|
|
void GetGridInfor(CString fileA, double& x0, double& y0, double& dx, double& dy, int& numX, int& numY);
|
|
|
|
|
|
protected:
|
|
|
int Play1(CDimension2D* pDfg1, CDimension2D* pDfg2, CDimension2D* pOutDfg);
|
|
|
int Play2(CDimension2D* pDfg1, CDimension2D* pDfg2, CDimension2D* pOutDfg);
|
|
|
double ValueZ(double z1, double z2, int nIdea);
|
|
|
|
|
|
BOOL IsPointInFault(CPositionList& lstPos1, CXy& xy1, CPositionList& lstPos2, CXy& xy2, double x, double y);
|
|
|
private:
|
|
|
// 曲面A文件
|
|
|
CString m_strFile1;
|
|
|
// 曲面B文件
|
|
|
CString m_strFile2;
|
|
|
//// 曲面A的断层
|
|
|
//CString m_strFaultA;
|
|
|
//// 曲面B的断层
|
|
|
//CString m_strFaultB;
|
|
|
|
|
|
// 输出文件
|
|
|
CString m_strOutput;
|
|
|
|
|
|
// 输出格式
|
|
|
int m_nOutFormat;
|
|
|
|
|
|
//// 曲面A的X0
|
|
|
//double m_dFile1X0;
|
|
|
//// 曲面A的Y0
|
|
|
//double m_dFile1Y0;
|
|
|
//// 曲面A的dx
|
|
|
//double m_dFile1Dx;
|
|
|
//// 曲面1Dy
|
|
|
//double m_dFile1Dy;
|
|
|
//// 曲面A的X网格数
|
|
|
//int m_nFile1Numx;
|
|
|
//// 曲面A的Y网格数
|
|
|
//int m_nFile1Numy;
|
|
|
//// 曲面B的X0
|
|
|
//double m_dFile2X0;
|
|
|
//// 曲面B的Y0
|
|
|
//double m_dFile2Y0;
|
|
|
//// 曲面B的X网格大小
|
|
|
//double m_dFile2Dx;
|
|
|
//// 曲面B的网格大小Y
|
|
|
//double m_dFile2Dy;
|
|
|
//// 曲面B的X网格数
|
|
|
//int m_nFile2Numx;
|
|
|
//// 曲面B的网格数Y
|
|
|
//int m_nFile2Numy;
|
|
|
|
|
|
// 计算方式
|
|
|
int m_nModeSel = -1;
|
|
|
// 输出网格范围方式
|
|
|
int m_nGridNumSel = -1;
|
|
|
|
|
|
double valueNull = -1E301;
|
|
|
|
|
|
};
|
|
|
|