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.

88 lines
3.6 KiB
C

1 month ago
#pragma once
#include "DrawModel/Point2D.h"
#include "TrackObj.h"
//б<><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CInclinedTrack : public CTrackObj
{
protected:
//DECLARE_SERIAL(CInclinedTrack);
public:
CInclinedTrack();
CInclinedTrack(const CRect8& position);
virtual ~CInclinedTrack();
protected:
virtual void Init(); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
CCurveEx m_trajectoryLeft; //<2F><><EFBFBD><EFBFBD><EFBFBD>
CCurveEx m_trajectoryRight; //<2F><><EFBFBD>ҹ켣
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ߽<D2B1><DFBD><EFBFBD>
bool GetBorderPoint(double inc_depth, CPoint2D& ptLeft, CPoint2D& ptRight);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>s_depth<74><68>e_depth <20><>ȡ<EFBFBD>߽<EFBFBD>ɢ<EFBFBD><C9A2> bLeftBorder trueΪ<65><CEAA><EFBFBD>߽<EFBFBD> falseΪ<65>ұ߽<D2B1>
bool GetBorderPoints(double s_depth, double e_depth, vector<dfPoint>& pts, bool bLeftBorder);
bool GetTrajLocation(void); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ҹ켣׮<ECBCA3><D7AE>
//<2F><>׮<EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ҵ<EFBFBD><D2B5>߽<EFBFBD><DFBD>ϵĵ<CFB5>
bool GetTrajPoint(double lratio, int& leftStart, int& rightStart, CPoint2D& ptLeft, CPoint2D& ptRight);
// <20>ɸ<EFBFBD><C9B8><EFBFBD>׮<EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD>ijһ<C4B3>Σ<EFBFBD><CEA3>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ߽<D3B1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ,widthRatioΪ<6F>öο<C3B6><CEBF><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>=1<><31><EFBFBD>ұ߽<D2B1>ֱ<EFBFBD>Ӵӵ<D3B4><D3B5>ұ߽<D2B1><DFBD><EFBFBD>ȡ
bool GetCalcBorderSection(double ratio_start, double ratio_end, vector<dfPoint>& leftBorder, vector<dfPoint>& rightBorder, double widthRatio = 1);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>׮<EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>е<EFBFBD>׮<EFBFBD>ţ<EFBFBD>factor Ϊ<><CEAA><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
int GetLocations(CCurve& curve, double lstart, double lend, list<double>& lstLocs, double factor = 1);
// <20>ɸ<EFBFBD><C9B8><EFBFBD>׮<EFBFBD>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>ȡ<EFBFBD><C8A1><EFBFBD>߶<EFBFBD><DFB6>ϵĵ㣬<C4B5><E3A3AC><EFBFBD><EFBFBD>vector<dfPoint><3E><>
bool GetSubCurvePoints(CCurve& scrCurve, double ratio_start, double ratio_end, vector<dfPoint>& vecPoints);
//<2F><><EFBFBD><EFBFBD>׮<EFBFBD>źͺ<C5BA><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>ij<EFBFBD><C4B3> 2015-11-18
static bool GetPoint(CCurve& leftCurve, CCurve& rightCurve, double ll, double lr, double wratio, CPoint2D& destPt);
// Implementation
public:
virtual BOOL IsInRange(CRect8& range);//ggff
virtual void CalculateSize(CPoint2D point);
virtual void ComputeDisplayTrajectory(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void CalculateLeftBorder(CCurve* pIncurve, double dist); //<2F>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD>߽<EFBFBD>
virtual void CalculateRightBorder(CCurve* pIncurve, double dist); //<2F>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ;<DFBA><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>ұ߽<D2B1>
virtual void DrawTrajectory(CXyDC* pDC);
//virtual void DrawTrackHeadLine(CXyDC* pDC, BOOL bFirst=FALSE); //ggff
//virtual void DrawTrackHead(CXyDC*pDC); //ggff
virtual void MoveTo(CRect8& position);
virtual void MoveHandleTo(int nHandle, CPoint2D point);
virtual BOOL Intersects(const CRect8& rect, double dHandleSize);
virtual void Serialize(CArchive& ar, const short &ver);
virtual void Draw(CXyDC* pDC);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void DrawFill(CXyDC* pDC);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD>
virtual void CalcBorders();
//<2F><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ߽<D2B1>
CCurveEx m_calcBorderLeft;
CCurveEx m_calcBorderRight;
protected: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>CCurve<76>Ľ<EFBFBD><C4BD><EFBFBD>,startIndexΪ<78><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD>false
bool GetCrossPoint(double a, double b, double x0, double y0, CCurve& pCur, int& startIndex, CPoint3D& cpt, double max_dist2);
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD> m_verticalPoints<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pSub<75>ϣ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>pOrigһһ<D2BB><D2BB>Ӧ
void CreateNewCurve(CCurve& newCur);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>׮<EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>vec
void CreateSubNewCurve(int& startIndex, dfPoint& pt1, dfPoint& pt2, vector<CPoint3D>& newPts);
//<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD>׮<EFBFBD><D7AE>
double DepthToLocation(double dep);
double DepthToLocation(double dep, double locdepFactor);
//<2F><>ȡ<EFBFBD><C8A1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķָ<C4B7><D6B8><EFBFBD><EFBFBD><EFBFBD>
bool CreateSliptterline(CCurve& destCurve, double ratio);
//<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ߽磬<DFBD><E7A3AC><EFBFBD><EFBFBD><EFBFBD>߾<EFBFBD><DFBE><EFBFBD><EFBFBD><EFBFBD>ͬ׮<CDAC><D7AE>
CCurveEx* m_pOrigBorder; //<2F><>׼<EFBFBD>߽<EFBFBD>
CCurveEx* m_pSubjBorder; //<2F>Բ<EFBFBD><D4B2>߽<EFBFBD>
vector<dfPoint> m_verticalPoints; //<2F><>׼<EFBFBD>߽<EFBFBD><DFBD>ڶԲ<DAB6><D4B2>߽<EFBFBD><DFBD>϶<EFBFBD>Ӧ<EFBFBD><D3A6>ֱ<EFBFBD><D6B1>CPoint3D <20>洢 x,y,lsub, lorig
vector<CPoint2D> m_CurveRightPtVec, m_CurveLeftPtVec; //<2F><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ұ߽<D2B1><DFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>״ͼʱ<CDBC><CAB1><EFBFBD>á<EFBFBD>
};