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.

130 lines
3.4 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件: DFDraw补充绘图元素接口类
//主要功能:
//
//程序编写: 2005-12-07
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include ".\fmnfrommapping.h"
class CSectionBase;
class AFX_EXT_CLASS CDrawExchange
{
public:
CDrawExchange(void);
virtual ~CDrawExchange(void);
int CreateDrawExchange(CString name,CString m_3dv);
int CreateDrawExchangeMapping(CString sfx,CString sfy);
virtual void Initialize(void);
virtual void* SetDrawExchange(int IsDepth);
virtual double V(double x, double y, double t);
virtual double Exchange(double& x, double& y); //y=time
virtual BOOL IsCanExchange(void);
virtual BOOL IsDrawExchange();
virtual void Clear(void);
double Exchange(double& m, double& n, double &t); //返回时t为深度
double DrawExchange(double &x,double &y);
BOOL IsX(void);
BOOL IsY(void);
BOOL IsAny(void);
//速度场是否是XY方式的
BOOL IsExchangeWidthXY(void)
{
return pDrawExchangeMapping==NULL ? FALSE:TRUE;
}
int GetLineSel(void);
void SetLineSel(int nXYorAny); //0是Y线1是X线2是任意线
void GetMN(double& x, double& y);
void SetLineName(int nLineName); //设置三维工区的线名DrawExchangeXY
void SetLineName(CString lpszLineName); //根据测线名称设置DrawExchangeXY与m_nLineSelect
void SetSection(CSectionBase* pSection);
CSectionBase* GetSection(void);
//输入的x为CDP号y为深度值返回时y为时间函数返回速度值
double ExchangeToTime(double& x, double& y);
void* GetExchangeToTime(void);
BOOL CreateExchangeToTime(int numx, int numy, double* cdp);
//BEGIN 以下仅是为了层拉平
CCurve* m_pDragCurve; //根据该曲线拉平指定的曲线
double d0; //拉平到该值
void ToDragFlat(CCurve* pCurve);
void SetDragCurve(CCurve* pCurve, double bd);
double GetOffsetOfDragFlat(double x0);
BOOL IsDragFlat(void);
//END
protected:
double DrawExchangeWidthMN(double &m,double &n,double &t);
double DrawExchangeWidthXY(double &m,double &n,double &t);
protected:
CSectionBase *pSectionBase;
CDimension3D *pDrawExchange3D;
CDimension3D *pDrawExchange3DOld;
CFmnFromMapping* pDrawExchangeMapping;
void* pExchangeToTime; //根据CDPH插值速度V,深度域解释时用来转换为时间
int m_nLineSelect; //0是Y线1是X线2是任意线
double DrawExchangeXY;
CFileMapping MappingFxy;
int m_nSel; //-1为缺省方式三维0为时深曲线方式1为二维测线方式
};
class AFX_EXT_CLASS CDrawExchangeCurve : public CDrawExchange
{
public:
CDrawExchangeCurve(void);
virtual ~CDrawExchangeCurve(void);
virtual void Clear(void);
public:
virtual void Initialize(void);
virtual void* SetDrawExchange(int IsDepth);
virtual double Exchange(double& x, double& y);
virtual BOOL IsCanExchange(void);
virtual BOOL IsDrawExchange();
int CreateDrawExchangeCurve(CString tv_curve_file);
double DrawExchangeWidthCurve(double& x, double& y);
BOOL IsCurveExchange(void);
protected:
//时速曲线变换方式
CCurve* m_pCurve, *m_pCurveOld;
};
class AFX_EXT_CLASS CDrawExchange2D : public CDrawExchangeCurve
{
public:
CDrawExchange2D(void);
virtual ~CDrawExchange2D(void);
virtual double Exchange(double& x, double& y); //x为CDP号y为时间
virtual BOOL IsDrawExchange();
void SetCurve2D(CCurve* pCurve);
BOOL IsExchange2D(void);
int SetCurve2D(CString strCurveFile);
protected:
double m_prevCDP;
double m_prevX;
double m_prevY;
};
//CDrawExchange2D* GetDrawExchange(void);
//double DrawExchangeToDepth(double &x,double &y);