//////////////////////////////////////////////////////////////////////////////
//<2F> ļ<EFBFBD> Mesh.h
//<2F> <> Ҫ<EFBFBD> <D2AA> <EFBFBD> <EFBFBD> :
//
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> д: 2005-12-07
/////////////////////////////////////////////////////////////////////////////
# pragma once
# include "ImageInsert.h"
# include "colorruler.h"
# include "rect8ex.h"
# include ".\name.h"
# include ".\curveex.h"
# include <vector>
# include "MeshPackage.h"
# include <memory>
using namespace std ;
# define MESH_TEXT 0x00000001 //3DMesh<73> <68> ʽ <EFBFBD> <CABD> ʹ <EFBFBD> <CAB9> CDimension2D<32> <44>
# define MESH_DFG 0x00000002 //DFG<46> <47> ʽ
# define MESH_FXY 0x00000004 //F(x,y)<29> <> ʽ
# define MESH_FUN_2D 0x00000008 //ʹ <> <CAB9> CFunction2D<32> <44>
# define MESH_DIFFERENTIAL_X 0x00000010 //X<> <58> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> ƫ<EFBFBD> <C6AB>
# define MESH_DIFFERENTIAL_Y 0x00000020 //Y<> <59> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> ƫ<EFBFBD> <C6AB>
# define MESH_DIFFERENTIAL_XY 0x00000040 //XY<58> <59> <EFBFBD> <EFBFBD> һ <EFBFBD> <D2BB> ƫ<EFBFBD> <C6AB>
# define MESH_DIFFERENTIAL_X2 0x00000100 //X<> <58> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƫ<EFBFBD> <C6AB>
# define MESH_DIFFERENTIAL_Y2 0x00000200 //Y<> <59> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƫ<EFBFBD> <C6AB>
# define MESH_DIFFERENTIAL_XY2 0x00000400 //XY<58> <59> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƫ<EFBFBD> <C6AB>
# define MESH_DRAW_RULER 0x00001000 //<2F> <> ʾ <EFBFBD> <CABE> ɫ<EFBFBD> <C9AB> <EFBFBD> <EFBFBD>
# define MESH_UPDATE_RULER 0x00002000 //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɫ<EFBFBD> <C9AB> <EFBFBD> <EFBFBD>
//#define IMAGE_TRANSPARENT_ALPHA 0x00004000 //λͼ<CDBC> <CDB8> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ò<EFBFBD> ͬ<EFBFBD> <CDAC> ɫ<EFBFBD> IJ<EFBFBD> ͬ<CDAC> <CDB8> <EFBFBD> ȣ <EFBFBD> Ϊ<EFBFBD> ˱<EFBFBD> <CBB1> <EFBFBD> <EFBFBD> <EFBFBD> CImageInsert<72> е <EFBFBD> <D0B5> <EFBFBD> ͬ
//#define IMAGE_TRANSPARENT_COLOR 0x00008000 //λͼ<CDBC> <CDB8> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8> һ <EFBFBD> <D2BB> <EFBFBD> <EFBFBD> ɫ<EFBFBD> <C9AB> ȫ<C8AB> <CDB8>
# define MESH_SERIALIZE_RULER 0x00010000 //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
class AFX_EXT_CLASS CMesh
: public CMeshBase
, public CRect8
{
public :
CMesh ( void ) ;
virtual ~ CMesh ( void ) ;
int64_t GetId ( ) const ;
void SetId ( int64_t id ) ;
void Serialize ( CArchive & ar , const short & ver ) override ;
virtual int Read ( CFile & fr , const short & ver ) ;
virtual void Write ( CFile & fw , const short & ver ) ;
virtual void GetRange ( CRect8 & range ) ;
virtual void GetRange ( CPoint3D & minPoint , CPoint3D & maxPoint ) ;
virtual BOOL IsInRange ( CRect8 & range ) ;
virtual void Empty ( void ) ;
virtual void Rotate ( double xs , double ys , double angle ) ;
virtual void ScaleProperty ( double sx , double sy ) ;
virtual void Calibrate ( int type , void * pValue ) ;
virtual void ScaleCoordinate ( double sx , double sy , int mode ) ; //mode=0:<3A> ӣ<EFBFBD> 1:<3A> <> <EFBFBD> <EFBFBD> 2:<3A> ˣ<EFBFBD> 3:<3A> <>
virtual void WriteDML ( CFile & fw , const short & ver , int nBaseTabNum ) ;
virtual int ReadDML ( CFile & fr , const short & ver ) ;
virtual void WritePCG ( CFile & fw , const short & ver , int nBaseTabNum ) ;
virtual int ReadPCG ( CFile & fr , const short & ver ) ;
virtual void WritePCG2 ( CFile & fw , const short & ver , int nBaseTabNum ) ;
virtual int ReadPCG2 ( CFile & fr , const short & ver ) ;
void WriteElementDML ( BYTE * & buffElement , int & buffLen ) ;
BOOL ReadElementDML ( BYTE * bufData , const short & ver , int bufLen ) ;
int ReadElementDML ( CFile & fr , const short & ver ) ;
void GetRange ( CPoint3D & minPoint , CPoint3D & maxPoint , BOOL bValue4 ) ; //bValue4<65> <34> ʾ <EFBFBD> Ƿ<EFBFBD> Zֵ<5A> <D6B5> <EFBFBD> յ<EFBFBD> <D5B5> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> ,<2C> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> յ<EFBFBD> <D5B5> <EFBFBD> <EFBFBD> м<EFBFBD> <D0BC> <EFBFBD>
void SetMesh ( CGrid * pDfg , int nMeshType , BOOL bGetZRange = FALSE , double dInvaliData = 1e30 , BOOL bInitColor = TRUE ) ;
int Read ( CFile & fr , const short & ver , BOOL bNewFormat ) ;
int ReadGrid_SurferAscii ( LPCTSTR lpszFileName ) ; //<2F> <> ȡSurfer<65> <72> <EFBFBD> ı <EFBFBD> <C4B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
void WriteGrid_SurferAscii ( LPCTSTR lpszFileName ) ; //д
int ReadGrid_SurferBinary6 ( LPCTSTR lpszFileName ) ; //<2F> <> ȡSurfer6<72> Ķ<EFBFBD> <C4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
void WriteGrid_SurferBinary6 ( LPCTSTR lpszFileName ) ; //д
int ReadGrid_SurferBinary7 ( LPCTSTR lpszFileName , void * pParentXy ) ; //<2F> <> ȡSurfer7<72> Ķ<EFBFBD> <C4B6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
int ReadGrid_GeoFrameAscii ( LPCTSTR lpszFileName ) ;
void WriteGrid_GeoFrameAscii ( LPCTSTR lpszFileName ) ;
int ReadGrid_EPT ( LPCTSTR lpszFileName ) ; //<2F> <> ȡEPT<50> <54> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
int ReadGrid_Zmap ( LPCTSTR lpszFileName ) ; //<2F> <> ȡPetrel<65> <6C> ZMAP grid<69> ļ<EFBFBD>
int ReadGrid_EarthVision ( LPCTSTR lpszFileName ) ; //<2F> <> ȡEarthVision<6F> <6E> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
int ReadGrid_DEMAscii ( LPCTSTR lpszFileName ) ; //Digital Elevation Models
int ReadGrid_ArcInfoASCII ( LPCTSTR lpszFileName ) ; //<2F> <> ȡArcInfo ASCII Grid Format<61> <74> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
int ReadGridData ( CFile & fr , CDimension2D * pDfg , BOOL bReversal = FALSE ) ; //<2F> <> ȡASCII<49> ļ<EFBFBD> <C4BC> д<EFBFBD> <D0B4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݲ<EFBFBD> <DDB2> <EFBFBD>
//<2F> <> DFG<46> <47> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <C6BD>
int Smooth ( double smooth_coe = 1.0 , long smooth_times = 1 ) ;
//<2F> <> һ <EFBFBD> У <EFBFBD> GDFGRID
void WriteGdfGrid ( LPCTSTR lpszFileName ) ;
void WriteGdfGrid ( CFile & fw , int times ) ;
int ReadGdfGrid ( CFile & fr ) ;
int ReadGdfGrid ( CString strGridFile ) ;
int CreateImage ( CImageInsert * pImage , int times = 1 ) ;
void ContourCreate ( POSITION ( AddContourCurve ) ( CCurve * pCurve , CString strLayer ) ,
double step , long nameStep , CString nameLineLayer , CString otherLineLayer ,
double czmin , double czmax ) ;
void ContourCreate ( std : : vector < CCurve * > * curves , std : : vector < CString * > * layers ,
double step , long nameStep , CString nameLineLayer , CString otherLineLayer ,
double czmin , double czmax ) ;
void GetM ( double & zmin , double & zmax , BOOL bRerange = FALSE , double minValidValue = - 1e100 , double maxValidValue = 1e100 ) ;
void SetM ( double zmin , double zmax ) ;
void GetDelt ( double & dx , double & dy ) ;
void GetOrg ( double & x0 , double & y0 ) ;
virtual void CreateColor ( void ) ;
virtual void GetBitmap ( void ) ;
virtual void UpdateColorRuler ( void ) ;
virtual void ExchangeXY ( void ) ; //<2F> <> <EFBFBD> <EFBFBD> XY<58> <59> <EFBFBD> <EFBFBD>
virtual void ExchangeXY ( void * pProjection ) ; //ת<> <D7AA> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8> ͶӰ<CDB6> <D3B0> <EFBFBD> <EFBFBD> ,CProjection* pProjection
CColorRuler * m_pRuler ;
CColorBase color ;
void InitColor ( ) ;
int ReadColor ( CFile & fr , const short & ver ) ;
void WriteColor ( CFile & fw , const short & ver ) ;
int CreateColorFromRuler ( void ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɫ<EFBFBD> <C9AB> <EFBFBD> ߵ ĸ<DFB5> <C4B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɫ<EFBFBD> <C9AB>
void Offset ( double dx , double dy ) ;
void SetValue ( CPtrList & curveList , double z0 , BOOL bRangeOut ) ;
void SetZ ( long i , long j , double z0 ) ;
int DeleteValue ( double valueStart , double endValue , double invalidValue ) ;
BOOL IsInRangeZ ( double z0 ) ;
long SetValueZ ( double a , int nModeSel ) ;
void ScaleZ ( double dScale ) ;
double Volume ( CCurveEx & curve , double dClosedZ ) ; //<2F> <> <EFBFBD> 㹹<EFBFBD> <E3B9B9> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȧ<EFBFBD> ձպ<D5B1> <D5BA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> ֮<EFBFBD> <D6AE> <EFBFBD> IJ<EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
double TradeArea ( CCurve & curve , double baseZ = 0 ) ;
double GetClosedZ ( CCurveEx & curve , double hightPointZ ) ; //<2F> <> <EFBFBD> ñպ<C3B1> Zֵ<5A> <D6B5> hightPointZһ <5A> <D2BB> ΪGetHightPoint<6E> <74> <EFBFBD> õĸߵ <C4B8> Zֵ
int GetHightPoint ( CCurveEx * pCurve , CPoint3D & hightPoint ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߷<EFBFBD> Χ <EFBFBD> ڵĸߵ <C4B8> , <20> <> <EFBFBD> <EFBFBD> 0<EFBFBD> <30> ʾ <EFBFBD> <CABE> <EFBFBD> ò<EFBFBD> <C3B2> ɹ<EFBFBD>
void operator = ( CMesh & mesh ) ;
void CloneOtherParamter ( CMesh & mesh ) ; //<2F> <> <EFBFBD> Ƴ<EFBFBD> <C6B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> IJ<EFBFBD> <C4B2> <EFBFBD>
int GetNumber ( long & numx , long & numy , long * pNumz = NULL ) ;
int AutoReadFile ( CString strMeshPathName ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> չ<EFBFBD> <D5B9> <EFBFBD> Զ<EFBFBD> ʶ<EFBFBD> <CAB6>
int AutoReadFile ( CFile & fr , CString strExt ) ;
int ReadMeshFile ( CString strMeshPathName ) ;
int GeologicalSection ( CCurveEx & split , CCurveEx & section ) ; //<2F> <> <EFBFBD> <EFBFBD> split<69> <74> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void WriteMesh ( LPCTSTR lpszMeshName , DWORD dwFileType ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
void WriteOnlyDataToXYZ ( CFile & fw , int times , const short & ver ) ;
/**
* <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˹ <EFBFBD> <EFBFBD> <EFBFBD>
*/
bool IsLightingEnabled ( ) const ;
/**
* <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD>
*/
void EnableLighting ( ) ;
/**
* <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD>
*/
void DisableLighting ( ) ;
/**
* <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ <EFBFBD>
*/
int GetLightAzimuth ( ) const ;
/**
* <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ <EFBFBD>
* \ param azimuth ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ ȣ <EFBFBD> <EFBFBD> <EFBFBD> Χ [ 0 , 360 ]
*/
void SetLightAzimuth ( float azimuth ) ;
/**
* <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ <EFBFBD>
*/
float GetLightElevation ( ) const ;
/**
* <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> ߴ <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ <EFBFBD>
* \ param elevation ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ ȣ <EFBFBD> <EFBFBD> <EFBFBD> Χ [ 0 , 360 ]
*/
void SetLightElevation ( float elevation ) ;
/**
* <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ <EFBFBD> <EFBFBD>
*/
float GetLightIntensity ( ) const ;
/**
* <EFBFBD> <EFBFBD> <EFBFBD> û <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ <EFBFBD> <EFBFBD>
*/
void SetLightIntensity ( float intensity ) ;
/**
* <EFBFBD> <EFBFBD> ȡ z <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
float GetZScaleFactor ( ) const ;
/**
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> z <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void SetZScaleFactor ( double factor ) ;
public :
BOOL CutOut ( CCurveEx * pCurve ) ; //<2F> <> <EFBFBD> ñ<EFBFBD> <C3B1> <EFBFBD>
BOOL CutIn ( CCurveEx * pCurve ) ; //<2F> <> <EFBFBD> ñ<EFBFBD> <C3B1> <EFBFBD>
int CutSectionDfg ( CCurveEx & split , CDimension2D & outDfg ) ; //<2F> <> <EFBFBD> <EFBFBD> split<69> <74> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 棨<EFBFBD> <E6A3A8> <EFBFBD> <EFBFBD> Ϊһ <CEAA> <D2BB> ά<EFBFBD> <CEAC> <EFBFBD> 棩
int CutSlice ( CDimension2D & outDfg , double zValue ) ; //<2F> <> <EFBFBD> <EFBFBD> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> Zֵ<5A> е <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EEA3A9> Ƭ
CString GetName ( void ) ;
void SetName ( LPCTSTR lpszName ) ;
void EnableUpdateRuler ( BOOL bDraw ) ;
void EnableDrawRuler ( BOOL bDraw ) ;
BOOL IsSerializeRuler ( void ) ;
BOOL IsDrawRuler ( void ) ;
BOOL IsUpdateRuler ( void ) ;
CRect8 GetRulerRange ( void ) ;
CMeshPackage * GetPackage ( ) ;
void InitMeshBaseType ( ) ;
DWORD GetMeshType ( void ) ;
void SetMeshType ( DWORD nType ) ;
void SetMeshFunction ( DWORD nFunType ) ;
DWORD GetMeshFunction ( void ) ;
CDimension3D * FunToDfg ( CFunction2D * pfun ) ;
BOOL EncryptGrid ( CDimension3D * pInDfg , CDimension3D * pOutDfg , int times ) ;
static BOOL GetSaveAsFileName ( CString & strePathName , LPCTSTR lpExt ) ;
CImageInsert * GetImage ( ) { return this - > m_pImage . get ( ) ; }
public :
long m_nTimes ; //<2F> <> <EFBFBD> ܴ<EFBFBD> <DCB4> <EFBFBD>
long m_FunctionSelect ; //û<> <C3BB> ʹ <EFBFBD> <CAB9> ,<2C> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ժ<EFBFBD> <D4BA> <EFBFBD> չ<EFBFBD> <D5B9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
CString m_name ;
int m_nFxyIndexZ ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ά<EFBFBD> <CEAC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> ƽ <EFBFBD> <C6BD> <EFBFBD> ϵ<EFBFBD> Z<EFBFBD> <5A> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȱʡΪ0
DWORD m_nFlags ; //<2F> Ƿ<EFBFBD> <EFBFBD> <CDB8> <EFBFBD> <EFBFBD> ʾ ....
COLORREF m_colTransparent ; //<> <CDB8> ɫ, <> <CDB8> <EFBFBD> ȣ <EFBFBD> <EFBFBD> <CDB8> 0-255<35> <35> <EFBFBD> <CDB8> <EFBFBD> <EFBFBD>
CString m_FileName ;
bool IsPropertyChanged ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD>
CxImage m_imgCapture ; // ͻ<> <CDBB> <EFBFBD> <EFBFBD> ʸ<EFBFBD> <CAB8> ͼ <20> <> <EFBFBD> <EFBFBD> pdf gdbx
public :
CDimension3D * GetDfg ( void ) ;
void SetTransparentColor ( COLORREF col ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <CDB8> ɫ
COLORREF GetTransparentColor ( void ) ;
BOOL IsTransparent ( void ) ; //<2F> Ƿ<EFBFBD> <EFBFBD> <CDB8> <EFBFBD> <EFBFBD> ʾ
void SetTransparentMode ( DWORD nMode ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <CDB8> ģʽ
DWORD GetTransparentMode ( void ) ; //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <CDB8> ģʽ
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void MakePackages ( vector < CCurveEx * > * pFaults ) ;
void RecreatPackages ( vector < CCurveEx * > * pFaults , BOOL force ) ;
bool SetAlpha ( BYTE level ) ;
void RemoveAlpha ( void ) ;
void CreateDfgPackage ( CCurveEx * pCurve , vector < CCurveEx * > & packages
, std : : vector < CRect8 > & ranges , vector < COLORREF > & colors
, vector < double > & Zs ) ;
inline void CreatePackageCross2 ( CCrossList & list , CCurveEx * pCurveGrid
, dfPoint & pt1 , dfPoint & pt2 , dfPoint & pt3 , dfPoint & pt4
, std : : vector < COLORREF > & colors , vector < double > & dZs
, std : : vector < CCurveEx * > & packages , std : : vector < CRect8 > & ranges ) ;
inline void CreatePackageCross4 ( CCrossList & list , CCurveEx * pCurveGrid
, dfPoint & pt1 , dfPoint & pt2 , dfPoint & pt3 , dfPoint & pt4
, std : : vector < COLORREF > & colors , vector < double > & Zs
, std : : vector < CCurveEx * > & packages , vector < CRect8 > & ranges ) ;
void SetEnablePackage ( BOOL enable ) { EnablePackage = enable ; }
BOOL GetEnablePackage ( ) { return EnablePackage ; }
double CalculateAngle ( dfPoint & pt1 , dfPoint & pt2 ) ;
double CalculateAngle ( CCurveEx & curve ) ;
protected :
std : : unique_ptr < CImageInsert > m_pImage ;
CGrid * m_pMeshFun ; //<2F> <> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD> ʾ <EFBFBD> <CABE> <EFBFBD> 洦<EFBFBD> <E6B4A6> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ,CDimension3D* or CFunction2D*
CMeshPackage * m_pMeshPackage ; // <20> <> <EFBFBD> <EFBFBD>
BOOL EnablePackage = TRUE ;
protected :
CFunction2D * GetFun ( void ) ;
void ClearMeshFun ( void ) ;
virtual void ClearMesh ( void ) ;
// void SerializeDfg(CArchive& ar);
// void SerializeFxy(CArchive& ar);
void WriteDfg ( CFile & fw , const short & ver ) ;
void WriteFxy ( CFile & fw , const short & ver ) ;
void WriteFun ( CFile & fw , const short & ver ) ;
BOOL BeforeWrite ( LPCTSTR lpszExtStr ) ;
int Read3DMesh ( CString strPathName ) ;
int Read3DMesh ( CFile & fr ) ;
void Write3DMesh ( CFile & fw , int times , const short & ver ) ;
//<2F> <> ȡ<EFBFBD> ڴ洮<DAB4> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD>
int ReadBuffer ( BYTE * pDataBuffer , DWORD nDataLen , CString & strType ) ;
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ļ<EFBFBD> д<EFBFBD> 뵽һ <EBB5BD> <D2BB> <EFBFBD> ڴ洮<DAB4> <E6B4AE>
int GetFileBuffer ( BYTE * * ppBuffer , DWORD & nBufSize , CString & strType ) ;
int ReadDfg ( CString strDfgPathName ) ;
int ReadFxy ( CString strFxyPathName ) ;
void DfgToBitmap ( CImageBase & image , CColorBase & color , int times , int selPlane ) ;
void DfgToBitmap ( CImageBase & image , CColorBase & color , int times , long bnumx , long bnumy , long enumx , long enumy ) ;
void FunToBitmap ( CImageBase & image , CColorBase & color , int times , long bnumx , long bnumy , long enumx , long enumy ) ;
void MeshFunction ( CDimension3D * pSourceDim , CDimension3D * pDestDim , long nFunSel ) ;
void MeshFunction ( CFunction2D * pSourceDim , CFunction2D * pDestDim , long nFunSel ) ;
double GetZ ( CDimension3D * pDim , long i , long j , long nFunSel ) ;
double GetZ ( CFunction2D * pDim , long i , long j , long nFunSel ) ;
inline int GetZ ( vector < dfPoint > pts , CCurveEx & area , double & zValue ) ;
inline COLORREF GetZColor ( double & z ) ;
CString GetDfgFileName ( CString strSourcePathName , CString ext ) ;
void SetValueDfg ( CPtrList & curveList , double z0 , BOOL bRangeOut ) ;
/** @brief <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> <EFBFBD> ⲿ(<28> <> bRangeOut<75> <74> <EFBFBD> <EFBFBD> )<29> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> Ϊz0 */
void SetValueFun ( CPtrList & curveList , double z0 , BOOL bRangeOut ) ;
BOOL CutOutDfg ( CCurveEx * pCurve ) ; //<2F> <> <EFBFBD> ñ<EFBFBD> <C3B1> <EFBFBD>
/** @brief <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⲿ<EFBFBD> <E2B2BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȳü<C8B2> <C3BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٽ<EFBFBD> <D9BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㸳<EFBFBD> <E3B8B3> */
BOOL CutOutFun ( CCurveEx * pCurve ) ;
/** @brief <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> <EFBFBD> <EFBFBD> wcw*/
BOOL CutInFun ( CCurveEx * pCurve ) ;
int GeologicalSectionDfg ( CCurveEx & split , CCurveEx & section ) ; //<2F> <> <EFBFBD> <EFBFBD> split<69> <74> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
int GeologicalSectionFun ( CCurveEx & split , CCurveEx & section ) ; //<2F> <> <EFBFBD> <EFBFBD> split<69> <74> <EFBFBD> <EFBFBD> <EFBFBD> е <EFBFBD> <D0B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
public :
// <20> ж<EFBFBD> <D0B6> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> ͻ<EFBFBD> <CDBB> <EFBFBD> <EFBFBD> ɫ<EFBFBD> <C9AB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> ʸ<EFBFBD> <CAB8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
BOOL NeedVectorDraw ( ) ;
// ʸ<> <CAB8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ<EFBFBD> <CDBC> <EFBFBD> <EFBFBD>
void DrawVectorContours ( CDC * pDC , void * pXyDc ) ;
/******************************************************<2A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> *************************************************/
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void SetFaciesType ( bool state ) ;
// <20> <> ȡ<EFBFBD> <C8A1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool GetFaciesType ( ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ദ<EFBFBD> <E0B4A6> <20> <> <EFBFBD> <EFBFBD> ƽ <EFBFBD> <C6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
void DrawSmoothFill ( CDC * pDC , void * pXyDc ) ;
/*******************************************************************************************************/
private :
// <20> <> ɫ<EFBFBD> <C9AB> <EFBFBD> Բ<EFBFBD> ֵ
COLORREF InterpolateColor ( COLORREF c1 , COLORREF c2 , double ratio ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㣺<EFBFBD> <E3A3BA> <EFBFBD> Բ<EFBFBD> ֵ
inline double GetInterpT ( double v1 , double v2 , double threshold ) ;
// contourf<72> <66> <EFBFBD> <EFBFBD>
void DrawIsoRegion ( CDC * pDC , void * pXyDc , CDimension3D * pDfg , int nIndexZ , double threshold , COLORREF color , double nextThreshold , int step ) ;
/******************************************************<2A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> *************************************************/
//<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool m_faciesType = false ;
/*******************************************************************************************************/
private :
/** @brief <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> ⲿ<EFBFBD> <E2B2BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊz0*/
void SetValueFunOutside ( CFunction2D * pf , CPtrList & curveList , double z0 ) ;
/** @brief <20> жϵ<D0B6> <CFB5> Ƿ<EFBFBD> <C7B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߵ <EFBFBD> <DFB5> ⲿ*/
BOOL IsPtOutside ( double x0 , double y0 , CPtrList & curveList ) ;
/** @brief <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <DFBC> ڲ<EFBFBD> <DAB2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> Ϊz0*/
void SetValueFunInside ( CFunction2D * pf , CPtrList & curveList , double z0 ) ;
/** @brief <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ<EFBFBD> <DAB2> <EFBFBD> Χ <EFBFBD> <CEA7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ<EFBFBD> <D6B5> <EFBFBD> <EFBFBD> Ϊz0*/
void SetValueCurveInside ( CFunction2D * pf , CCurveEx * pCurve , double z0 ) ;
double zero = 1e-30 ;
bool isEdited = true ;
// <20> <> <EFBFBD> ù<EFBFBD> <C3B9> <EFBFBD> Ч<EFBFBD> <D0A7>
bool m_isLightingEnabled = false ;
// <20> <> <EFBFBD> <EFBFBD> ˮƽ <CBAE> <C6BD> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ<EFBFBD>
float m_lightAzimuth = 127.0f ;
// <20> <> <EFBFBD> ߴ <EFBFBD> ֱ<EFBFBD> <D6B1> <EFBFBD> <EFBFBD> <EFBFBD> Ƕ<EFBFBD>
float m_lightElevation = 50.0f ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ǿ<EFBFBD> <C7BF>
float m_lightIntensity = 0.1f ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> z <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
float m_zScaleFactor = 1.0f ;
int64_t m_id = - 1 ;
public :
virtual int ReadPCG ( void * pxp , const short & ver ) ;
virtual int ReadPCG2 ( void * pxp , const short & ver ) ;
} ;