#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。如果AB,则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; };