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.

154 lines
5.6 KiB
C

1 month ago
#pragma once
#include "dfdimension.h"
#include "ScreenXY.h" // Added by ClassView
#include "ContourValue.h"
#include "ContourCreate.h"
namespace NContour
{
class AFX_EXT_CLASS CDimension2D :
public CDimensionBase
{
public:
CDimension2D(void);
~CDimension2D(void);
virtual CGrid* CloneObject(void); //<2F><>¡<EFBFBD>Լ<EFBFBD>
virtual int Create(int numx, int numy, double x0, double y0, double dx, double dy);
virtual void SetValue(int i, int j, double v);
virtual double Value(double x0, double y0);///< <20><>ֵ<EFBFBD><D6B5>x0,y0<79><30>
virtual double Value(int i, int j); ///< <20><><EFBFBD><EFBFBD>
void operator=(CDimension2D& d2d);
/** @brief <20>õ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>NContour::CDimension2Dֱ<44>߷<EFBFBD><DFB7><EFBFBD>ϵ<EFBFBD><CFB5>ֵl<D6B5><6C><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>pre<72><65><EFBFBD><EFBFBD> */
int Cross(CLine3D& line, double& l, double pre); //<2F><><EFBFBD>أ<EFBFBD>1<EFBFBD><31>ʾû<CABE>н<EFBFBD><D0BD><EFBFBD>
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>pre<72><65><EFBFBD><EFBFBD>, <20><><EFBFBD>޽<EFBFBD><DEBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>false */
bool Cross(CPoint3D& pt1, CPoint3D& pt2, CPoint3D& csPt, double pre);
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>pre<72><65><EFBFBD><EFBFBD>, <20><><EFBFBD>޽<EFBFBD><DEBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>false */
bool Cross(CCurve& curve, CPoint3D& csPt, double pre);
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7A><D6B5><EFBFBD>мӼ<D0BC><D3BC>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>,0<><30><EFBFBD><EFBFBD>+ <20><>1 Ϊ<><CEAA><EFBFBD><EFBFBD><32>ˣ<EFBFBD><33><CEAA>*/
void ChangeZValue(double cv, int mode);
virtual void Serialize(CArchive& ar, const short& ver); //*.dfg
virtual int WriteDfg(LPCTSTR m_output);
int ReadDfgHead(CString m_input);
int ReadDfg(CFile& fr);
int ReadDfg(CString m_input);
int WriteDfg(CFile& fw);
int WriteDfg(FILE* fw);
int ReadGridText(CString m_input);
int ReadGridText(CFile& fr); //˫<><CBAB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void WriteGridText(CFile& fw); //˫<><CBAB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
int WriteGridText(CString m_output); //˫<><CBAB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void WriteGridTextData(CFile& fw); //˫<><CBAB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
//<2F><>ȡASCII<49>ļ<EFBFBD><C4BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2>֣<EFBFBD><D6A3><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
int ReadGridTextData(CFile& fr, BOOL bReversal);
void WriteGrid(CString m_output);
int WriteToSEGY(CString m_output);
int Write(int fw, int i, int j, double z0);
double Read(int fr, int i, int j);
int WriteI64(int fw, int i, int j, __int64 z0);
__int64 ReadI64(int fr, int i, int j);
int WriteFaultage(FILE *&fw);
int GetBitmap(CImage &m_bmp,CColorBase &dcolor,int step);
int Draw(CDC *pDC,CScreenXY* pScreenXY,CColorBase &dcolor);
void FaultagePolygon(int k,int m_direction);
double fValue(int fr, double x0, double y0);
double Volume(CCurve& curve, double baseZ=0);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double TradeArea(CCurve& curve, double baseZ = 0);
int Extremum(FILE *& fw,int mm);
int Extremum(int i,int j,int mm);
/** @brief Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ߽<D3B1>*/
void Outline(CCurve& curve);
/** @brief Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ߽<D3B1>*/
int Outline(CString m_input);
int GetPlane(double x, double y, CPlane& plane);
int DX(CPoint3D &point);
int DY(CPoint3D &point);
double DifferentialX(int fr, int i, int j);
double DifferentialY(int fr, int i, int j);
double Differential(int fr, int i, int j);
double DX(int i, int j, int nt); //ntΪ<74><CEAA><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>,1=һ<><D2BB>,2=<3D><><EFBFBD><EFBFBD>....
double DY(int i, int j, int nt);
double DXY(int i, int j,int nt);
double DifferentialX(int fr, int k);
double DifferentialY(int fr, int k);
double Differential(int fr, int k);
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int ContourCreate(CString m_output, CString m_contour, CString markLayer, CString otherLayer, char *mode="at");
void ContourCreate(CContour& cv);
void ContourCreate(POSITION AddContourCurve(CCurve* pCurve, CString strLayer), CContour& cv, CString markLayer, CString otherLayer);
void ContourCreate(std::vector<CCurve*>* curves, std::vector<CString*>* layers, CContour& cv, CString markLayer, CString otherLayer);
//template<class T, class PMemFun>
//void ContourCreate(T& obj, PMemFun pmemfun, CContour& cv, CString markLayer, CString otherLayer);
int Faultage(CString name);
void Faultage(CCurve& fal);
void SetContourCreateFile(FILE* fw);
/** @brief ׷<>ٶ<EFBFBD>άƽ<CEAC><C6BD><EFBFBD><EFBFBD>ֵΪm_contour<75>ĵ<EFBFBD>ֵ<EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
void Contour2D(double m_contour);
/** @brief <20><>(i,j)λ<>ò鵽<C3B2><E9B5BD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>*/
int Contour2DK(int i, int j, double m_contour, char* mark);
//CList <dfPoint,dfPoint> m_contour_line;
std::vector<dfPoint> m_contour_line;
CCurve flt_u;
private:
//<2F>ϲ<EFBFBD>
void Faultage(double *xl, double *yl);
void FaultageY(int i,int j,double t);
void FaultageX(int i,int j,double t);
void FaultageY(double *xl, double *yl);
void FaultageX(double *xl, double *yl);
int DrawFaultage(int k,CDC *pDC,CScreenXY* pScreenXY,CColorBase &cr);
std::vector<CCurve*>* m_pCurves = nullptr;
std::vector<CString*>* m_pLayers = nullptr;
protected:
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/** @brief <20>ж<EFBFBD><D0B6>Ƿ񵽴<C7B7><F1B5BDB4>߽磬<DFBD>Լ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ص<EFBFBD>ֵ<EFBFBD><EFBFBD><E3B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>֮<EFBFBD><D6AE>*/
double ContourGet(int k,double m_contour,int m_offset);
void ContourAddPoint(double x,double y,double z);
void ContourAddPoint(CList<dfPoint, dfPoint>& lstPoint, double x, double y, double z);
/** @brief ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ֵ<EFBFBD><EFBFBD><E3A3AC><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>,<2C><><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ˵<CFB8><CBB5><EFBFBD><EFBFBD>cppע<70><D7A2>*/
void Contour2D(double &m_contour,int &k, char *mark,int m_direction);
//void Contour2DB(double &m_contour, int &k, char *mark, int m_direction);
void Contour2DPolygon(double m_contour);
void Contour2DFaultage(double &m_contour, int &k, char *mark, int m_direction);
int Contour2DFaultageIsBreak(int k1,int k2);
void ContourWrite(char *name);
void Contour(double m_contour);
int IsTail;
CContourCreate m_contourCreate;
// private:
// /** @brief <20><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>Χ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>С<EFBFBD><D0A1>*/
// void EnlageU(double dz);
// /** @brief <20><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD>Χ<EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD>Сһ<D0A1><D2BB>С<EFBFBD><D0A1>*/
// void ReduceU(double dz);
// /** @brief <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>׷<EFBFBD><D7B7><EFBFBD><EFBFBD>΢<EFBFBD><CEA2><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ֵ<EFBFBD><D6B5>λ*/
// void HomeU();
// list<int> m_tempNodNoLst; ///< <20><EFBFBD><E6B4A2>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵʱ<D6B5>õ<EFBFBD>
// double m_tinydz; ///< zֵ΢С<CEA2>ı<EFBFBD><C4B1><EFBFBD>
};
};