|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD>: SegY<67>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2011-4-1
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "DrawModel\ObjectSet.h"
|
|
|
|
|
|
#include "SeisTraceData.h"
|
|
|
|
|
|
#include "Texture.h"
|
|
|
|
|
|
#include "Mesh2D.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NSeis
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CSeisLinePar
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisLinePar();
|
|
|
|
|
|
|
|
|
|
|
|
enum EColorType
|
|
|
|
|
|
{
|
|
|
|
|
|
colTypeSeis252 = 1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>𣬱<EFBFBD><F0A3ACB1>ܶ<EFBFBD><DCB6><EFBFBD>ɫΪ252<35><32>
|
|
|
|
|
|
colTypeMesh = 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
double Uniform(double a, double b)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
a /= b;
|
|
|
|
|
|
a *= m_dScaleFactor; //Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(-100, 100<30><30><EFBFBD><EFBFBD>, <20><EFBFBD>
|
|
|
|
|
|
return a;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
double m_dScaleFactor; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ100<30><30><EFBFBD><EFBFBD>MESH<53><48><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1
|
|
|
|
|
|
EColorType m_colorType;
|
|
|
|
|
|
EUniformType m_uniformType; //<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>洢һ<E6B4A2><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>֮ǰ<D6AE><C7B0>CTraceData<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
class AFX_EXT_CLASS CSeisLineData
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisLineData(void);
|
|
|
|
|
|
~CSeisLineData(void);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ΪnCol<6F><6C><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪnRow<6F><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬ÿ<E3A3AC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>
|
|
|
|
|
|
//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD>б<EFBFBD><D0B1>棬ÿ<E6A3AC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪnRow<6F><77>
|
|
|
|
|
|
bool Create(CSize sz, CFileSegy::EDataType eDataType = CFileSegy::typeIbmFloat);
|
|
|
|
|
|
bool Create(int nRow, int nCol, CFileSegy::EDataType eDataType = CFileSegy::typeIbmFloat);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Clear();
|
|
|
|
|
|
|
|
|
|
|
|
bool CreateTexture(CTexture* pTex, CColorBase& cb, int nBPP);
|
|
|
|
|
|
|
|
|
|
|
|
bool ToMesh2D(CMesh2D& md);
|
|
|
|
|
|
bool CreateFormMesh2D(CMesh2D& md);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
//<2F><><EFBFBD>ص<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ҫ<EFBFBD>ⲿʹ<E2B2BF><CAB9>deleteɾ<65><C9BE><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(x)<29><>(y)<29><>
|
|
|
|
|
|
unsigned char* CreateTexture(CColorBase& cb, int nBPP);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
int GetTotalBytes() { return m_traces[0]->GetBytesLength() * GetTraceCount(); } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|
|
|
|
|
int GetSampleCount() { return m_size.cx; } //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ݵIJ<DDB5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int GetTraceCount() { return m_size.cy; } //<2F>ܵ<EFBFBD><DCB5><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
CFileSegy::EDataType GetDataType() { return m_eDataType; } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
EOrientation GetOrientation() { return m_eOrientation; }
|
|
|
|
|
|
void SetOrientation(EOrientation eo) { m_eOrientation = eo; }
|
|
|
|
|
|
|
|
|
|
|
|
inline CSize GetSize(void) { return m_size; }
|
|
|
|
|
|
inline void SetSize(CSize sz) { m_size = sz; } //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>add<64><64><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|
|
|
|
|
inline void add( CSeisTraceData* td ) { m_traces += td; m_size.cy+=1; }
|
|
|
|
|
|
|
|
|
|
|
|
inline CSeisTraceData* operator[](int nCol) const { return m_traces[nCol]; }
|
|
|
|
|
|
inline CSeisTraceData* GetTrace(int nCol) const { return m_traces[nCol]; } //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
|
|
|
|
|
|
|
float GetValue(int nRow, int nCol); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݵ㣨<DDB5><E3A3A8><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
CSeisTraceDataInfo& GetTraceDataInfo(int nCol) { return m_traces[nCol]->GetDataInfo(); }
|
|
|
|
|
|
|
|
|
|
|
|
bool GetCurveCoordRC(CCurve& cv, bool bIsMaxRange); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĿռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool GetTraceCoordRC(int nTraceIndex, dfPoint& pt, bool bIsMaxRange); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool GetCurveCoordXY(CCurve& cv, bool bIsMaxRange); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĿռ<C4BF><D5BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool GetTraceCoordXY(int nTraceIndex, dfPoint& pt, bool bIsMaxRange); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double GetMaxValue(int nCol) { return GetTraceDataInfo(nCol).m_dMaxValue;} //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ, 0<=nRow<m_size.cx
|
|
|
|
|
|
void SetMaxValue(int nCol, double val) { GetTraceDataInfo(nCol).m_dMaxValue = val; }
|
|
|
|
|
|
double GetMinValue(int nCol) { return GetTraceDataInfo(nCol).m_dMinValue;} //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
|
|
|
|
|
|
void SetMinValue(int nCol, double val) { GetTraceDataInfo(nCol).m_dMinValue = val; }
|
|
|
|
|
|
double GetRMS(int nCol) { return GetTraceDataInfo(nCol).m_dRms; } //<2F><><EFBFBD>þ<EFBFBD><C3BE><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
void SetRMS(int nCol, double val) { GetTraceDataInfo(nCol).m_dRms = val; }
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
void RestatDataInfo();
|
|
|
|
|
|
|
|
|
|
|
|
void EnableLock(bool bEnable) { m_bLock = bEnable; }
|
|
|
|
|
|
bool IsLock() { return m_bLock; }
|
|
|
|
|
|
|
|
|
|
|
|
void operator = (CSeisLineData& sd);
|
|
|
|
|
|
void Reversal(void); //<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ֵ
|
|
|
|
|
|
void SetTimeRange(TInterval<float>& range) { m_zRange = range; }
|
|
|
|
|
|
TInterval<float>& GetTimeRange() { return m_zRange; }
|
|
|
|
|
|
CCubeRange GetCubeRange(); //<2F><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>漰<EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ߵ<EFBFBD><DFB5>ŷ<EFBFBD>Χ
|
|
|
|
|
|
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
bool WriteMesh(LPCTSTR lpszFileName);
|
|
|
|
|
|
bool WriteTraceDataInfo(LPCTSTR lpszFileName); //д<><D0B4>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
|
|
|
|
|
|
bool WriteSegy(LPCTSTR lpszFileName, unsigned short sample_interval = 1000);
|
|
|
|
|
|
void WriteSegyTrace(CFileSegy& fw, int nTraceIndex, unsigned short sample_interval, char* pTraceHeader=NULL);
|
|
|
|
|
|
|
|
|
|
|
|
void SetLinePar(CSeisLinePar& par) { m_sectionPar = par; }
|
|
|
|
|
|
CSeisLinePar& GetLinePar() { return m_sectionPar; }
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
NSet::TObjectSet<CSeisTraceData> m_traces; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CSize m_size; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cx<63><78>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cy<63><79><EFBFBD>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
|
|
|
|
|
bool m_bLock; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ܱ༭
|
|
|
|
|
|
CFileSegy::EDataType m_eDataType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
EOrientation m_eOrientation; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桢<EFBFBD><E6A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
TInterval<float> m_zRange; //Z<><5A><EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
|
|
|
|
|
|
CSeisLinePar m_sectionPar;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}//namespace
|