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.

111 lines
4.3 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: <20><>ά<EFBFBD><CEAC><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2011-5-3
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "BuilderBase.h"
#include "SeisLineData.h"
namespace NCube
{
//<2F><><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>F(X,Y)<29>ļ<EFBFBD><C4BC><EFBFBD>һ<EFBFBD><EFBFBD><E3B1A3><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ʽ
//<2F>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1<><31><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA>Ϊ<EFBFBD>˽<EFBFBD><CBBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><D3BD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><E1B3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CBuilderMesh3D
: public CBuilderBase
{
public:
CBuilderMesh3D(void);
~CBuilderMesh3D(void);
//ֱ<>Ӷ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool Read(CString strFxyPathName); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD>ļ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD>ļ<EFBFBD>
virtual bool AttachInput(void* pMesh, bool bAutoDelete = false); //<2F><><EFBFBD><EFBFBD>ΪCDimension3D<33><44><EFBFBD><EFBFBD>
virtual void Clear(void);
virtual float GetSampleInterval(); //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>дSegY<67><59><EFBFBD><EFBFBD>ʱʹ<CAB1><CAB9>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
virtual double Value(double x, double y, double z) { return GetCube()->Value(x, y, z); }
virtual double Value(int row, int col, int k) { return GetCube()->Value(row, col, k); }
virtual CColorBase& GetColorBar() { return m_colorBar; }
virtual CSeisSampleInfo& GetSampleInfo() { return m_sampleInfo; }//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
/////////////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
//<2F><><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ
bool CreateRandMesh_XY(CMeshRand2D& md, CCurve* pCurveXY, EOrientation curOri);
bool CreateRandMesh_XY(CMeshRand2D& md, CCurve* pCurve, float fiexdStep, EOrientation curOri);//ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ߵ<EFBFBD><DFB5>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD>areaSnapStep״̬<D7B4>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
bool CreateLineXY(CMesh2D& md, float line, EOrientation ori, bool bReMemory=true);
// <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CreateInlineXY(CMesh2D& md, float row_line_num, bool bReMemory=true);
// <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CreateCrosslineXY(CMesh2D& md, float col_line_num, bool bReMemory=true);
// <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ
bool CreateSliceUpXY(CMesh2D& md, float slice_up_num, bool bReMemory=true);
/////////////////////////////////////////////////////////////////////////////////////////
CDimension3D* GetCube() { return (CDimension3D*)GetInput(); }
virtual CSeisSurvey3D& GetSurvey() { return m_survey; }
CSeisSurvey3D m_survey; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CColorBase m_colorBar;
protected:
void InitSampleInfo(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>
CSeisSampleInfo m_sampleInfo; //<2F><><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ
private:
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʹ<EFBFBD><CAB9><EFBFBD>̶߳<DFB3><CCB6><EFBFBD>
CString m_strMeshFile; //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʹ<EFBFBD><CAB9><EFBFBD>̶߳<DFB3>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void MeshXY2MeshRC(double* bakXY6); //<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬Ϊ<E5A3AC><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳһ
void MeshRC2MeshXY(double* bakXY6); //<2F><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
virtual bool CreateData(); //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>̷߳<DFB3>ʽ
private:
//<2F><>ʹ<EFBFBD><CAB9><EFBFBD>̷߳<DFB3>ʽ
bool _ReadFile(LPCTSTR lpszMeshFile); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dCurLine<6E><65>line<6E><65><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>
bool _CreateLine(CSeisLineData& sd, float line, EOrientation ori, bool bReMemory);
//bool _CreateSeisDataAny(CSeisLineData& sd, float& dCurLine, EOrientation ori);
bool _CreateSeisDataSnap(CSeisLineData& sd, float& dCurLine, EOrientation ori);
//<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD>ΪXYƽ<59><C6BD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool _CreateRandLineRC(OUT CSeisLineData& sd, CCurve* pCurve);
//<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD>ΪXYƽ<59><C6BD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool _CreateRandLineXY(OUT CSeisLineData& sd, CCurve* pCurve);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool _CreateCube(CDimension3D& cb, CCubeRange& cr, bool bReMemory=true);
bool _CreateRandMeshRC(CMeshRand2D& md, CCurve* pCurve, EOrientation curOri);//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
bool _CreateRandMeshXY(CMeshRand2D& md, CCurve* pCurve, EOrientation curOri);//<2F><><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ
bool _CreateSliceRC(CMesh2D& md, CDimension2D* pInSuf, bool bLineValue);
bool _CreateSliceRC(CMesh2D& md, float& z_value, bool bLineValue);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʵ<CEAA><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool _CreateSliceXY(CMesh2D& md, CDimension2D* pInSuf, bool bLineValue);
bool _CreateRandMesh_XY(CMeshRand2D& md, CCurve* pCurveXY, EOrientation curOri);
bool _CreateRandMesh_XY(CMeshRand2D& md, CCurve* pCurve, float fiexdStep, EOrientation curOri);//ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool _CreateMeshData(CMesh2D& md, float& dCurLine, EOrientation ori); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ
bool _CreateMeshDataAny(CMesh2D& md, float& dCurLine, EOrientation ori); //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ
bool _CreateMeshDataSnap(CMesh2D& md, float& dCurLine, EOrientation ori); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ㣨<DAB5><E3A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ
};
}//namespace