|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "rect8.h"
|
|
|
|
|
|
#include ".\curve.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NContour
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
struct SGridParamEx;
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CGrid
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CGrid(void);
|
|
|
|
|
|
~CGrid(void);
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CGrid& grid);
|
|
|
|
|
|
|
|
|
|
|
|
virtual CGrid* CloneObject(void); //<2F><>¡<EFBFBD>Լ<EFBFBD>
|
|
|
|
|
|
virtual int CreateDimension(int dn); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ά<EFBFBD><CEAC>
|
|
|
|
|
|
virtual void Empty(); //<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) { return 1e301; }
|
|
|
|
|
|
virtual double Value(int i, int j) { return 1e301; }
|
|
|
|
|
|
virtual bool IsInRangeZ(double z0);
|
|
|
|
|
|
//дDFG<46><47>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
virtual int WriteDfg(LPCTSTR m_output) { return 0; }
|
|
|
|
|
|
virtual void Write(CFile& fw);
|
|
|
|
|
|
virtual int Read(CFile& fr);
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short& ver) { }
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> smooth_coefΪƽ<CEAA><C6BD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>Ŷȣ<C5B6>ֵԽ<D6B5><D4BD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7>Խǿ*/
|
|
|
|
|
|
virtual void Smooth(double smooth_coef = 1.0 ); // NVI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дSmooth<74><68><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double xGrid(double x);
|
|
|
|
|
|
double yGrid(double x);
|
|
|
|
|
|
double x(int i);
|
|
|
|
|
|
double y(int j);
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 GetRect(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>η<EFBFBD>Χ
|
|
|
|
|
|
double xmin(void) { return P0[0]; }
|
|
|
|
|
|
double ymin(void) { return P0[1]; }
|
|
|
|
|
|
double xmax(void);
|
|
|
|
|
|
double ymax(void);
|
|
|
|
|
|
|
|
|
|
|
|
long& xnum(void) { return num[0]; }
|
|
|
|
|
|
long& ynum(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
return num[1];
|
|
|
|
|
|
}
|
|
|
|
|
|
double& dx(void) { return delt[0];}
|
|
|
|
|
|
double& dy(void) { return delt[1];}
|
|
|
|
|
|
|
|
|
|
|
|
double vmin(void) { return range[0]; }
|
|
|
|
|
|
double vmax(void) { return range[1]; }
|
|
|
|
|
|
void SetRange(double vmin, double vmax) { range[0]=vmin; range[1]=vmax; }
|
|
|
|
|
|
// virtual int GetRange(double minValidValue = -1e100, double maxValidValue = 1e100) { return 0; };
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汣<EFBFBD><E6B1A3>ΪSegY<67>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pCoorCurve<76><65>Ϊ<EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Xֵ<58><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>ֵƽ<D6B5><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool WriteSegY(LPCTSTR strOutput, CCurve* pCoorCurve = NULL);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
long n; ///< n<><6E>ʾά<CABE><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2<CEAA><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ3
|
|
|
|
|
|
long * num; ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double *P0; ///< ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double *delt; ///< <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
double range[2]; ///< zֵ<7A><D6B5>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA>Ч
|
|
|
|
|
|
|
|
|
|
|
|
///< <20><><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(24B)
|
|
|
|
|
|
struct SGridParam
|
|
|
|
|
|
{
|
|
|
|
|
|
short times; ///<2 <20><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
|
|
|
|
|
|
short timesFlt; ///<2 <20>ڼ<EFBFBD><DABC>ο<EFBFBD><CEBF>Ƕϲ<C7B6>
|
|
|
|
|
|
double smooth; ///<8 ƽ<><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double precision; ///<8 <20><><EFBFBD><EFBFBD><EEBEAB>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>壬<EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>Ϊ100<30>ֽڣ<D6BD><DAA3>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>
|
|
|
|
|
|
struct SGridHead
|
|
|
|
|
|
{
|
|
|
|
|
|
char fileType[16]; ///<16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>
|
|
|
|
|
|
///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>ϲ<EFBFBD>=GDF-FGrid<69><64><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>=GDF-DGrid<69><64><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>Ϊ.f(x,y)
|
|
|
|
|
|
char fileVer[8]; ///<8 <20><><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>V2.0
|
|
|
|
|
|
SGridParam gridParam; ///<20 <20><><EFBFBD>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
char strExtend[56]; ///<56
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
SGridHead m_fileHead; ///< <20>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>壬Ҳ<E5A3AC><D2B2><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>Ϊ: char version[100];
|
|
|
|
|
|
|
|
|
|
|
|
SGridParam& GetGridParam() { return m_fileHead.gridParam; }
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool CreateGridParam(SGridParamEx& gp); ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsValueInRange(double z); ///< <20>ж<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7>ڷ<EFBFBD>Χ<EFBFBD><CEA7>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct SGridParamEx : public CGrid::SGridParam
|
|
|
|
|
|
{
|
|
|
|
|
|
double coord[6]; ///<48 <20><><EFBFBD>귶Χ[0=xmin,1=ymin,2=zmin,3=xmax,4=ymax,5=zmax]
|
|
|
|
|
|
int num[3]; ///<6 <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[0=numx,1=numy,2=numz]
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
using namespace NContour;
|