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.

114 lines
4.0 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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