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.
kev/Drawer/SSBase/WellPoleLib/InclinedWellPole.h

131 lines
3.9 KiB
C

1 month ago
#pragma once
#include "WellPole.h"
// б<><D0B1><EFBFBD><EFBFBD>
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷʱ,<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>תDC<EFBFBD><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_HeadLineAngle<EFBFBD>ĽǶ<EFBFBD><EFBFBD><EFBFBD>ת ggff,(Ŀǰ<EFBFBD><EFBFBD>ת<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>)
*/
class AFX_EXT_CLASS ComputMiniCurvatureTrace //<2F><>С<EFBFBD><D0A1><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD>
{
public:
ComputMiniCurvatureTrace();
virtual ~ComputMiniCurvatureTrace();
void ComputeMiniCurveture(CList<Struct_InclinedWell, Struct_InclinedWell> &wellTraceList);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GetZbOffset(CList<Struct_InclinedWell, Struct_InclinedWell>& wellTraceList, double dep, double& x, double& y); //<2F><><EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8>ݾ<EFBFBD><DDBE><EFBFBD>ó<EFBFBD><C3B3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
protected:
void ComputeProjection(double k,
double x3, double y3,
double &x4, double &y4); //<2F><><EFBFBD><EFBFBD>ͶӰ<CDB6><D3B0><EFBFBD><EFBFBD>
};
class CInclinedTrack;
class AFX_EXT_CLASS CInclinedWellPole : public CWellPole
{
protected:
//DECLARE_SERIAL(CInclinedWellPole);
public:
CInclinedWellPole();
CInclinedWellPole(const CRect8& position);
virtual ~CInclinedWellPole();
//<2F><>¡<EFBFBD><C2A1><EFBFBD><EFBFBD><E9BAAF>
virtual void* CloneElement(void);
//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
virtual void MoveTo(CRect8& position);
virtual void MoveHandleTo(int nHandle, CPoint2D point);
virtual void MoveChildren();//<2F>ƶ<EFBFBD><C6B6>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
virtual void Serialize(CArchive& ar, const short &ver);
//<2F><><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
void SetLevelProportion(double p) { m_level_proportion = p; }
//<2F><><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
double GetLevelProportion(void) { return m_level_proportion; }
virtual void ComputeTrajectory(void);
protected:
public:
//<2F><>д<EFBFBD><D0B4>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Χ
//virtual void GetRange(CRect8& range);
// <20><><EFBFBD>ƾ<EFBFBD>ͷ
virtual void DrawWellHead(CXyDC* pDC);
//<2F><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><EFBFBD>߿<EFBFBD>
virtual void DrawWellBodyLine(CXyDC* pDC);
virtual void DrawWellBody(CXyDC* pDC);
// <20><><EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD><ECBCA3><EFBFBD><EFBFBD>
virtual void DrawTrajectory(CXyDC* pDC);
virtual void Draw(CXyDC* pDC);
//<2F><><EFBFBD><EFBFBD><E3BEAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
virtual void CalculateSize(CPoint2D point);
// <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>б<EFBFBD><D0B1><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĺ켣(<28>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮƽλ<C6BD><CEBB>)
void ComputeTrajectory(double dep, double &vdep, double &level);
//void ComputeTraceArrange(double dep, double &vdep, double &level);
//void ComputeTraceArrange(void);
void ComputePolyLeftandRight(CPoint2D pt1, CPoint2D pt2, CPoint2D& leftpt, CPoint2D& rightpt, double width, double precent);
//void SortTrack(CTrackObj* pTheMovingTrackObj);
//void SortTrack(CArray<Struct_TrackSort, Struct_TrackSort> &arrayTrackSort);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>Ⱥͽ<C8BA><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>,<2C><>m_topDepV, m_topLevel;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ComputeTrace<63><65><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2015-9-16
void ComputeTopDepAndLevel(void);
//virtual BOOL RemoveSelection();
double LevelToScreenCX(double dLevel /* ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>m */);
double ScreenCXToLevel(double dCX);
//<2F><><EFBFBD><EFBFBD>ͶӰ<CDB6>Ƕ<EFBFBD><><D6B5><EFBFBD><EFBFBD>0-360<36><30>
void SetProjectionAngle(double dDegree);
//<2F><>ȡ<EFBFBD><C8A1>ǰͶӰ<CDB6>Ƕ<EFBFBD>
double GetProjectionAngle(void) { return m_dProjectionAngle; }
CCurveEx* GetTrajectoryDisplayCurve() { return &m_trajectoryCurve; }
virtual void GetFrameCurve(std::vector<CPoint2D>& curvePts);//ggff
virtual BOOL IsInRange(CRect8& range);//ggff
virtual CPoint2D ReCalculatePoint(CPoint2D point);
virtual void GetRange(CRect8& range);
void GetTracksFromOtherWell(CWellPole *pWellObj); //<2F><>һ<EFBFBD>ھ<EFBFBD><DABE>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĵ<D0B5>,<2C><><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD>Ĺ켣<C4B9><ECBCA3><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD>Ǹ<EFBFBD><C7B8>Ƶ<EFBFBD>,<2C>Ǵ<EFBFBD>ԭ<EFBFBD><D4AD>ֱ<EFBFBD><D6B1>ժ<EFBFBD><D5AA><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>)
protected:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EEA3AC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><E3B4A6>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʱƽ<CAB1><C6BD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵʧ<D6B5>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>false 2015-9-16
bool InterpolateDepVandLevel(double dep, double& depV, double& level);
// <20>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>ˮƽλ<C6BD>ƣ<EFBFBD><C6A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ComputeDisplayTrajectory();
void GetInclinedWellRange(CRect8 &range, vector<CInclinedTrack*>& trackVec); //<2F>õ<EFBFBD>б<EFBFBD><D0B1><EFBFBD>ķ<EFBFBD>Χ
double m_dProjectionAngle; //ͶӰ<CDB6>Ƕȣ<C7B6>[0,360)<29><>
CCurveEx m_trajectoryCurve; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƶľ<C6B5><C4BE><EFBFBD><ECBCA3><EFBFBD><EFBFBD>
public:
GDFLOGPENEXT m_penTrajectory; //<2F><EFBFBD>߱<EFBFBD>
double m_topDepV; //<2F><><EFBFBD>ڶ<EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
double m_topLevel; //<2F><EFBFBD>ڵ<EFBFBD>ˮƽλ<C6BD><CEBB>
int m_nTraceTrackNum; //<2F><EFBFBD><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ETrackType m_traceTrackType; //<2F><EFBFBD><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ETrackBorder m_traceTrackBorder; //<2F><EFBFBD><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>
};