PlotterHMI/datafile/dxf/dxflib/PDSMath/PDSMath.h

2706 lines
92 KiB
C
Raw Normal View History

// PDSMath.h
#if !defined(PDSMath_h)
#define PDSMath_h
#include <math.h>
#include <afxwin.h>
#include <afxtempl.h>
#define CONST_PI 3.14159265359
#define DBL_MIN 2.2250738585072014e-308
#define DBL_MAX 1.7976931348623158e+308
#define RPG_PT_GNCP 0 //<2F>˵<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB>ߵ<EFBFBD>)
#define RPG_PT_NGCP 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>
#define RPG_PT_NGNCP 2 //ֱ<>ߵ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB>ߵ<EFBFBD>)
#define RPG_PT_GCP 3 //<2F><><EFBFBD><EFBFBD>ߵ<EFBFBD>
#define RPG_PT_GP 64 //<2F><><EFBFBD><EFBFBD>ֵ
#define RPG_PT_INSPT 100 //<2F><>ֵ<EFBFBD><D6B5>
#define RPG_PT_SEAM 128 //<2F>ݷ<EFBFBD><DDB7><EFBFBD>
#define RPG_PT_NODEF -1 //<2F>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD>
#define CONST_MAXDISTANCE 0.05 //<2F><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5><><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>λ:mm. <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>ϵͳ<CFB5>еķֱ<C4B7><D6B1><EFBFBD>Ϊ40,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сȡֵ0.05mm
#define F_MAX_TANGENT_ERROR 0.1 //20131015 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>λ:mm
#define CONST_SAME_POINT_ERROR 5 // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,ϵͳ<CFB5>ڲ<EFBFBD><DAB2><EFBFBD>λ,<2C><><EFBFBD><EFBFBD><=<3D><>ֵ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>Ϊ<EFBFBD><CEAA>ͬһ<CDAC><D2BB>
// [20170830 syf]<5D><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ݽṹ֧<E1B9B9>ֹ<EFBFBD>ʽ<EFBFBD><CABD>,<2C><><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>ϵĵ<CFB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹú궨<C3BA><EAB6A8><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ķdz<C4B7><C7B3><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>,<2C><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>,
// <20><><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>ϻ<EFBFBD>ȡij<C8A1><EFBFBD><E3B4A6>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʱ,һ<><D2BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>dz<EFBFBD><C7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ĵ<CDB5>,<2C><><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ʹ<><CAB9><EFBFBD>߿ɸ<DFBF><C9B8><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
class CTypePoint : public CObject
{
public:
CPoint m_ptPoint;
int m_iType;
CTypePoint();
CTypePoint(CTypePoint &a);
CTypePoint(CPoint ptPoint,int iType);
~CTypePoint();
void operator=(const CTypePoint &a);
BOOL operator==(CTypePoint& a);
BOOL operator!=(CTypePoint& a);
};
class CTypePointListArray; // <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>͵ĵ<CDB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CTypePointList : public CList<CTypePoint,CTypePoint>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CTypePointList& operator=(CTypePointList& rhs); //<2F><>ֵ
BOOL operator==(CTypePointList& rhs); //<2F>Ⱥ<EFBFBD>
BOOL operator!=(CTypePointList& rhs); //<2F><><EFBFBD>Ⱥ<EFBFBD>
CTypePoint& operator[](int iIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//<2F><><EFBFBD>²<EFBFBD><C2B2>Ҷ<EFBFBD><D2B6>Ǵ<EFBFBD>Head->GetNext->Tail<69><6C><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
int FindIndexOfTypePoint(CTypePoint TypePoint);
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
POSITION FindPositionOfPoint(CPoint ptPoint);
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
int FindIndexOfPoint(CPoint ptPoint);
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
POSITION FindPositionOfType(int iType);
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
int FindIndexOfType(int iType);
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>this
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>,this<69>ij<EFBFBD><C4B3>ȵ<EFBFBD><C8B5><EFBFBD>listPoint,ÿ<><C3BF><EFBFBD><EFBFBD>һһ<D2BB><D2BB>Ӧ,<2C><><EFBFBD><EFBFBD>this<69><73>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>iType
void SetTypePointList(int iType, CList<CPoint,CPoint>& listPoint);
//<2F><>this<69>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>listPoint
void ExtractPointList(CList<CPoint,CPoint>& listPoint);
//<2F><>listPoint<6E><74><EFBFBD>õ<EFBFBD>this<69><73>m_ptPoint<6E><74>
void SetOnlyPointList(CList<CPoint,CPoint>& listPoint);
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD>this<69>ֶ<EFBFBD>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// (1)Ӧ<>þ<EFBFBD><C3BE><EFBFBD>,<2C>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ڸ<EFBFBD><DAB8>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><E3BDAB><EFBFBD>Ƶ<EFBFBD><C6B5>ֶ<EFBFBD>,iTypeʵ<65><CAB5><EFBFBD>ϱ<EFBFBD>ʾbGrade
// (2)alTypePoint[]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱣ֤<E1B1A3><D6A4>һ<EFBFBD><D2BB>
// (3)bClose=true,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iType,<2C><><EFBFBD><EFBFBD>alTypePointֻ<74><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>this
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// bClose =true <20>պ<EFBFBD>,ͷβ<CDB7><EFBFBD><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>,=false <20><><EFBFBD><EFBFBD>
// iType <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// alTypePoint <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>iType<70>ĵ<EFBFBD><C4B5><EFBFBD>Ҫ<EFBFBD><D2AA>Ϊ<EFBFBD>öν<C3B6><CEBD><EFBFBD>
void DivideTypePointListEqualType(BOOL bClose, int iType, CTypePointListArray& alTypePoint);
//ֻҪ<D6BB><D2AA><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ͽ<EFBFBD><CDBD>зֶ<D0B7>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// (1)Ӧ<>þ<EFBFBD><C3BE><EFBFBD>,<2C>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ڸ<EFBFBD><DAB8>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD>ʵ<EFBFBD>ʵķֶ<C4B7>,m_iTypeʵ<65><CAB5><EFBFBD>ϱ<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ָ<EFBFBD><D6B8>
// (2)<29><><EFBFBD><EFBFBD><EFBFBD>ֶι<D6B6><CEB9><EFBFBD>,ÿһ<C3BF>ε<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>м<EFBFBD><D0BC>ĵ<EFBFBD>û<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (3)alTypePoint[]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱣ֤<E1B1A3><D6A4>һ<EFBFBD><D2BB>
// (4)bClose=true,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_iType<70><65>Ϊ0,<2C><><EFBFBD><EFBFBD>alTypePointֻ<74><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>this
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// bClose =true <20>պ<EFBFBD>,ͷβ<CDB7><EFBFBD><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>,=false <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// alTypePoint <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>bClose=true,<2C><>ôÿ<C3B4>ε<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>m_iType<70><65><EFBFBD><EFBFBD>Ϊ0
void DivideTypePointListWhenTypeNoZero(BOOL bClose, CTypePointListArray& alTypePoint);
//<2F><><EFBFBD><EFBFBD>m_iType<70><65><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// (1)Ӧ<>þ<EFBFBD><C3BE><EFBFBD>,m_ptPoint<6E><74>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>,m_iType<70><65>ʾ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>(<28><><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>),<2C><>ô,Sort֮<74><D6AE><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// bSmallToLarge =true <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>,=false <20>Ӵ<EFBFBD><D3B4><EFBFBD>С
void SortByType(BOOL bSmallToLarge = TRUE);
void MakeReverse(); //<2F><>this<69><73><EFBFBD><EFBFBD>
POSITION FindPositionOfSmallestType(void); //<2F><><EFBFBD><EFBFBD>m_iType<70><65>С<EFBFBD><D0A1><EFBFBD>Ǹ<EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>λ<EFBFBD><CEBB>
int FindIndexOfSmallestType(void); // <20><><EFBFBD><EFBFBD>m_iType<70><65>С<EFBFBD><D0A1><EFBFBD>Ǹ<EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ֵ
POSITION FindPositionOfLargestType(void); //<2F><><EFBFBD><EFBFBD>m_iType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>λ<EFBFBD><CEBB>
int FindIndexOfLargestType(void); // <20><><EFBFBD><EFBFBD>m_iType<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dMaxError <20>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// iInsertType <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>m_iTypeֵ
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>this<69><73>(<28><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>this<69><73>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>this<69><73><EFBFBD><EFBFBD>),=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B2BB>this<69><73>
BOOL InsertPointAtPolyline(CPoint ptPoint, double dMaxError, int iInsertType = 0);
//<2F>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dMaxError <20>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// iInsertType <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>m_iTypeֵ
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>this<69><73>(<28><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>this<69><73>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>this<69><73><EFBFBD><EFBFBD>),=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B2BB>this<69><73>
BOOL InsertPointAtPolygon(CPoint ptPoint, double dMaxError, int iInsertType = 0);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPoint FindNearestPoint(CPoint ptPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B2A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPoint FindNearestPoint(CPoint ptPoint, int& nDistance);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL FindNearestPoint(CPoint ptPoint, double dMaxError, CPoint& ptOutput);
};
//<2F><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CTypePointListArray : public CArray<CTypePointList,CTypePointList&>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CTypePointListArray& operator=(CTypePointListArray& rhs); //<2F><>ֵ
};
class CRPGrade_Point : public CObject {
public:
CPoint m_ptPoint;
int m_nType;
long n_SerNo;
public:
CRPGrade_Point();
CRPGrade_Point(CRPGrade_Point &a);
CRPGrade_Point(CPoint ptPoint,int nType,long nSerNo);
CRPGrade_Point(CPoint ptPoint,int nType);
~CRPGrade_Point();
void operator=(CRPGrade_Point &a);
};
class CRotateMove : public CObject {
public:
double m_dAngle; //<2F><>ת<EFBFBD>ĽǶ<C4BD>
double m_dSin,m_dCos; //<2F><>ת<EFBFBD>ĽǶ<C4BD><C7B6><EFBFBD>,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>˱<EFBFBD><CBB1><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>˲<EFBFBD><CBB2>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
CPoint m_ptPointO; //<2F><>תԭ<D7AA><D4AD>
CPoint m_ptOffset; //ƫ<><C6AB><EFBFBD><EFBFBD>
public:
CRotateMove();
CRotateMove(CRotateMove& rhs);
CRotateMove(double dAngle,CPoint ptPointO,CPoint ptOffset);
~CRotateMove();
void operator=(CRotateMove &a);
void Initial();
};
class CRotateMoveList : public CList<CRotateMove,CRotateMove>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CRotateMoveList& operator=(CRotateMoveList& rhs); //<2F><>ֵ
CRotateMove& operator[](int iIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
};
class CDBLPoint : public CObject {
public:
double x,y;
public:
CDBLPoint();
CDBLPoint(double x1,double y1);
CDBLPoint(CDBLPoint &a);
~CDBLPoint();
void operator=(CDBLPoint &a);
BOOL operator==(CDBLPoint &a);
//ʹ<><CAB9>ptPoint<6E><74><EFBFBD><EFBFBD>this
void SetPoint(CPoint ptPoint);
//<2F><><EFBFBD><EFBFBD>CPoint<6E><74>
CPoint GetPoint(void);
};
class CDBLPointList : public CList<CDBLPoint,CDBLPoint>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CDBLPointList& operator=(CDBLPointList& rhs); //<2F><>ֵ
CDBLPoint& operator[](int iIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
//ʹ<><CAB9>listPoint<6E><74><EFBFBD><EFBFBD>this
void SetPoint(CList<CPoint,CPoint>& listPoint);
//<2F><>this<69>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPoint
void GetPoint(CList<CPoint,CPoint>& listPoint);
};
class CDBLPointListArray : public CArray<CDBLPointList,CDBLPointList&>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CDBLPointListArray& operator=(CDBLPointListArray& rhs); //<2F><>ֵ
};
class C4PRgn : public CObject {
public:
CPoint m_ptLU,m_ptLD,m_ptRU,m_ptRD; //<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ʾʱռ<CAB1>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>m_ptLU<4C><55>m_ptRU<52><55>m_ptRD<52><44>m_ptLD<4C><44>m_ptLU
public:
C4PRgn();
C4PRgn(C4PRgn &a);
C4PRgn(CPoint ptLU,CPoint ptLD,CPoint ptRU,CPoint ptRD);
void operator=(C4PRgn &a);
BOOL operator==(C4PRgn& a);
};
//<2F>߶<EFBFBD>
class CLineSegment : public CObject
{
public:
CPoint m_ptPointS; // <20><><EFBFBD><EFBFBD>
CPoint m_ptPointE; // <20>յ<EFBFBD>
public:
CLineSegment();
CLineSegment(CPoint ptPointS, CPoint ptPointE);
CLineSegment(CLineSegment& rhs);
virtual ~CLineSegment();
CLineSegment& operator=(CLineSegment& rhs);
BOOL operator==(CLineSegment& rhs);
void Initial();
};
//<2F>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD>
class CLineSegmentList : public CList<CLineSegment,CLineSegment>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CLineSegmentList& operator=(CLineSegmentList& rhs); //<2F><>ֵ
CLineSegment& operator[](int iIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
};
//<2F>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CLineSegmentListArray : public CArray<CLineSegmentList,CLineSegmentList&>
{
public: //<2F><>չ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
public: //<2F><>չ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
CLineSegmentListArray& operator=(CLineSegmentListArray& rhs); //<2F><>ֵ
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// x
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntRound(double x);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (nPx,nPy)<29><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,(x,y)<29><>תԭ<D7AA><D4AD>,dSinBeta,dCosBeta<74><61>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD>Ƕȵ<C7B6><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (nPxNew,nPyNew)<29><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ֵ
void PointRotate(int nPx,int nPy,int x,int y,double dSinBeta,double dCosBeta,int& nPxNew,int& nPyNew);
void PointRotate(double dX,double dY,double dXO,double dYO,double dSinBeta,double dCosBeta,double& dXNew,double& dYNew);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint<6E><74><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,ptPointO<74><4F>תԭ<D7AA><D4AD>,dSinBeta,dCosBeta<74><61>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD>Ƕȵ<C7B6><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint<6E><74>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ֵ
void PointRotate(CPoint &ptPoint,CPoint ptPointO,double dSinBeta,double dCosBeta);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint1<74><31><EFBFBD><EFBFBD>ת<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>,ptPointO<74><4F>תԭ<D7AA><D4AD>,dSinBeta,dCosBeta<74><61>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD>Ƕȵ<C7B6><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2<74><32>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ֵ
void PointRotate(CList<CPoint,CPoint> &listPoint1,CPoint ptPointO,double dSinBeta,double dCosBeta,CList<CPoint,CPoint> &listPoint2);
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint1<74><31>ƽ<EFBFBD>Ƶĵ<C6B5><C4B5><EFBFBD>
// nDx,nDy XY<58><59><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2ƽ<32>ƺ<EFBFBD><C6BA><EFBFBD>ֵ
void PointMove(CList<CPoint,CPoint> &listPoint1,int nDx,int nDy,CList<CPoint,CPoint> &listPoint2);
//<2F><>ptPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dScale >1<>Ŵ<EFBFBD>,<1<><31>С
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>Ŵ<EFBFBD><C5B4><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ĵ<EFBFBD>
CPoint PointScale(CPoint ptPoint,double dScale);
//<2F><>ptPointOΪ<4F><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><E3A3AC>ptPoint<6E><74><EFBFBD><EFBFBD>dScale
CPoint PointScale(CPoint ptPoint,CPoint ptPointO,double dScale);
//<2F><>ptPointOΪ<4F><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><E3A3AC>ptPointO<74><4F>ptPoint1Ϊ<31><CEAA><EFBFBD>򣬽<EFBFBD>ptPoint<6E><74><EFBFBD><EFBFBD>dScale
CPoint PointScale(CPoint ptPoint,CPoint ptPointO,CPoint ptPoint1,double dScale);
//<2F>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptOffset ƽ<><C6BD><EFBFBD><EFBFBD>
// dScale <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA>ĵ<EFBFBD>
CPoint PointMoveScale(CPoint ptPoint,CPoint ptOffset,double dScale);
//20140603 <20>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptOrignalS תԲ<D7AA><D4B2>S
// ptOrignalE <20><>תԲ<D7AA><D4B2>E
// ptRotateS <20><>ת<EFBFBD><D7AA>S
// ptRotateE <20><>ת<EFBFBD><D7AA>E
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// ƽ<><C6BD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
CPoint PointMoveRotate(CPoint ptPoint, CPoint ptOrignalS, CPoint ptOrignalE, CPoint ptRotateS, CPoint ptRotateE);
//20140603 <20>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptOrignalS תԲ<D7AA><D4B2>S
// ptOrignalE <20><>תԲ<D7AA><D4B2>E
// ptRotateS <20><>ת<EFBFBD><D7AA>S
// ptRotateE <20><>ת<EFBFBD><D7AA>E
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listMoveRotatePointƽ<74><C6BD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
void PointMoveRotate(CList<CPoint, CPoint> &listPoint, CPoint ptOrignalS, CPoint ptOrignalE, CPoint ptRotateS, CPoint ptRotateE, CList<CPoint, CPoint> &listMoveRotatePoint);
//<2F><>һԪ<D2BB><D4AA><EFBFBD>η<EFBFBD><CEB7><EFBFBD>ax2+bx+c=0
//<2F><><EFBFBD><EFBFBD>ֵ:
// =0,<2C>޽<EFBFBD>
// =1,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>x1(x2=x1)
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x1,x2
// =3,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
int Quadratic(double a,double b,double c,double& x1,double& x2);
//<2F><>ֱ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ax+by+c=0<><30>ϵ<EFBFBD><CFB5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (x1,y1),(x2_y2) ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// a,b,c ֱ<>߷<EFBFBD><DFB7><EFBFBD>ax+by+c=0<><30>ϵ<EFBFBD><CFB5>
void LineEquationCoefficient(int x1,int y1,int x2,int y2,double& a,double& b,double& c);
void LineEquationCoefficient(double x1,double y1,double x2,double y2,double& a,double& b,double& c);
//<2F><>ֱ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>ax+by+c=0<><30>ϵ<EFBFBD><CFB5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1,ptPoint2 ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// a,b,c ֱ<>߷<EFBFBD><DFB7><EFBFBD>ax+by+c=0<><30>ϵ<EFBFBD><CFB5>
void LineEquationCoefficient(CPoint ptPoint1,CPoint ptPoint2,double& a,double& b,double& c);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a1,b1,c1 ֱ<><D6B1>a1*x+b1*y+c1=0
// a2,b2,c2 ֱ<><D6B1>a2*x+b2*y+c2=0
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (x,y) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C>н<EFBFBD><D0BD><EFBFBD>(x,y)
// =2,<2C><>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
int IntOfTwoLine(double a1,double b1,double c1,double a2,double b2,double c2,double& x,double& y);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a1,b1,c1 ֱ<><D6B1>a1*x+b1*y+c1=0
// a2,b2,c2 ֱ<><D6B1>a2*x+b2*y+c2=0
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nx,ny) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C>н<EFBFBD><D0BD><EFBFBD>(nx,ny)
// =2,<2C><>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
int IntOfTwoLine(double a1,double b1,double c1,double a2,double b2,double c2,int& nx,int& ny);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nXS1,nYS1),(nXE1,nYE1) ֱ<><D6B1>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
// (nXS2,nYS2),(nXE2,nYE2) ֱ<><D6B1>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nx,ny) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C>н<EFBFBD><D0BD><EFBFBD>(nx,ny)
// =2,<2C><>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
int IntOfTwoLine(int nXS1,int nYS1,int nXE1,int nYE1,int nXS2,int nYS2,int nXE2,int nYE2,int& nx,int& ny);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PointS1_PointE1 ֱ<><D6B1>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// PointS2_PointE2 ֱ<><D6B1>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C>н<EFBFBD><D0BD><EFBFBD>ptIntersection
// =2,<2C><>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
int IntOfTwoLine(POINT PointS1,POINT PointE1,POINT PointS2,POINT PointE2,POINT& ptIntersection);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nXS1,nYS1),(nXE1,nYE1) ֱ<>߶<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
// (nXS2,nYS2),(nXE2,nYE2) ֱ<>߶<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nx,ny) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>(nx,ny)
// =2,<2C><><EFBFBD><EFBFBD><E3B2BB><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>(nx,ny)
// =3,û<>й<EFBFBD>ͬ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>߶<EFBFBD>,<2C><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD>(<28><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ϵĽ<CFB5><C4BD><EFBFBD>)<29><>û<EFBFBD>й<EFBFBD>ͬ<EFBFBD>Ķ˵<C4B6>
// =4,<2C>й<EFBFBD>ͬ<EFBFBD>˵<EFBFBD><CBB5>IJ<EFBFBD><C4B2>ص<EFBFBD><D8B5>߶<EFBFBD>,<2C><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>˵<EFBFBD><CBB5>ص<EFBFBD>(nx,ny)
// =5,<2C>й<EFBFBD>ͬ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>߶<EFBFBD>,<2C><><EFBFBD><EFBFBD>(nx,ny)<29><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>зǹ<D0B7>ͬ<EFBFBD>Ķ˵<C4B6>
int IntOfTwoLineSegment(int nXS1,int nYS1,int nXE1,int nYE1,int nXS2,int nYS2,int nXE2,int nYE2,int& nx,int& ny);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PointS1_PointE1 ֱ<>߶<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// PointS2_PointE2 ֱ<>߶<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>ptIntersection
// =2,<2C><><EFBFBD><EFBFBD><E3B2BB><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>ptIntersection
// =3,û<>й<EFBFBD>ͬ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>߶<EFBFBD>,<2C><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD>(<28><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ϵĽ<CFB5><C4BD><EFBFBD>)<29><>û<EFBFBD>й<EFBFBD>ͬ<EFBFBD>Ķ˵<C4B6>
// =4,<2C>й<EFBFBD>ͬ<EFBFBD>˵<EFBFBD><CBB5>IJ<EFBFBD><C4B2>ص<EFBFBD><D8B5>߶<EFBFBD>,<2C><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD>˵<EFBFBD><CBB5>ص<EFBFBD>ptIntersection
// =5,<2C>й<EFBFBD>ͬ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>߶<EFBFBD>,<2C><><EFBFBD><EFBFBD>ptIntersection<6F><6E><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>зǹ<D0B7>ͬ<EFBFBD>Ķ˵<C4B6>
int IntOfTwoLineSegment(POINT PointS1,POINT PointE1,POINT PointS2,POINT PointE2,POINT& ptIntersection);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֱ<EFBFBD>ߺ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶λ<DFB6><CEBB><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfTwoLineSegment(...),IntOfTwoLine(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a1,b1,c1 ֱ<><D6B1>a1*x+b1*y+c1=0
// (nXS2,nYS2),(nXE2,nYE2) <20>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>(nx,ny)
// =2,<2C><><EFBFBD><EFBFBD><E3B2BB><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>(nx,ny)
// =3,ֱ<>ߺ<EFBFBD><DFBA>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD>
int IntOfLineLineSegment(double a1,double b1,double c1,int nXS2,int nYS2,int nXE2,int nYE2,int& nx,int& ny);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֱ<EFBFBD>ߺ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶λ<DFB6><CEBB><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfTwoLineSegment(...),IntOfTwoLine(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a1,b1,c1 ֱ<><D6B1>a1*x+b1*y+c1=0
// PointS2,PointE2 <20>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>ptIntersection
// =2,<2C><><EFBFBD><EFBFBD><E3B2BB><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>ptIntersection
// =3,ֱ<>ߺ<EFBFBD><DFBA>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD>
int IntOfLineLineSegment(double a1,double b1,double c1,POINT PointS2,POINT PointE2,POINT& ptIntersection);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֱ<EFBFBD>ߺ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶λ<DFB6><CEBB><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfTwoLineSegment(...),IntOfTwoLine(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nXS1,nYS1),(nXE1,nYE1) ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
// (nXS2,nYS2),(nXE2,nYE2) <20>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nx,ny) <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>(nx,ny)
// =2,<2C><><EFBFBD><EFBFBD><E3B2BB><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>(nx,ny)
// =3,ֱ<>ߺ<EFBFBD><DFBA>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD>
int IntOfLineLineSegment(int nXS1,int nYS1,int nXE1,int nYE1,int nXS2,int nYS2,int nXE2,int nYE2,int& nx,int& ny);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֱ<EFBFBD>ߺ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶λ<DFB6><CEBB><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfTwoLineSegment(...),IntOfTwoLine(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PointS1_PointE1 ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// PointS2_PointE2 <20>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>ptIntersection
// =2,<2C><><EFBFBD><EFBFBD><E3B2BB><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>),<2C><><EFBFBD><EFBFBD>ptIntersection
// =3,ֱ<>ߺ<EFBFBD><DFBA>߶<EFBFBD><DFB6><EFBFBD>ͬһֱ<D2BB><D6B1><EFBFBD><EFBFBD>
int IntOfLineLineSegment(POINT PointS1,POINT PointE1,POINT PointS2,POINT PointE2,POINT& ptIntersection);
//<2F><>ʸ<EFBFBD><CAB8>ptPointS1<53><31>ptPointE1<45><31>ʸ<EFBFBD><CAB8>ptPointS2<53><32>ptPointE2<45>Ľ<EFBFBD><C4BD><EFBFBD>!!!
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PointS1,PointE1 ʸ<><CAB8>ptPointS1<53><31>ptPointE1
// PointS2,PointE2 ʸ<><CAB8>ptPointS2<53><32>ptPointE2
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C>н<EFBFBD><D0BD><EFBFBD>ptIntersection
// =2,<2C><>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
int IntOfTwoVectorLine(POINT PointS1,POINT PointE1,POINT PointS2,POINT PointE2,POINT& ptIntersection);
//ֱ<>ߺ<EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// a,b,c ֱ<><D6B1>:ax+by+c=0;
// (xc,yc) Բ<><D4B2>
// nR <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// lpptIntersection1,lpptIntersection2 ֱ<>ߺ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLineCircle(double a,double b,double c,int xc,int yc,int nR,LPPOINT lpptIntersection1,LPPOINT lpptIntersection2);
//ֱ<>ߺ<EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD>ֹ<EFBFBD><D6B9>
// ptCenter Բ<><D4B2>
// nRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// lpptIntersection1,lpptIntersection2 ֱ<>ߺ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLineCircle(POINT ptPointS,POINT ptPointE,POINT ptCenter,int nRadius,LPPOINT lpptIntersection1,LPPOINT lpptIntersection2);
//ֱ<>ߺ<EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD>ֹ<EFBFBD><D6B9>
// ptCenter Բ<><D4B2>
// nRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptIntersection1,ptIntersection2 ֱ<>ߺ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLineCircle(POINT ptPointS,POINT ptPointE,POINT ptCenter,int nRadius,CPoint& ptIntersection1,CPoint& ptIntersection2);
//ֱ<>߶κ<DFB6>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE ֱ<>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>
// ptCenter Բ<><D4B2>
// nRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// lpptIntersection1,lpptIntersection2 ֱ<>ߺ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>)
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>)
int IntOfLineSegmentCircle(POINT ptPointS,POINT ptPointE,POINT ptCenter,int nRadius,LPPOINT lpptIntersection1,LPPOINT lpptIntersection2);
//ֱ<>߶κ<DFB6>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE ֱ<>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>
// ptCenter Բ<><D4B2>
// nRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptIntersection1,ptIntersection2 ֱ<>߶κ<DFB6>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>)
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>)
int IntOfLineSegmentCircle(POINT ptPointS,POINT ptPointE,POINT ptCenter,int nRadius,CPoint& ptIntersection1,CPoint& ptIntersection2);
//<2F><><EFBFBD>ߺ<EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD><EFBFBD>
// ptCenter Բ<><D4B2>
// nRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listIntPoint <20><><EFBFBD>ߺ<EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(=0,û<>н<EFBFBD><D0BD><EFBFBD>)
int IntOfPolylineCircle(CList<CPoint,CPoint> &listPolyline,POINT ptCenter,int nRadius,CList<CPoint,CPoint> &listIntPoint);
//<2F><><EFBFBD><EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// x1,y1,r1 Բ:(x-x1)*(x-x1) + (y-y1)*(y-y1) = r1*r1
// x2,y2,r2 Բ:(x-x2)*(x-x2) + (y-y2)*(y-y2) = r2*r2
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nIntX1,nIntY1),(nIntX2,nIntY2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfTwoCircle(int x1,int y1,int r1,int x2,int y2,int r2,int& nIntX1,int& nIntY1,int& nIntX2,int& nIntY2);
//<2F><><EFBFBD><EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptCenter1,nRadius1 Բ<>ĺͰ뾶
// ptCenter2,nRadius2 Բ<>ĺͰ뾶
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// lpptIntersection1,lpptIntersection2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfTwoCircle(POINT ptCenter1,int nRadius1,POINT ptCenter2,int nRadius2,LPPOINT lpptIntersection1,LPPOINT lpptIntersection2);
//<2F><><EFBFBD><EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptCenter1,nRadius1 Բ<>ĺͰ뾶
// ptCenter2,nRadius2 Բ<>ĺͰ뾶
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection1,ptIntersection2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// =0,û<>н<EFBFBD><D0BD><EFBFBD>
// =1,<2C><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =2,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfTwoCircle(POINT ptCenter1,int nRadius1,POINT ptCenter2,int nRadius2,CPoint& ptIntersection1,CPoint& ptIntersection2);
//<2F><><EFBFBD>߶κ<DFB6><CEBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶κ<DFB6><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfLinePolyline(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listIntPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLineSegmentPolyline(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline,CList<CPoint,CPoint>& listIntPoint);
//<2F><>IntOfLineSegmentPolyline(...)<29><><EFBFBD><EFBFBD>,IntOfLineSegmentPolyline_Old(...)<29>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>"case 2:")
int IntOfLineSegmentPolyline_Old(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline,CList<CPoint,CPoint>& listIntPoint);
//<2F><>ʸ<EFBFBD><CAB8>ptPointS<74><53>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>(<28><>ֱ<EFBFBD>߶<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>!!!
// Ҫ<>󽻵<EFBFBD><F3BDBBB5><EFBFBD><EFBFBD>߶<EFBFBD>ptPointS_ptPointE<74>ϻ<EFBFBD><CFBB><EFBFBD>ʸ<EFBFBD><CAB8>ptPointS<74><53>ptPointE<74><45><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>
// <20>μ<EFBFBD>IntOfLineSegmentPolyline(...)<29><>IntOfLinePolyline(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE ʸ<><CAB8>ptPointS<74><53>ptPointE
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listIntPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfVectorLinePolyline(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline,CList<CPoint,CPoint>& listIntPoint);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>߶κ<DFB6><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfLineSegmentPolyline(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listIntPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLinePolyline(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline,CList<CPoint,CPoint>& listIntPoint);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>!!!
//<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>߶κ<DFB6><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8>߶εĽ<CEB5><C4BD><EFBFBD>!!!
// <20>μ<EFBFBD>IntOfLineSegmentPolyline(...).
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b,c ֱ<>߷<EFBFBD><DFB7><EFBFBD>ax+by+c=0
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listIntPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLinePolyline(double a,double b,double c,CList<CPoint,CPoint>& listPolyline,CList<CPoint,CPoint>& listIntPoint);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ӳ<EFBFBD><D3B3>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
// dLength <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntPoint <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLinePolylineExtendHead(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline,double dLength,CPoint &ptIntPoint);
int IntOfLinePolylineExtendHead(double a,double b,double c,CList<CPoint,CPoint>& listPolyline,double dLength,CPoint &ptIntPoint);
//<2F><>ֱ<EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD>ӳ<EFBFBD><D3B3>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
// dLength <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntPoint <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfLinePolylineExtendTail(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline,double dLength,CPoint &ptIntPoint);
int IntOfLinePolylineExtendTail(double a,double b,double c,CList<CPoint,CPoint>& listPolyline,double dLength,CPoint &ptIntPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPolyline1 <20><><EFBFBD><EFBFBD>
// listPolyline2 <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listIntPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPolyline1<65>ij<EFBFBD><C4B3><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfTwoPolyline(CList<CPoint,CPoint>& listPolyline1,CList<CPoint,CPoint>& listPolyline2,CList<CPoint,CPoint>& listIntPoint);
//[20161229 syf]<5D><><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><DFBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// (1)<29>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IntOfTwoPolyline()<29><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>IntOfTwoLineSegment()<29>ķ<EFBFBD><C4B7><EFBFBD>ֵʱ,{1,4,5}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>IntOfTwoPolyline()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPolyline1 <20><><EFBFBD><EFBFBD>
// listPolyline2 <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listIntPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPolyline1<65>ij<EFBFBD><C4B3><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int IntOfTwoPolyline_101(CList<CPoint,CPoint>& listPolyline1,CList<CPoint,CPoint>& listPolyline2,CList<CPoint,CPoint>& listIntPoint);
//ƥ<><C6A5><EFBFBD><EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint
// dMaxError <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS1_ptPointE1 ֱ<>߶<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
// ptPointS2_ptPointE2 ֱ<>߶<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
// dDistance ʵ<>ʾ<EFBFBD><CABE><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>ptIntersection<6F><6E>ptPoint<6E>ľ<EFBFBD><C4BE><EFBFBD><=dMaxError,<2C>򷵻<EFBFBD>true.<2E><><EFBFBD><EFBFBD>false.
BOOL FixPointIntOfTwoLineSegment(POINT ptPoint,double dMaxError,POINT ptPointS1,POINT ptPointE1,
POINT ptPointS2,POINT ptPointE2,POINT& ptIntersection,double& dDistance);
//ƥ<><C6A5><EFBFBD>߶κ<DFB6>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint
// dMaxError <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE ֱ<>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>
// ptCenter Բ<><D4B2>
// nRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
// dDistance ʵ<>ʾ<EFBFBD><CABE><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD>߶κ<DFB6>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ptIntersection<6F><6E>ptPoint<6E>ľ<EFBFBD><C4BE><EFBFBD><=dMaxError,<2C>򷵻<EFBFBD>true.<2E><><EFBFBD><EFBFBD>false.
BOOL FixPointIntOfLineSegmentCircle(POINT ptPoint,double dMaxError,POINT ptPointS,POINT ptPointE,
POINT ptCenter,int nRadius,POINT& ptIntersection,double& dDistance);
//ƥ<><C6A5><EFBFBD><EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint
// dMaxError <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptCenter1,nRadius1 Բ<>ĺͰ뾶
// ptCenter2,nRadius2 Բ<>ĺͰ뾶
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
// dDistance ʵ<>ʾ<EFBFBD><CABE><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD>Բ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>ptIntersection<6F><6E>ptPoint<6E>ľ<EFBFBD><C4BE><EFBFBD><=dMaxError,<2C>򷵻<EFBFBD>true.<2E><><EFBFBD><EFBFBD>false.
BOOL FixPointIntOfTwoCircle(POINT ptPoint,double dMaxError,POINT ptCenter1,int nRadius1,
POINT ptCenter2,int nRadius2,POINT& ptIntersection,double& dDistance);
//ƥ<><C6A5><EFBFBD>߶κ<DFB6><CEBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint
// dMaxError <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS,ptPointE <20>߶<EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
// dDistance ʵ<>ʾ<EFBFBD><CABE><EFBFBD>
// nLocate <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(<28><>nLocate<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD>߶κ<DFB6><CEBA><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>ptIntersection<6F><6E>ptPoint<6E>ľ<EFBFBD><C4BE><EFBFBD><=dMaxError,<2C>򷵻<EFBFBD>true.<2E><><EFBFBD><EFBFBD>false.
BOOL FixPointIntOfLineSegmentPolyline(POINT ptPoint,double dMaxError,POINT ptPointS,
POINT ptPointE,CList <CPoint,CPoint> &listPolyline,
POINT &ptIntersection,double &dDistance,int& nLocate);
//ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint
// dMaxError <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPolyline1 <20><><EFBFBD><EFBFBD>1
// listPolyline2 <20><><EFBFBD><EFBFBD>2
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptIntersection <20><><EFBFBD><EFBFBD>
// dDistance ʵ<>ʾ<EFBFBD><CABE><EFBFBD>
// nLocate <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(<28><>nLocate<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>ptIntersection<6F><6E>ptPoint<6E>ľ<EFBFBD><C4BE><EFBFBD><=dMaxError,<2C>򷵻<EFBFBD>true.<2E><><EFBFBD><EFBFBD>false.
BOOL FixPointIntOfTwoPolyline(POINT ptPoint,double dMaxError,CList <CPoint,CPoint> &listPolyline1,
CList <CPoint,CPoint> &listPolyline2,POINT &ptIntersection,double &dDistance,int& nLocate);
//<2F>˵<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>(ptPoint.x-nMaxError,ptPoint.y-nMaxError)__(ptPoint.x+nMaxError,ptPoint.y-nMaxError)
//֮<><D6AE><EFBFBD><EFBFBD><EFBFBD>߶ε<DFB6>ɾ<EFBFBD><C9BE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
// nMaxError <20><><EFBFBD>İ뾶
// listPoint1 <20>˵<EFBFBD>ǰ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2 <20>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
void FilterPointOfListPoint(POINT ptPoint,int nMaxError,CList <CPoint,CPoint> &listPoint1,CList <CPoint,CPoint> &listPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(nPx,nPy)<29><>ֱ<EFBFBD><D6B1>ax+by+c=0<><30>ֱ<EFBFBD><D6B1>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ax+by+c=0<>Ľ<EFBFBD><C4BD><EFBFBD>(nFixX,nFixY)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nPx,nPy)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b,c <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵ<EFBFBD>ϵ<EFBFBD><CFB5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (nFixX,nFixY)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void IntOfLinePointVL(int nPx,int nPy,double a,double b,double c,int& nFixX,int& nFixY);
void IntOfLinePointVL(double dPx,double dPy,double a,double b,double c,double& dFixX,double& dFixY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPoint1<74><31>ֱ<EFBFBD><D6B1>ax+by+c=0<><30>ֱ<EFBFBD><D6B1>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ax+by+c=0<>Ľ<EFBFBD><C4BD><EFBFBD>ptPoint2
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint1<74><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b,c <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵ<EFBFBD>ϵ<EFBFBD><CFB5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint2<74><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void IntOfLinePointVL(CPoint ptPoint1,double a,double b,double c,CPoint& ptPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPoint1<74><31>ֱ<EFBFBD><D6B1>ptPoint2_ptPoint3<74><33>ֱ<EFBFBD><D6B1>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ptPoint2_ptPoint3<74>Ľ<EFBFBD><C4BD><EFBFBD>ptPoint4
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint1<74><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint2,ptPoint3 <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint4<74><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void IntOfLinePointVL(CPoint ptPoint1,CPoint ptPoint2,CPoint ptPoint3,CPoint& ptPoint4);
//<2F><>(x2,y2)_(x3,y3)Ϊ<>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ĶԳƵ<D4B3>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
// (x1,y1) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (x2,y2)_(x3,y3) <20><><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (nPx,nPy) <20>ԳƵ<D4B3>
void SymmetryPoint(int x1,int y1,int x2,int y2,int x3,int y3,int& nPx,int& nPy);
//<2F><>ptPoint2_ptPoint3Ϊ<33>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ĶԳƵ<D4B3>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
// ptPoint1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint2_ptPoint3 <20><><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint4 <20>ԳƵ<D4B3>
void SymmetryPoint(CPoint ptPoint1,CPoint ptPoint2,CPoint ptPoint3,CPoint &ptPoint4);
//<2F><>ptPoint1_ptPoint2Ϊ<32>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ĶԳƵ<D4B3>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
// listPoint1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint1_ptPoint2 <20><><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2 <20>ԳƵ<D4B3><C6B5><EFBFBD>
void SymmetryPoint(CList<CPoint,CPoint> &listPoint1,CPoint ptPoint1,CPoint ptPoint2,CList<CPoint,CPoint> &listPoint2);
//<2F><>ֱ<EFBFBD><D6B1>ax+by+c=0Ϊ<30>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ĶԳƵ<D4B3>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
// listPoint1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b,c <20><><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2 <20>ԳƵ<D4B3><C6B5><EFBFBD>
void SymmetryPoint(CList<CPoint,CPoint> &listPoint1,double a,double b,double c,CList<CPoint,CPoint> &listPoint2);
void SymmetryPoint(CList<CDBLPoint,CDBLPoint> &listDBLPoint1,double a,double b,double c,CList<CDBLPoint,CDBLPoint> &listDBLPoint2);
//<2F><>ֱ<EFBFBD><D6B1>ax+by+c=0Ϊ<30>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ĶԳƵ<D4B3>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
// (x1,y1) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b,c <20><><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (nPx,nPy) <20>ԳƵ<D4B3>
void SymmetryPoint(int x1,int y1,double a,double b,double c,int& nPx,int& nPy);
void SymmetryPoint(double x1,double y1,double a,double b,double c,double& dPx,double& dPy);
//<2F><>ֱ<EFBFBD><D6B1>ax+by+c=0Ϊ<30>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD>ĶԳƵ<D4B3>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
// ptPoint1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// a,b,c <20><><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint2 <20>ԳƵ<D4B3>
void SymmetryPoint(CPoint ptPoint1,double a,double b,double c,CPoint& ptPoint2);
void SymmetryPoint(CDBLPoint ptDBLPoint1,double a,double b,double c,CDBLPoint& ptDBLPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>ļн<C4BC>,<2C><>[0,2pi)֮<><D6AE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (startx,starty) <20><><EFBFBD><EFBFBD>
// (endx,endy) <20>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>н<EFBFBD>
double angle_2(int startx,int starty,int endx,int endy);
//[20170330 syf]
double angle_2(double startx,double starty,double endx,double endy);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>ļн<C4BC>,<2C><>[0,2pi)֮<><D6AE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS <20><><EFBFBD><EFBFBD>
// ptPointE <20>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>н<EFBFBD>
double angle_2(POINT ptPointS,POINT ptPointE);
//[20170330 syf]
double angle_2(CDBLPoint ptPointS,CDBLPoint ptPointE);
//<2F><>ʸ<EFBFBD><CAB8>ptPointS1<53><31>ptPointE1<45><31>ʱ<EFBFBD><EFBFBD><EBB7BD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ʸ<EFBFBD><CAB8>ptPointS2<53><32>ptPointE2<45>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļн<C4BC>,<2C><>[0,2pi)֮<><D6AE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS1,ptPointE1 ʸ<><CAB8>ptPointS1<53><31>ptPointE1
// ptPointS2,ptPointE2 ʸ<><CAB8>ptPointS2<53><32>ptPointE2
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>н<EFBFBD>
double angle_2(POINT ptPointS1,POINT ptPointE1,POINT ptPointS2,POINT ptPointE2);
//[20170330 syf]
double angle_2(CDBLPoint ptPointS1,CDBLPoint ptPointE1,CDBLPoint ptPointS2,CDBLPoint ptPointE2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(x1,y1),(x2,y2)<29><>(x3,y3),<2C>Լ<EFBFBD>Բ<EFBFBD><D4B2>(cx,cy),
//<2F><><EFBFBD><EFBFBD>(x2,y2)<29><>(x1,y1)<29><>(x3,y3)<29>м<EFBFBD>,<2C><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>򻭻<EFBFBD>ʱ,
//<2F><>(x1,y1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(x3,y3)<29><><EFBFBD>յ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>true,<2C><><EFBFBD>򷵻<EFBFBD>false
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A>˴<EFBFBD><CBB4><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>X<EFBFBD><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,Y<><59><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>˵<EFBFBD>˴<EFBFBD><CBB4><EFBFBD>˳ʱ<CBB3><CAB1>
BOOL IsAnticlockwise(long x1,long y1,long x2,long y2,long x3,long y3,long cx,long cy);
//[20170330 syf]
BOOL IsAnticlockwise_Double(double x1,double y1,double x2,double y2,double x3,double y3,double cx,double cy);
///////////////////////// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㶨Բʱ<D4B2><CAB1>Բ<EFBFBD>ĺͰ뾶 ///////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(x1,y1),(x2,y2),(x3,y3)
// <20><EFBFBD><E3B7A8><EFBFBD><EFBFBD>:
// <20><>(x1,y1),(x2,y2)<29><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L1,
// <20><>(x2,y2),(x3,y3)<29><><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>L2,
// <20><>L1,L2<4C>Ľ<EFBFBD><C4BD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>false,
// <20><><EFBFBD>򷵻<EFBFBD>true<75><65><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>Ϊ(cx,cy),<2C>뾶=cr.
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>򻭻<EFBFBD>ʱ,<2C><>cr>0 <20><>(x1,y1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(x3,y3)<29><><EFBFBD>յ<EFBFBD>,
// <20><>cr<0 <20><>(x3,y3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,(x1,y1)<29><><EFBFBD>յ<EFBFBD>.
// <20>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A>˴<EFBFBD><CBB4><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,
// Y<><59><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>˵<EFBFBD>˴<EFBFBD><CBB4><EFBFBD>˳ʱ<CBB3><CAB1>
////////////////////////////////////////////////////////////////////////////////
BOOL CircleCR(int x1,int y1,int x2,int y2,int x3,int y3,int& cx,int& cy,int& cr);
//[20170330 syf]
BOOL CircleCR(double x1,double y1,double x2,double y2,double x3,double y3,double& cx,double& cy,double& cr);
//<2F><>Բ<EFBFBD><D4B2>һ<EFBFBD><EFBFBD><EBBEB6>(ptCenter<65><72>ptPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>Ľ<EFBFBD><C4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptCenter Բ<><D4B2>
// nRadius <20>
// ptPoint <20><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB>
//<2F><><EFBFBD><EFBFBD>ֵ
// <20><><EFBFBD><EFBFBD>
CPoint IntOfCircleRadial(CPoint ptCenter,int nRadius,CPoint ptPoint);
//<2F><>׷<EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD>: AX=D
// <20><> <20><> <20><> <20><> <20><> <20><>
// <20><> a00 a01 <20><> <20><>x0 <20><> <20><>d0 <20><>
// <20><> a10 a11 a12 0 <20><> <20><>x1 <20><> <20><>d1 <20><>
// <20><> a21 a22 a23 <20><> <20><>x2 <20><> <20><>d2 <20><>
// <20><> . . . <20><> <20><>. <20><> <20><>. <20><>
// A=<3D><> . . . <20><>, X=<3D><>. <20><>, D=<3D><>. <20><>
// <20><> . . . <20><> <20><>. <20><> <20><>. <20><>
// <20><> 0 an-2,n-3 an-2,n-2 an-2,n-1 <20><> <20><>xn-2<><32> <20><>dn-2<><32>
// <20><> an-1,n-2 an-1,n-1 <20><> <20><>xn-1<><31> <20><>dn-1<><31>
// <20><> <20><> <20><> <20><> <20><> <20><>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// a[] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>߾<EFBFBD><DFBE><EFBFBD>A<EFBFBD><41>һά<D2BB><CEAC><EFBFBD><EFBFBD>a00,a01,a10,a11,a12,a21,a22,a23,...,(an-1,n-2),(an-1,n-1)
// n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
// d[] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ˵ij<CBB5><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ψһ<CEA8><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>TRUE,<2C><><EFBFBD><EFBFBD>d[]<5D>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD>.
// <20><><EFBFBD>򷵻<EFBFBD>FALSE.
BOOL Cetrd1(double *a,int n,double *d);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>Ͻǵ<CFBD><C7B5><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD>: AX=D
// <20><> <20><> <20><> <20><> <20><> <20><>
// <20><> a00 a01 a0n <20><> <20><>x0 <20><> <20><>d0 <20><>
// <20><> a10 a11 a12 0 <20><> <20><>x1 <20><> <20><>d1 <20><>
// <20><> a21 a22 a23 <20><> <20><>x2 <20><> <20><>d2 <20><>
// <20><> . . . <20><> <20><>. <20><> <20><>. <20><>
// A=<3D><> . . . <20><>, X=<3D><>. <20><>, D=<3D><>. <20><>
// <20><> . . . <20><> <20><>. <20><> <20><>. <20><>
// <20><> 0 an-2,n-3 an-2,n-2 an-2,n-1 <20><> <20><>xn-2<><32> <20><>dn-2<><32>
// <20><> an-1,0 an-1,n-2 an-1,n-1 <20><> <20><>xn-1<><31> <20><>dn-1<><31>
// <20><> <20><> <20><> <20><> <20><> <20><>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// a[] <20><><EFBFBD>ž<EFBFBD><C5BE><EFBFBD>A<EFBFBD><41>һά<D2BB><CEAC><EFBFBD><EFBFBD>a00,a01,a0n,a10,a11,a12,0,a21,a22,a23,0,...,(an-1,0),(an-1,n-2),(an-1,n-1)
// n <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
// d[] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ˵ij<CBB5><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ψһ<CEA8><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>TRUE,<2C><><EFBFBD><EFBFBD>d[]<5D>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD>.
// <20><><EFBFBD>򷵻<EFBFBD>FALSE.
BOOL Cetrd2(double *a,int n,double *d);
//<2F>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>Bezier<65><72><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱ƽ<DFB1>.
// <20><> 1 -2 1 <20><><EFBFBD><EFBFBD>P1 <20><>
// P(t)=[t2 t 1]<5D><>-2 2 0 <20><><EFBFBD><EFBFBD>p2 <20><>
// <20><> 1 0 0 <20><><EFBFBD><EFBFBD>p3 <20><>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listSP<53><50><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>.
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(>=0.5)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><><EFBFBD>ϳɹ<CFB3><C9B9><EFBFBD><EFBFBD><EFBFBD>true,
// listFitP<74>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵõ<DFB5><C3B5>ıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20><><EFBFBD>򷵻<EFBFBD>false,listFitP<74>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݺ<EFBFBD>listSP<53><50>ͬ
BOOL BezierCurve(CList<CPoint,CPoint>& listSP,double dMaxError,CList<CPoint,CPoint>& listFitP);
//˵<><CBB5>: <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>Bezier<65>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (dX1,dY1),(dX2,dY2),(dX3,dY3) 2<><32>Bezier<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>
// dT <20><><EFBFBD><EFBFBD>T
//<2F><><EFBFBD><EFBFBD>ֵ:
// point <20><>dT<64><54>Ӧ<EFBFBD>ĵ<EFBFBD>
CPoint BezierPoint(double dX1, double dY1, double dX2, double dY2, double dX3, double dY3, double dT);
//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32>Bezier<65><72><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5>е<EFBFBD><D0B5>IJ<EFBFBD><C4B2><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (dX1,dY1),(dX2,dY2),(dX3,dY3) 2<><32>Bezier<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>
// pointS,pointE <20><><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>(<28><><EFBFBD><EFBFBD><E3B2BB><EFBFBD><EFBFBD>ͬ)
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>е<EFBFBD><D0B5>IJ<EFBFBD><C4B2><EFBFBD>
double BezierPointParam(double dX1, double dY1, double dX2, double dY2, double dX3, double dY3, CPoint pointS,CPoint pointE);
//<2F>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>(<28>ҳ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱ƽ<DFB1>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listSP<53><50><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>.
// bClose =fasle,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =true <20>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʱҪ<CAB1><D2AA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>).
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(>=0.5)
// bNatural =true <20><><EFBFBD>ɶ˱߽<CBB1><DFBD><EFBFBD><EFBFBD><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD>߽߱<DFB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><><EFBFBD>ϳɹ<CFB3><C9B9><EFBFBD><EFBFBD><EFBFBD>true,
// listFitP<74>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵõ<DFB5><C3B5>ıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD>listFitP<74><50>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ!!!
// <20><><EFBFBD>򷵻<EFBFBD>false.
BOOL SplineCurve(CList<CPoint,CPoint>& listSP,BOOL bClose,double dMaxError,CList<CPoint,CPoint>& listFitP,BOOL bNatural=true);
//<2F>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>(<28>ҳ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱ƽ<DFB1>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listSP<53><50><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>.
// bClose =fasle,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =true <20>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʱҪ<CAB1><D2AA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>).
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(>=0.5)
// bTangentH =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptTangentH <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>
// bTangentT =true <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptTangentT <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>
// bNatural =true <20><><EFBFBD>ɶ˱߽<CBB1><DFBD><EFBFBD><EFBFBD><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD>߽߱<DFB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><><EFBFBD>ϳɹ<CFB3><C9B9><EFBFBD><EFBFBD><EFBFBD>true,
// listFitP<74>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵõ<DFB5><C3B5>ıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD>listFitP<74><50>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ!!!
// <20><><EFBFBD>򷵻<EFBFBD>false.
BOOL SplineCurve(CList<CPoint,CPoint>& listSP,BOOL bClose,double dMaxError,CList<CPoint,CPoint>& listFitP,BOOL bTangentH,CPoint ptTangentH,BOOL bTangentT,CPoint ptTangentT,BOOL bNatural);
//<2F>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Bezier<65><72><EFBFBD>߻<EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD>(<28>ҳ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱ƽ<DFB1>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD>ʱʹ<CAB1><CAB9>Bezier<65><72><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listSP<53><50><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>.
// bClose =fasle,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =true <20>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʱҪ<CAB1><D2AA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>).
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(>=0.5)
// bNatural =true <20><><EFBFBD>ɶ˱߽<CBB1><DFBD><EFBFBD><EFBFBD><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD>߽߱<DFB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><><EFBFBD>ϳɹ<CFB3><C9B9><EFBFBD><EFBFBD><EFBFBD>true,
// listFitP<74>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵõ<DFB5><C3B5>ıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD>listFitP<74><50>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ!!!
// <20><><EFBFBD>򷵻<EFBFBD>false.
BOOL CurveFit(CList<CPoint,CPoint>& listSP,BOOL bClose,double dMaxError,CList<CPoint,CPoint>& listFitP,BOOL bNatural=true);
//<2F>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Bezier<65><72><EFBFBD>߻<EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD>(<28>ҳ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱ƽ<DFB1>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>ʱʹ<CAB1><CAB9>Bezier<65><72><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listSP<53><50><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>.
// bClose =fasle,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =true <20>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʱҪ<CAB1><D2AA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>).
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(>=0.5)
// bTangentH =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptTangentH <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>
// bTangentT =true <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptTangentT <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>
// bNatural =true <20><><EFBFBD>ɶ˱߽<CBB1><DFBD><EFBFBD><EFBFBD><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD>߽߱<DFB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><><EFBFBD>ϳɹ<CFB3><C9B9><EFBFBD><EFBFBD><EFBFBD>true,
// listFitP<74>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵõ<DFB5><C3B5>ıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD>listFitP<74><50>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ!!!
// <20><><EFBFBD>򷵻<EFBFBD>false.
BOOL CurveFit(CList<CPoint,CPoint>& listSP,BOOL bClose,double dMaxError,CList<CPoint,CPoint>& listFitP,BOOL bTangentH,CPoint ptTangentH,BOOL bTangentT,CPoint ptTangentT,BOOL bNatural);
//<2F><><EFBFBD><EFBFBD>NURBS<42><53><EFBFBD>ߵ<EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>(<28>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD>)
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<50><49><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listSP <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ϵ:<3A>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ,<2C>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ϵ
// bClose =true <20>պ<EFBFBD>,=false <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listFitP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵõ<DFB5><C3B5>ıƽ<C4B1><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD>,<2C><>ôͷβ<CDB7><CEB2><EFBFBD><EFBFBD><EFBFBD>겻ͬ!!!
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,=false <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
BOOL CurveFit_NURBS(CList<CPoint,CPoint>& listSP, CList<CPoint,CPoint>& listFitP, BOOL bClose = FALSE);
//<2F><><EFBFBD>󿪿<EFBFBD><F3BFAABF><EFBFBD><EFBFBD>ߵĿ<DFB5><C4BF>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listFitPoint ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listCtrlPoint <20><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>
BOOL GetControlPointOfOpenCurve(int iDPMM,CList<CRPGrade_Point,CRPGrade_Point> &listFitPoint,double dMaxError,CList<CRPGrade_Point,CRPGrade_Point> &listCtrlPoint);
//<2F><><EFBFBD>󿪿<EFBFBD><F3BFAABF><EFBFBD><EFBFBD>ߵĿ<DFB5><C4BF>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listFitPoint ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listCtrlPoint <20><><EFBFBD>еĿ<D0B5><C4BF>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listCtrlPoint <20><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>,listCtrlPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ
BOOL GetControlPointOfOpenCurve(int iDPMM,CList<CPoint,CPoint> &listFitPoint,double dMaxError,CList<CPoint,CPoint> &listCtrlPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD>ߵĿ<DFB5><C4BF>Ƶ<EFBFBD>,listFitPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listFitPoint ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listCtrlPoint <20><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>,listCtrlPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ
BOOL GetControlPointOfCloseCurve(int iDPMM,CList<CRPGrade_Point,CRPGrade_Point> &listFitPoint,
double dMaxError,CList<CRPGrade_Point,CRPGrade_Point> &listCtrlPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD>ߵĿ<DFB5><C4BF>Ƶ<EFBFBD>,listFitPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB2BB>ͬ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listFitPoint ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listCtrlPoint <20><><EFBFBD>еĿ<D0B5><C4BF>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listCtrlPoint <20><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>
BOOL GetControlPointOfCloseCurve(int iDPMM,CList<CPoint,CPoint> &listFitPoint,double dMaxError,CList<CPoint,CPoint> &listCtrlPoint);
//<2F>ڵ<EFBFBD><DAB5><EFBFBD>listPointOld<6C>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPointNew<65><77><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPointOld <20><><EFBFBD><EFBFBD>
// listPointNew <20><><EFBFBD><EFBFBD>
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// dMaxDistance <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CPoint MaxDistancePoint(int iDPMM,CList<CPoint,CPoint> &listPointOld,CList<CPoint,CPoint> &listPointNew,double &dMaxDistance);
//<2F>ж϶<D0B6><CFB6><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><>ʱ<EFBFBD><CAB1>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ),=false ˳ʱ<CBB3><CAB1>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ)
BOOL IsAnticlockwise(CList<CPoint,CPoint>& listPolygon);
//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>䷴,<2C><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint1 <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2
void Reverse(CList<CPoint,CPoint>& listPoint1,CList<CPoint,CPoint>& listPoint2);
//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>䷴,<2C><>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint1 <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2
void ReverseT2H(CList<CPoint,CPoint>& listPoint1,CList<CPoint,CPoint>& listPoint2);
//<2F><>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint1 <20><><EFBFBD><EFBFBD>ת<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
// x ˮƽ<CBAE><C6BD>ת<EFBFBD>ĶԳ<C4B6><D4B3><EFBFBD>
// bHorizontal =true ˮƽ<CBAE><C6BD>ת
// y <20><>ֱ<EFBFBD><D6B1>ת<EFBFBD>ĶԳ<C4B6><D4B3><EFBFBD>
// bVertical =true <20><>ֱ<EFBFBD><D6B1>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint2 <20>ѷ<EFBFBD>ת<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
void Flip(CList<CPoint,CPoint> &listPoint1,int x,BOOL bHorizontal,int y,BOOL bVertical,CList<CPoint,CPoint> &listPoint2);
//<2F><>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD>ת<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
// x ˮƽ<CBAE><C6BD>ת<EFBFBD>ĶԳ<C4B6><D4B3><EFBFBD>
// bHorizontal =true ˮƽ<CBAE><C6BD>ת
// y <20><>ֱ<EFBFBD><D6B1>ת<EFBFBD>ĶԳ<C4B6><D4B3><EFBFBD>
// bVertical =true <20><>ֱ<EFBFBD><D6B1>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20>ѷ<EFBFBD>ת<EFBFBD>ĵ<EFBFBD>
void Flip(CPoint &ptPoint,int x,BOOL bHorizontal,int y,BOOL bVertical);
//<2F><>ptPoint<6E><74>ֱ<EFBFBD><D6B1>ax+by+c=0<>ľ<EFBFBD><C4BE><EFBFBD>
double DistanceOfPL(CPoint ptPoint,double a,double b,double c);
//<2F><>ptPoint<6E><74>ֱ<EFBFBD><D6B1>ptPointL1_ptPointL2<4C>ľ<EFBFBD><C4BE><EFBFBD>
double DistanceOfPL(CPoint ptPoint,CPoint ptPointL1,CPoint ptPointL2);
//<2F><>ptPoint<6E><74><EFBFBD>߶<EFBFBD>ptPointL1_ptPointL2<4C>ľ<EFBFBD><C4BE><EFBFBD>
double DistanceOfPLineSegment(CPoint ptPoint,CPoint ptPointL1,CPoint ptPointL2);
//<2F><>ptPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPolyline<6E><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double DistanceOfPPloyline(CPoint ptPoint,CList<CPoint,CPoint> &listPolyline);
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ĵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
void RemoveSamePointOfPolygon(CList<CPoint,CPoint>& listPoint);
//[20170330 syf]
void RemoveSamePointOfPolygon(CDBLPointList& listPoint);
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ĵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
//<2F><>RemoveSamePointOfPolygon<6F><6E>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>һ<EFBFBD><D2BB>
void RemoveSamePointOfPolyline(CList<CPoint,CPoint>& listPoint);
//[20170330 syf]
void RemoveSamePointOfPolyline(CDBLPointList& listPoint);
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><=dMinLength<74>ĵ<EFBFBD>
void Remove2NearPointOfPolygon(CList<CPoint,CPoint>& listPoint,double dMinLength);
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><=dMinLength<74>ĵ<EFBFBD>
void Remove2NearPointOfPolyline(CList<CPoint,CPoint>& listPoint,double dMinLength);
//20160602 XQ ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><=dMinLength<74>ĵ<EFBFBD>
void RemoveAll2NearPointOfPolyline(CList<CPoint,CPoint>& listPoint,double dMinLength);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δӵ<CEB4>ptPointS˳ʱ<CBB3><CAB1>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ)<29><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><>ptPointS==ptPointE,<2C><><EFBFBD>Ǵ<EFBFBD>ptPointS<74><53>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS,ptPointE<74><45>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD>.
// ptPointS,ptPointE<74><45><EFBFBD>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfPolygon(int iDPMM,CList<CPoint,CPoint>& listPolygon,CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δӵ<CEB4>ptPointS<74>Ⱦ<EFBFBD><C8BE><EFBFBD>ptPointM<74>ٵ<EFBFBD><D9B5><EFBFBD>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS,ptPointM,ptPointE<74><45>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD>.
// ptPointS,ptPointE<74><45><EFBFBD>߶εĶ˵<C4B6>.
// ptPointM <20>м<EFBFBD><D0BC><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfPolygon(int iDPMM,CList<CPoint,CPoint>& listPolygon,CPoint ptPointS,CPoint ptPointM,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δӵ<CEB4>ptPointSǰ<53><C7B0><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>ptPointS==ptPointE<74><45><EFBFBD>Ǵ<EFBFBD>ptPointS<74><53>ʼ
//<2F><>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS,ptPointE<74><45>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD>.
// ptPointS,ptPointE<74><45><EFBFBD>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>false.
BOOL PrevPolylineOfPolygon(int iDPMM,CList<CPoint,CPoint>& listPolygon,CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δӵ<CEB4>ptPointS<74><53><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>ptPointS==ptPointE<74><45><EFBFBD>Ǵ<EFBFBD>ptPointS<74><53>ʼ
//<2F><>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS,ptPointE<74><45>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD>.
// ptPointS,ptPointE<74><45><EFBFBD>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>false.
BOOL NextPolylineOfPolygon(int iDPMM,CList<CPoint,CPoint>& listPolygon,CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5>ptPointS<74><53><EFBFBD><EFBFBD>ptPointE֮<45><D6AE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS,ptPointE<74><45>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĶ<DFB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolyline1 ԭ<><D4AD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>.
// ptPointS,ptPointE<74><45><EFBFBD>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline2 <20><><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfPolyline(int iDPMM,CList<CPoint,CPoint>& listPolyline1,CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline2);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointE֮<45><D6AE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointE<74><45>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĶ<DFB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolyline1 ԭ<><D4AD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>.
// ptPointE<74><45><EFBFBD>߶ε<DFB6><CEB5>յ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline2 <20><><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfPolylineS(int iDPMM,CList<CPoint,CPoint>& listPolyline1,CPoint ptPointE,CList<CPoint,CPoint>& listPolyline2);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5>ptPointS<74><53><EFBFBD>յ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS<74><53>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĶ<DFB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolyline1 ԭ<><D4AD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>.
// ptPointE<74><45><EFBFBD>߶ε<DFB6><CEB5>յ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline2 <20><><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfPolylineE(int iDPMM,CList<CPoint,CPoint>& listPolyline1,CPoint ptPointS,CList<CPoint,CPoint>& listPolyline2);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵĴӵ<C4B4>ptPointS<74><53>ʼ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointM<74><4D><EFBFBD>˵<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><><D6AE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// ptPointS,ptPointM<74><4D>һ<EFBFBD><D2BB><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolyline1 ԭ<><D4AD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>.
// ptPointS,ptPointM<74><4D><EFBFBD>߶ε<DFB6><CEB5><EFBFBD>ֹ<EFBFBD><D6B9>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline2 <20><><EFBFBD><EFBFBD><EFBFBD>ߵĵ<DFB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfPolylineSM(int iDPMM,CPoint ptPointS,CPoint ptPointM,CList<CPoint,CPoint>& listPolyline1,CList<CPoint,CPoint>& listPolyline2);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD>ptArcPointS,ptArcPointM,ptArcPointE<74><45>Բ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>α<EFBFBD>ʾ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptCirclePointS,ptCirclePointM,ptCirclePointE Բ<><D4B2><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ĵ<EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolygonOfCircle(CPoint ptCirclePointS,CPoint ptCirclePointM,CPoint ptCirclePointE,CList<CPoint,CPoint>& listPolygon,double dMaxError=0.5);
//[20170330 syf]
BOOL PolygonOfCircle(CDBLPoint ptCirclePointS,CDBLPoint ptCirclePointM,CDBLPoint ptCirclePointE,CDBLPointList& listPolygon,double dMaxError=0.5);
//<2F><>Բ<EFBFBD><D4B2>ʱ<EFBFBD><EFBFBD><EBB7BD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD>α<EFBFBD>ʾ.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptCenter Բ<><D4B2>
// ptCirclePointS Բ<><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolygonOfCircle(CPoint ptCenter,CPoint ptCirclePointS,CList<CPoint,CPoint>& listPolygon,double dMaxError=0.5);
//[20170330 syf]
BOOL PolygonOfCircle(CDBLPoint ptCenter,CDBLPoint ptCirclePointS,CDBLPointList& listPolygon,double dMaxError=0.5);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD>ptArcPointS,ptArcPointM,ptArcPointE<74>Ļ<EFBFBD><C4BB>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD>߱<EFBFBD>ʾ.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptArcPointS,ptArcPointM,ptArcPointE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ĵ<EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfArc(CPoint ptArcPointS,CPoint ptArcPointM,CPoint ptArcPointE,CList<CPoint,CPoint>& listPolyline,double dMaxError=0.5);
//[20170330 syf]
BOOL PolylineOfArc(CDBLPoint ptArcPointS,CDBLPoint ptArcPointM,CDBLPoint ptArcPointE,CDBLPointList& listPolyline,double dMaxError=0.5);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD>߱<EFBFBD>ʾ.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptCenter Բ<><D4B2>
// ptArcPointS <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dAngle <20><><EFBFBD>νǶ<CEBD>,>=0 <20><>ʱ<EFBFBD><CAB1>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ),<0 ˳ʱ<CBB3><CAB1>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ),<2C><>λ:<3A><><EFBFBD><EFBFBD>
// dMaxError <20><><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>ɹ<EFBFBD>true,<2C><><EFBFBD><EFBFBD>false.
BOOL PolylineOfArc(CPoint ptCenter,CPoint ptArcPointS,double dAngle,CList<CPoint,CPoint>& listPolyline,double dMaxError=0.5);
//[20170330 syf]
BOOL PolylineOfArc(CDBLPoint ptCenter,CDBLPoint ptArcPointS,double dAngle,CDBLPointList& listPolyline,double dMaxError=0.5);
//<2F>ж<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// point <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// lpPoints[0]...lpPoints[nCount-1] <20><><EFBFBD><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =false <20><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL PointInPolygon(POINT point,LPPOINT lpPoints,int nCount);
//<2F>ж<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// point <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>εĵ<CEB5><C4B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// =false <20><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL PointInPolygon(POINT point,CList<CPoint,CPoint>& listPolygon);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>P1P2<50><32><EFBFBD><EFBFBD>nD<6E><44>ƽ<EFBFBD><C6BD>ֱ<EFBFBD>ߵķ<DFB5><C4B7><EFBFBD><><D6B1><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>P1P2<50><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ)
//<2F><>Ҫ˵<D2AA><CBB5>:
// <20>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,Y<><59><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>P1P2<50><32><EFBFBD>Ҳ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (nX1,nY1),(nX2,nY2) ֱ<><D6B1>P1P2<50><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// nD <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߺ͸<DFBA><CDB8><EFBFBD>ֱ<EFBFBD><D6B1>P1P2<50>ľ<EFBFBD><C4BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><>(nX1,nY1),(nX2,nY2)<29><><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>true, a,b,c <20><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ֱ<EFBFBD><D6B1>:ax+b*y+c=0;
// <20><>(nX1,nY1),(nX2,nY2)<29><>ͬһ<CDAC><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>fasle.
BOOL LineParallel(int nX1,int nY1,int nX2,int nY2,int nD,double& a,double& b,double& c);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>P1P2<50><32><EFBFBD><EFBFBD>nD<6E><44>ƽ<EFBFBD><C6BD>ֱ<EFBFBD>ߵķ<DFB5><C4B7><EFBFBD><><D6B1><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>P1P2<50><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ)
//<2F><>Ҫ˵<D2AA><CBB5>:
// <20>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,Y<><59><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>P1P2<50><32><EFBFBD>Ҳ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1,ptPoint2 ֱ<><D6B1>P1P2<50><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// nD <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߺ͸<DFBA><CDB8><EFBFBD>ֱ<EFBFBD><D6B1>P1P2<50>ľ<EFBFBD><C4BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// <20><>ptPoint1,ptPoint2<74><32><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>true, a,b,c <20><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ֱ<EFBFBD><D6B1>:ax+b*y+c=0
// <20><>ptPoint1,ptPoint2<74><32>ͬһ<CDAC><D2BB>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>fasle.
BOOL LineParallel(CPoint ptPoint1,CPoint ptPoint2,int nD,double& a,double& b,double& c);
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı߽<C4B1><DFBD><EFBFBD><EFBFBD><EFBFBD>
CRect GetRectOfListPoint(CList<CPoint,CPoint>& listPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>Լ<EFBFBD><D4BC>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// nNum1,nNum2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// nNum1,nNum2<6D>Ĺ<EFBFBD>Լ<EFBFBD><D4BC>(<28><>nNum1,nNum2<6D><32><EFBFBD><EFBFBD><30><CAB1><EFBFBD><EFBFBD>1)
int CommomDivisor(int nNum1,int nNum2);
//<2F>ж<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint
// ptPointS
// ptPointE
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><>ptPoint<6E><74>ptPointS_ptPointE֮<45><EFBFBD><E4B7B5>true,<2C><><EFBFBD><EFBFBD>false.
BOOL BetweenTwoPoint(CPoint ptPoint,CPoint ptPointS,CPoint ptPointE);
//<2F>ж<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// ptPoint
// ptPointS
// ptPointE
// listPolyline1
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline2 ptPointS_ptPointE֮<45><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><>ptPoint<6E><74><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ptPointS_ptPointE֮<45><EFBFBD><E4B7B5>true,<2C><><EFBFBD><EFBFBD>false.
BOOL BetweenTwoPointAtPolyline(int iDPMM,CPoint ptPoint,CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint> &listPolyline1,CList<CPoint,CPoint> &listPolyline2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// ptPointS,ptPointE <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
int Get2PLengthOfPolyline(int iDPMM,CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint> &listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵij<DFB5><C4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>
int GetLengthOfPolyline(CList<CPoint,CPoint> &listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ߵij<DFB5><C4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// dLength <20><><EFBFBD>߳<EFBFBD><DFB3>ȵ<EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>
int GetLengthOfPolyline(CList<CPoint,CPoint> &listPolyline,double &dLength);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>εij<CEB5><C4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD>
int GetLengthOfPolygon(CList<CPoint,CPoint> &listPolygon);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>εij<CEB5><C4B3><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// dLength <20><><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>ȵ<EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD>
int GetLengthOfPolygon(CList<CPoint,CPoint> &listPolygon,double &dLength);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
int TwoPointLength(CPoint ptPoint1,CPoint ptPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// dLength <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
int TwoPointLength(CPoint ptPoint1,CPoint ptPoint2,double &dLength);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double TwoPointLength(CDBLPoint pDBLPoint1,CDBLPoint pDBLPoint2);
//<2F>ж<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// 1:1<><31><EFBFBD><EFBFBD>,2:2<><32><EFBFBD><EFBFBD>,3:3<><33><EFBFBD><EFBFBD>,4:4<><34><EFBFBD><EFBFBD>
int GetQuadrant(int x,int y);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD>߽ضϵIJ<CFB5><C4B2><EFBFBD>ȥ<EFBFBD><C8A5>
//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺ<EFBFBD><DFBA>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>false.
BOOL PolygonRemovePolyline(int iDPMM,CList<CPoint,CPoint> &listPolygon,CList<CPoint,CPoint> &listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPoint<6E><74><EFBFBD><EFBFBD>ptPointS_ptPointEͬ<45><CDAC>(<28><>ptPointS<74><53>ptPointE),<2C>Ҿ<EFBFBD><D2BE><EFBFBD>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ptPoint
BOOL GetEquidireectionalPoint(CPoint ptPointS,CPoint ptPointE,CList<CPoint,CPoint> &listPoint,CPoint &ptPoint);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>(ptPoint1,ptPoint2)<29>Ƿ<EFBFBD><C7B7><EFBFBD>ֱ<EFBFBD><D6B1>ptPointLS_ptPointLE<4C><45>ͬ<EFBFBD><CDAC>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1,ptPoint2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointLS,ptPointLE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true ͬ<><CDAC>,false <20><><EFBFBD><EFBFBD>
BOOL IsSameSide(CPoint ptPoint1,CPoint ptPoint2,CPoint ptPointLS,CPoint ptPointLE);
//<2F>жϵ<D0B6><CFB5><EFBFBD>listPoint<6E>Ƿ<EFBFBD><C7B7><EFBFBD>ֱ<EFBFBD><D6B1>ptPointLS_ptPointLE<4C><45>ͬ<EFBFBD><CDAC>
//<2F><><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointLS,ptPointLE ֱ<>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true ͬ<><CDAC>,false <20><><EFBFBD><EFBFBD>
BOOL IsSameSide(CList<CPoint,CPoint> &listPoint,CPoint ptPointLS,CPoint ptPointLE);
//<2F>ж<EFBFBD>ƽ<EFBFBD>е<EFBFBD>ֱ<EFBFBD><D6B1>ptPoint1_ptPoint2<74><32>ptPoint3_ptPoint4,
//<2F><>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPoint1<74><31>ptPoint2<74><32>ptPoint3<74><33>ptPoint4<74>Ƿ<EFBFBD><C7B7><EFBFBD>ͬ.
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:<3A><>2009<30><39>11<31><31>11<31><31>ǰҪ<C7B0><D2AA>ptPoint1_ptPoint2<74><32>ptPoint3_ptPoint4<74><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><><D6AE><EFBFBD>ij<EFBFBD>ʸ<EFBFBD><CAB8>ptPoint1<74><31>ptPoint2<74><32>ptPoint3<74><33>ptPoint4<74>ļнDz<D0BD><C7B2><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ָ<EFBFBD><D6B8><EFBFBD>Ƕ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1
// ptPoint2
// ptPoint3
// ptPoint4
// dCosMaxAngle <20>ж<EFBFBD>ʸ<EFBFBD><CAB8>ptPoint1<74><31>ptPoint2<74><32>ptPoint3<74><33>ptPoint4ͬ<34><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>,(ԭ<><D4AD>Ĭ<EFBFBD><C4AC>ֵΪ1<CEAA>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>,20130827֮<37><D6AE>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ)
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20><>ͬ,false <20>෴.
BOOL IsSameDirection(CPoint ptPoint1,CPoint ptPoint2,CPoint ptPoint3,CPoint ptPoint4,double dCosMaxAngle);
//[20130827]<5D>ָ<EFBFBD>20091111֮ǰ<D6AE>ĺ<EFBFBD><C4BA><EFBFBD>
// <20><>Ϊ<EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ƽ<EFBFBD>е<EFBFBD><><D6BB>Ҫ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ǵķ<C7B5><C4B7><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͬ,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD>ýǶ<C3BD><C7B6>ж<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8>ɺ<EFBFBD><C9BA><EFBFBD>׿<EFBFBD>е<EFBFBD><<S134211K00.dgs>><3E>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>м<EFBFBD><D0BC><EFBFBD>101<30><EFBFBD><E6B1BE><EFBFBD><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD>øú<C3B8><C3BA><EFBFBD><EFBFBD>ж<EFBFBD>ʱ(Ĭ<><C4AC><EFBFBD><EFBFBD>1<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>ֵ)<29>ж<EFBFBD>ʧ<EFBFBD><CAA7>,<2C><>Ϊ<EFBFBD>Ƕ<EFBFBD>=1.83<EFBFBD><EFBFBD>
BOOL IsSameDirection(CPoint ptPoint1,CPoint ptPoint2,CPoint ptPoint3,CPoint ptPoint4);
//<2F>жϵ<D0B6>ptPoint<6E>Ƿ<EFBFBD><C7B7>ھ<EFBFBD><DABE><EFBFBD>(ptPoint1,ptPoint2)<29><>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint1,ptPoint2 <20><><EFBFBD>ζԽ<CEB6><D4BD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>,false <20><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD>
BOOL PointInRect(CPoint ptPoint,CPoint ptPoint1,CPoint ptPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>0<EFBFBD><30>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>
void TrimAfterDot0(CString &strNum);
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ַ<EFBFBD>ǰ<EFBFBD>Ļس<C4BB><D8B3><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>
CString TrimHeadCRLF(CString string);
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ļس<C4BB><D8B3><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>
CString TrimTailCRLF(CString string);
//<2F>ж<EFBFBD>ptPoint<6E>Ƿ<EFBFBD><C7B7><EFBFBD>ʸ<EFBFBD><CAB8>ptPointS<74><53>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ptPointS<74><53>ptPointE<74><45>,=false <20><><EFBFBD>ұ<EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
BOOL IsLeftPoint(CPoint ptPoint,CPoint ptPointS,CPoint ptPointE);
//<2F>ж<EFBFBD>ptPoint<6E>Ƿ<EFBFBD><C7B7>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,=false <20><><EFBFBD>ұ<EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
BOOL IsLeftPoint(CPoint ptPoint,CList<CPoint,CPoint> &listPolyline);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1
// ptPoint2
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
CRect RectOfContainTowPoint(CPoint ptPoint1,CPoint ptPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
CRect RectOfPolyline(CList<CPoint,CPoint> &listPolyline);
//<2F><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><><D4B2><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EBB7BD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>X<EFBFBD><58><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,Y<><59><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,<2C><><EFBFBD><EFBFBD>˳ʱ<CBB3><EFBFBD><EBB7BD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptLeftUp,ptRightDown Բ<><D4B2><EFBFBD>޶<EFBFBD><DEB6><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>ϽǺ<CFBD><C7BA><EFBFBD><EFBFBD>½<EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// ptPointS,ptPointE Բ<><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
CRect RectOfContainArc(CPoint ptLeftUp,CPoint ptRightDown,CPoint ptPointS,CPoint ptPointE);
//<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
CSize StringSize(LOGFONT lfFont,CString string);
//<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
CSize StringSize(CDC *pDC,CString string);
//<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CSize StringSize(CDC *pDC,CString string,int &nLines);
//<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// lfFont <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// string <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptLU <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>λ<EFBFBD><CEBB>
// dScale <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ߶ȡ<DFB6><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA>Ϊ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD>߶ȡ<DFB6><C8A1><EFBFBD><EFBFBD>ȵ<EFBFBD>ֵ̫<D6B5><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B3AC>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptLD <20><><EFBFBD>½<EFBFBD>λ<EFBFBD><CEBB>
// ptRU <20><><EFBFBD>Ͻ<EFBFBD>λ<EFBFBD><CEBB>
// ptRD <20><><EFBFBD>½<EFBFBD>λ<EFBFBD><CEBB>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
CSize StringRgnLU(LOGFONT lfFont,CString string,CPoint &ptLU,CPoint &ptLD,CPoint &ptRU,CPoint &ptRD,double dScale=1.0);
//<2F><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// lfFont <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// string <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptLD <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD>λ<EFBFBD><CEBB>
// dScale <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ߶ȡ<DFB6><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA>Ϊ<EFBFBD>˷<EFBFBD>ֹ<EFBFBD>߶ȡ<DFB6><C8A1><EFBFBD><EFBFBD>ȵ<EFBFBD>ֵ̫<D6B5><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B3AC>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptLU <20><><EFBFBD>Ͻ<EFBFBD>λ<EFBFBD><CEBB>
// ptRU <20><><EFBFBD>Ͻ<EFBFBD>λ<EFBFBD><CEBB>
// ptRD <20><><EFBFBD>½<EFBFBD>λ<EFBFBD><CEBB>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
CSize StringRgnLD(LOGFONT lfFont,CString string,CPoint &ptLU,CPoint &ptLD,CPoint &ptRU,CPoint &ptRD,double dScale=1.0);
//<2F><>ȡstring<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int StringLines(CString string);
//<2F><>ȡstring<6E><67>nLineIndex<65>е<EFBFBD><D0B5>ַ<EFBFBD>(<28><>ʼ<EFBFBD>е<EFBFBD>nLineIndexΪ0)
CString GetSubString(CString string,int nLineIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPolygon <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD>
double AreaOfPloygon(CList<CPoint,CPoint> &listPolygon);
//<2F>ж<EFBFBD><D0B6>߶κ;<CEBA><CDBE><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// rect <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS_ptPointE <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE <20><>ȡ<EFBFBD><C8A1><EFBFBD>߶<EFBFBD>(ptPointS_ptPointE)
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>߶κ;<CEBA><CDBE><EFBFBD><EFBFBD>ཻ, false <20>߶κ;<CEBA><CDBE>β<EFBFBD><CEB2>ཻ.
BOOL IntersectLineRect(CRect rect,CPoint &ptPointS,CPoint &ptPointE);
//<2F>ж<EFBFBD><D0B6>߶κ;<CEBA><CDBE><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// rect <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointS_ptPointE <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE <20><>ȡ<EFBFBD><C8A1><EFBFBD>߶<EFBFBD>(ptPointS_ptPointE)
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>߶κ;<CEBA><CDBE><EFBFBD><EFBFBD>ཻ, false <20>߶κ;<CEBA><CDBE>β<EFBFBD><CEB2>ཻ.
BOOL IntersectLineRect(CRect rect,int &nXS,int &nYS,int &nXE,int &nYE);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ߺ;<DFBA><CDBE><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// rect <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20><><EFBFBD>ߺ;<DFBA><CDBE><EFBFBD><EFBFBD>ཻ, false <20><><EFBFBD>ߺ;<DFBA><CDBE>β<EFBFBD><CEB2>ཻ.
BOOL IntersectPolylineRect(CList<CPoint,CPoint> &listPolyline,CPoint ptPointS,CPoint ptPointE);
//<2F>жϾ<D0B6><CFBE><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>Կ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// rect <20><>ѡ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// listPolyline <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20><><EFBFBD>Կ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// false <20><><EFBFBD>ο<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL IntersectPolylineRect(CRect rect,CList<CPoint,CPoint> &listPolyline);
//<2F>ڵ<EFBFBD><DAB5><EFBFBD>listPoint<6E><74>,<2C><>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ж<EFBFBD>ptPoint1<74><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ptPoint2<74><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>(<28><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ǰ<EFBFBD><C7B0>)
//ע<><D7A2>:<3A><>ptPoint1,ptPoint2<74><32><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPoint
// ptPoint1
// ptPoint2
//<2F><><EFBFBD><EFBFBD>ֵ:
// true ptPoint1<74><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPoint2<74><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>,
// false ptPoint1<74><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPoint2<74><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>.
BOOL IsPrevPoint(int iDPMM,CList<CPoint,CPoint> &listPoint,CPoint ptPoint1,CPoint ptPoint2);
//20140504 XQ <20><>ptPointOԭ<4F><D4AD>,<2C><>ptExtend<6E><64><EFBFBD><EFBFBD>ptExtendToPointʱ,<2C><>ptPointOld<6C><64>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointNew
//<2F>ú<EFBFBD><C3BA><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD>Ҹߺ<D2B8><DFBA>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Extend(CPoint ptPointO,CPoint ptExtend,CPoint ptExtendToPoint,CPoint ptPointOld, CPoint &ptPointNew);
//<2F><>ptPointOԭ<4F><D4AD>,<2C><>ptExtend<6E><64><EFBFBD><EFBFBD>ptExtendToPointʱ,<2C><>listPointOld<6C><64>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPointNew
//<2F>ú<EFBFBD><C3BA><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD>Ҹߺ<D2B8><DFBA>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Extend(CPoint ptPointO,CPoint ptExtend,CPoint ptExtendToPoint,CList<CPoint,CPoint> &listPointOld,CList<CPoint,CPoint> &listPointNew);
//<2F><>ptPointOԭ<4F><D4AD>,<2C><>ptExtend<6E><64><EFBFBD><EFBFBD>ptExtendToPointʱ,<2C><>listPointOld<6C><64>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPointNew
//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ExtendInWidth(CPoint ptPointO,CPoint ptExtend,CPoint ptExtendToPoint,CList<CPoint,CPoint> &listPointOld,CList<CPoint,CPoint> &listPointNew);
//<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>listPoint<6E><74><EFBFBD><EFBFBD>ptPoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
CPoint NearestPoint(CPoint ptPoint,CList<CPoint,CPoint> &listPoint,int &nDistance);
//<2F><><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>listPoint1<74>ĵ<EFBFBD><C4B5><EFBFBD>listPoint2<74>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint1
// listPoint2
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1 <20>õ<EFBFBD><C3B5><EFBFBD>listPoint1<74><31>
// ptPoint2 <20>õ<EFBFBD><C3B5><EFBFBD>listPoint2<74><32>
//<2F><><EFBFBD><EFBFBD>ֵ:
// ptPoint1<74><31>ptPoint2<74>ľ<EFBFBD><C4BE><EFBFBD>
int NearestPoint(CList<CPoint,CPoint> &listPoint1,CList<CPoint,CPoint> &listPoint2,CPoint &ptPoint1,CPoint &ptPoint2);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijһ<C4B3><D2BB><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ax+by+c=0
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPolyline
// ptPoint
// dMinLength ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// a,b,c ֱ<>߷<EFBFBD><DFB7><EFBFBD>
BOOL VerticalLineOfPloyline(int iDPMM,CList<CPoint,CPoint> &listPolyline,CPoint ptPoint,double dMinLength,double &a,double &b,double &c);
BOOL VerticalLineOfPloygon(int iDPMM,CList<CPoint,CPoint> &listPolygon,CPoint ptPoint,double dMinLength,double &a,double &b,double &c);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijһ<C4B3><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ax+by+c=0
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
BOOL TangentOfPloyline(int iDPMM,CList<CPoint,CPoint> &listPolyline,CPoint ptPoint,double dMinLength,double &a,double &b,double &c);
BOOL TangentOfPloygon(int iDPMM,CList<CPoint,CPoint> &listPolyline,CPoint ptPoint,double dMinLength,double &a,double &b,double &c);
//<2F>и<EFBFBD>ʱ<EFBFBD>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listRectOld û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
// nDistance <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listRectNew <20>ź<EFBFBD><C5BA><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
void CuttingSort(CList<CRect,CRect> &listRectOld,int nDistance,CList<CRect,CRect> &listRectNew);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>γɵ<CEB3><C9B5>¾<EFBFBD><C2BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>
// nLeft,nTop,nRight,nBottom <20>ɵľ<C9B5><C4BE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// nLeft,nTop,nRight,nBottom <20>µľ<C2B5><C4BE><EFBFBD>
void GetNewRect(CPoint ptPoint,int &nLeft,int &nTop,int &nRight,int &nBottom);
//<2F>жϵ<D0B6><CFB5><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>
// dMaxError <20>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20><>һ<EFBFBD><D2BB>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
BOOL AllPointAtLine(CList<CPoint,CPoint> &listPoint,double dMaxError);
//<2F><>ˮƽ<CBAE><C6BD>ֱ<EFBFBD><D6B1>
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ptPointS_ptPointE<74><45>ˮƽ<CBAE><C6BD>ֱ<EFBFBD>ߵĽǶ<C4BD>С<EFBFBD><D0A1>dMaxAngle,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointE<74><45>ˮƽ<CBAE><C6BD>ֱ<EFBFBD><D6B1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointHV
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointS,ptPointE ֱ<>ߵ<EFBFBD>
// dMaxAngle <20><><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD>,<2C><>λ:<3A><>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPointHV
//<2F><><EFBFBD><EFBFBD>ֵ:
// true <20>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>ĽǶ<C4BD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD>ֱ<EFBFBD><D6B1>
BOOL HVLine(CPoint ptPointS,CPoint ptPointE,double dMaxAngle,CPoint &ptPointHV);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĿ<DFB5><C4BF>Ƶ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// iDPMM [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPoint
// <20><><EFBFBD><EFBFBD>
// listCtrl
// [<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ɹ<EFBFBD>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ʹ<EFBFBD>øò<C3B8><C3B2><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
// dSplineError
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dMaxError
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (bHeadTangent,ptHeadTangent)
// bHeadTangent=TRUE,<2C><>ǰ<EFBFBD><C7B0><EFBFBD>ߵ<EFBFBD>,<2C><>ʱptHeadTangent<6E><74>Ч;bHeadTangent=FALSE,û<><C3BB>ǰ<EFBFBD><C7B0><EFBFBD>ߵ<EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ptHeadTangent<6E><74>ֵ
// (bTailTangent,ptTailTangent)
// bTailTangent=TRUE,<2C>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ߵ<EFBFBD>,<2C><>ʱptTailTangent<6E><74>Ч;bTailTangent=FALSE,û<>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ߵ<EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ptTailTangent<6E><74>ֵ
// bNatrual
// =TRUE,<2C><>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>;=FALSE,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,20170406 syf,<2C><>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5>Ϊtrue
// bExactSolution
// =TRUE,<2C><><EFBFBD>⾫ȷ<E2BEAB><C8B7>;=FALSE,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⾫ȷ<E2BEAB><C8B7>,<2C><>ô<EFBFBD><C3B4><EFBFBD>ԷŴ<D4B7><C5B4><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
BOOL CalculateSplineCtrlPoint(int iDPMM,CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listCtrl, double dSplineError, double dMaxError,
BOOL bHeadTangent = FALSE,CPoint ptHeadTangent = CPoint(0,0),BOOL bTailTangent = FALSE,
CPoint ptTailTangent = CPoint(0,0),BOOL bNatrual = TRUE, BOOL bExactSolution = TRUE);
//<2F><>ÿһ<C3BF>εȷַ<C8B7><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĿ<DFB5><C4BF>Ƶ<EFBFBD>(segment divide)
//<2F><><EFBFBD><EFBFBD>:
// listPoint
// <20><><EFBFBD><EFBFBD>
// listCtrl
// [<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ɹ<EFBFBD>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ʹ<EFBFBD>øò<C3B8><C3B2><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
// dSplineError
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dMaxError
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (bHeadTangent,ptHeadTangent)
// bHeadTangent=TRUE,<2C><>ǰ<EFBFBD><C7B0><EFBFBD>ߵ<EFBFBD>,<2C><>ʱptHeadTangent<6E><74>Ч;bHeadTangent=FALSE,û<><C3BB>ǰ<EFBFBD><C7B0><EFBFBD>ߵ<EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ptHeadTangent<6E><74>ֵ
// (bTailTangent,ptTailTangent)
// bTailTangent=TRUE,<2C>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ߵ<EFBFBD>,<2C><>ʱptTailTangent<6E><74>Ч;bTailTangent=FALSE,û<>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ߵ<EFBFBD>,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ptTailTangent<6E><74>ֵ
// bNatrual
// =TRUE,<2C><>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>;=FALSE,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,20170406 syf,<2C><>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5>Ϊtrue
// bExactSolution
// =TRUE,<2C><><EFBFBD>⾫ȷ<E2BEAB><C8B7>;=FALSE,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⾫ȷ<E2BEAB><C8B7>,<2C><>ô<EFBFBD><C3B4><EFBFBD>ԷŴ<D4B7><C5B4><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// dMaxCtrlPointDistance
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL CalculateSplineCtrlPoint_SD(CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listCtrl, double dSplineError, double dMaxError, double dMaxCtrlPointDistance,
BOOL bHeadTangent = FALSE,CPoint ptHeadTangent = CPoint(0,0),BOOL bTailTangent = FALSE,
CPoint ptTailTangent = CPoint(0,0),BOOL bNatrual = TRUE, BOOL bExactSolution = TRUE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
double DistanceOfTwoList(CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listPoint2);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>.
double DistanceFromListToList(CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listPoint2);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>һ<E3B5BD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>.
double DistanceFromPointToList(CPoint point, CList<CPoint,CPoint>& listPoint);
double DistanceFromPointToList(CPoint point, CPoint* pt, int nArray);
//<2F><><EFBFBD><EFBFBD>ptInt<6E><74><EFBFBD>߶<EFBFBD>ptS<74><53>ptE<74>ϵIJ<CFB5><C4B2><EFBFBD>ֵ
double PointToParam(CPoint& ptInt, CPoint& ptS, CPoint& ptE);
//<2F><><EFBFBD>һ<E3B5BD><D2BB><EFBFBD>߶εĴ<CEB5><C4B4><EFBFBD>.
void GetVerticalPoint(CPoint& ptS, CPoint& ptE, CPoint& ptRes, CPoint& ptDes);
//<2F><><EFBFBD>һ<E3B5BD><D2BB><EFBFBD>߶εĴ<CEB5><C4B4><EFBFBD>.
void GetVerticalPoint(CDBLPoint ptDBLPointS, CDBLPoint ptDBLPointE, CDBLPoint ptInput, CDBLPoint& ptOutput);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6>Ƿ<EFBFBD>ƽ<EFBFBD><C6BD>
BOOL IsParallel(CPoint& ptS0, CPoint& ptE0, CPoint& ptS1, CPoint& ptE1);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>.
BOOL AddOneCtrlPoint(CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listCtrl);
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>Ƶ<EFBFBD><C6B5>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>.
void DivideListAccordingToCtrlList(CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listCtrl, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& arrayList);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>:
// type
// Ԫ<><D4AA>
// listType
// <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// >=0 <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0<EFBFBD><30>ʼ
// =-1 <20><>Ԫ<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<class TYPE,class ARG_TYPE>
int FindIndex(TYPE type, CList<TYPE,ARG_TYPE>& listType)
{
POSITION pos;
int iResult, i;
iResult = -1;
i = 0;
pos = listType.GetHeadPosition();
while (pos != NULL)
{
if (listType.GetAt(pos) == type)
{
iResult = i;
break;
}
else
{
listType.GetNext(pos);
i++;
}
}
return iResult;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>:
// type
// Ԫ<><D4AA>
// (p,nArray)
// <20><><EFBFBD><EFBFBD><E9BCB0><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// >=0 <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0<EFBFBD><30>ʼ
// =-1 <20><>Ԫ<EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<class TYPE>
int FindIndex(TYPE type, TYPE* p, int nArray)
{
int iResult, i;
ASSERT(p != NULL);
iResult = -1;
for (i = 0; i < nArray; i++)
{
if (p[i] == type)
{
iResult = i;
break;
}
}
return iResult;
}
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD>ƾ<EFBFBD><C6BE><EFBFBD>.
double MaxDistanceOfList(CList<CPoint,CPoint>& listPoint, CPoint& point);
//<2F>жϵ<D0B6><CFB5>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>εĹ<CEB5>ϵ
//<2F><><EFBFBD><EFBFBD>:
// point <20><>.
// listPoint <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// =1,<2C><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>;=0,<2C><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;=-1,<2C><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ.
//˵<><CBB5>:
// <20>˴<EFBFBD>Ӧ<EFBFBD><D3A6>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD>,<2C><>:<3A><>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.
int PointInList(CPoint& point, CList<CPoint,CPoint>& listPoint);
//<2F>жϵ<D0B6><CFB5>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>εĹ<CEB5>ϵ.
//<2F><><EFBFBD><EFBFBD>:
// point <20><>.
// pt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>.
// nArray <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// =1,<2C><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>;=0,<2C><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;=-1,<2C><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ.
//˵<><CBB5>:
// <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>2<EFBFBD><32>.
int PointInList(CPoint& point, CPoint* pt, int nArray);
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><>.
//˵<><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><E3B9B2>,<2C><>ôȥ<C3B4><C8A5><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>.
// <20>˺<EFBFBD><CBBA><EFBFBD>Ӧ<EFBFBD>ñ<EFBFBD>֤<EFBFBD><D6A4><EFBFBD>ڵĵ㲻<C4B5><E3B2BB>ͬ,<2C>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>.
void ComboSegment(CList<CPoint,CPoint>& listPoint);
//<2F><>һ<EFBFBD><D2BB><EFBFBD>߶<EFBFBD><DFB6>ϲ<EFBFBD><CFB2><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ<EFBFBD>ĵ<EFBFBD><C4B5>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20>߶<EFBFBD>(ptS,ptE)
// dY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ.
//<2F><><EFBFBD><EFBFBD>:
// dX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>(dX,dY)һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>(ptS,ptE)<29><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><>.
//˵<><CBB5>:
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ƿ<EFBFBD><C7B7>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>(PointInList)ʱ<><CAB1><EFBFBD><EFBFBD>,<2C>ڵ<EFBFBD><DAB5>ô˺<C3B4><CBBA><EFBFBD>֮ǰ<D6AE>Ѿ<EFBFBD><D1BE>ܹ<EFBFBD><DCB9><EFBFBD>֤
// <20><><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶ε<DFB6><CEB5>ӳ<EFBFBD><D3B3><EFBFBD>.
void GetHorizonPoint(CPoint& ptS, CPoint& ptE, double& dY, double& dX);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// <20><><EFBFBD><EFBFBD>ptStart<72><74>ptEnd,ptStart<72><74>ptTemp
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// = 1<><31>ʱ<EFBFBD><CAB1>, = 0<><30><EFBFBD><EFBFBD>, = -1˳ʱ<CBB3><CAB1>
//˵<><CBB5>:
// <20>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptStart<72><74>ptEnd<6E><64>ת<EFBFBD><D7AA>ptStart<72><74>ptTemp<6D><70>˳ʱ<CBB3><EFBFBD><EBBBB9><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת<EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD>180<38><30>,<2C><>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD>.
// <20>˽<EFBFBD><CBBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ,<2C><><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>Ҫȡ<D2AA><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>.
// <20>˽<EFBFBD><CBBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
int CrossProduct(CPoint& ptStart, CPoint& ptEnd, CPoint& ptTemp);
//<2F>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20>߶<EFBFBD>(ptS, ptE),<2C>з<EFBFBD><D0B7><EFBFBD><><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><E3B2BB>ͬ.
// dParam <20><><EFBFBD><EFBFBD>ֵ.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸò<CFB8><C3B2><EFBFBD>ֵ<EFBFBD><D6B5>Ӧ<EFBFBD>ĵ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>: <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// CPoint<6E><74>.
//˵<><CBB5>:
// <20>˺<EFBFBD><CBBA><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʱ<EFBFBD><CAB1><>ӷ<EFBFBD><D3B7><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
CPoint ParamToPoint(CPoint ptS, CPoint ptE, double dParam);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ص<EFBFBD>
BOOL IsOverlapOfTwoPolygon(CList<CPoint,CPoint> &listPolygon1,CList<CPoint,CPoint> &listPolygon2);
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// pt <20><><EFBFBD><EFBFBD>ͷָ<CDB7><D6B8>.
// nListCount <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>Ŀ.
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE,<2C><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>.=FALSE,<2C><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>.
//˵<><CBB5>: <20><>.
BOOL MallocFromList(CList<CPoint,CPoint> &listPoint, CPoint *&pt, int &nListCount);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// ptS,ptE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// ptMiddle <20>е<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ: <20><>.
//˵<><CBB5>:
// <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ.
void GetMiddlePoint(CPoint ptS, CPoint ptE, CPoint &ptMiddle);
CPoint GetMiddlePoint(CPoint ptS, CPoint ptE);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>
CPoint GetMiddlePoint(CList<CPoint,CPoint>& listPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,>0 <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1>(<28><><EFBFBD><EFBFBD>Ļ<EFBFBD>Ͽ<EFBFBD>Ϊ˳ʱ<CBB3><CAB1>)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>
double Area(CList<CPoint,CPoint>& listPoint);
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>(<28><><EFBFBD><EFBFBD>)һ<><D2BB><EFBFBD>߶<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// (ptS,ptE) <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>.
// dLen <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶γ<DFB6><CEB3><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// ptExtend <20>ӳ<EFBFBD>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>β<EFBFBD><CEB2>.
//<2F><><EFBFBD><EFBFBD>ֵ: <20><>.
//˵<><CBB5>:
// <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>ʱptE<74><45>ptExtend<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ(ptS,ptExtend)<29>ij<EFBFBD><C4B3><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
void ExtendSegment(CPoint &ptS, CPoint &ptE, double dLen, CPoint &ptExtend);
CPoint ExtendSegment(CPoint ptS, CPoint ptE, double dLen);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶εĽ<CEB5><C4BD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20>߶<EFBFBD>(ptS0,ptE0),(ptS1,ptE1)
//<2F><><EFBFBD><EFBFBD>:
// ptInt <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><>.
//˵<><CBB5>:
// ÿ<><C3BF><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ͬ.
// <20><><EFBFBD><EFBFBD><EFBFBD>߶β<DFB6>Ӧƽ<D3A6><C6BD>,<2C>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>.
// <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>.<2E><>Ϊ<EFBFBD><CEAA><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵĽ<D3B5><C4BD><EFBFBD>.
void IntPoint(CPoint& ptS0, CPoint& ptE0, CPoint& ptS1, CPoint& ptE1, CPoint& ptInt);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нǵ<D0BD><C7B5><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ.
//<2F><><EFBFBD><EFBFBD>:
// (ptS0,ptE0),(ptS1,ptE1) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// dCos <20>нǵ<D0BD><C7B5><EFBFBD><EFBFBD><EFBFBD>ֵ.
// dSin <20>нǵ<D0BD><C7B5><EFBFBD><EFBFBD><EFBFBD>ֵ.
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE,<2C>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>.=FALSE,<2C><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>.
//˵<><CBB5>:
// ֻ<>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>˻<EFBFBD><CBBB><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>.
// <20>˼н<CBBC><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>.
BOOL RotateAngle(CPoint &ptS0, CPoint &ptE0, CPoint &ptS1, CPoint &ptE1, double &dCos, double &dSin);
//<2F>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>.
// point <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// ptNearest <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// dLen <20><><EFBFBD>̵ľ<CCB5><C4BE><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// TRUE,<2C>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.FALSE,û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//˵<><CBB5>:
// <20><><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>ʱ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ.
BOOL GetNearestPointOnList(CList<CPoint,CPoint> &listPoint, CPoint &point, CPoint &ptNearest, double &dMinLen);
//<2F><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>.
//<2F><><EFBFBD><EFBFBD>:
// alRsc Դ<><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// alDes Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ: <20><>.
//˵<><CBB5>: <20><>.
void AddArrayListTail(CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alRsc, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alDes);
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD>е<EFBFBD><D0B5>߶<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// (ptS,ptE)
// <20>߶<EFBFBD>.һ<><D2BB><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>2<EFBFBD><32><EFBFBD><EFBFBD><E3B2BB><EFBFBD><EFBFBD>ͬ.
// (dStartHeight,dEndHeight)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ƽ<EFBFBD>о<EFBFBD><D0BE><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD>ʱÿ<CAB1><C3BF><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Բ<EFBFBD>ͬ.
// bClockwise
// <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>.=TRUE,˳ʱ<CBB3><CAB1>;=FALSE,<2C><>ʱ<EFBFBD><CAB1><><D7A2>:<3A>˴<EFBFBD><CBB4><EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ"<22><>,<2C><><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>෴.
// (ptParallelS,ptParallelE)
// [<5B><><EFBFBD><EFBFBD>]ƽ<><C6BD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>.
//˵<><CBB5>:
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ.
void ParallelSegment(CPoint ptS, CPoint ptE, double dStartHeight, double dEndHeight, BOOL bClockwise, CPoint& ptParallelS, CPoint& ptParallelE);
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// listPoint
// <20><><EFBFBD><EFBFBD>.
// (dHeadHeight,dTailHeight)
// ͷ<><CDB7><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>ͬ.
// bClockwise
// <20><><EFBFBD><EFBFBD>.ƽ<>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>һ<EFBFBD><D2BB>.=TRUE,˳ʱ<CBB3><CAB1><><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>);=FALSE,<2C><>ʱ<EFBFBD><CAB1><><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ϵ<EFBFBD><CFB5>Ҳ<EFBFBD>).ע<><D7A2>:<3A>˴<EFBFBD><CBB4><EFBFBD>˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ"<22><>,<2C><><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>෴.
// listParallel
// [<5B><><EFBFBD><EFBFBD>]ƽ<><C6BD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// dMaxError
// <20><><EFBFBD><EFBFBD>.<2E>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>պϵ<D5BA>.<2E><><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6><CFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DZպ<C7B1>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// bRemoveIntersect
// =true ȥ<>Խ<EFBFBD>,=false <20><>ȥ<EFBFBD>Խ<EFBFBD>
//˵<><CBB5>:
// <20>ڵ<EFBFBD><DAB5>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ.
void ParalllelCurve(CList<CPoint,CPoint>& listPoint, double dHeadHeight, double dTailHeight, BOOL bClockwise, CList<CPoint,CPoint>& listParallel, double dMaxError = 0.0, BOOL bRemoveIntersect = TRUE);
//ȥ<><C8A5><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// listPoint
// [<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD>.
// bClose
// <20><>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>պϵ<D5BA>.
//˵<><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD>DZպϵ<D5BA><CFB5><EFBFBD><EFBFBD><EFBFBD>,<2C><>ô<EFBFBD><C3B4><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͷ<EFBFBD>㵽β<E3B5BD><CEB2><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>.
void RemoveIntersectPolyline(CList<CPoint,CPoint>& listPoint, BOOL bClose);
//<2F><>ȡ<EFBFBD>߽<EFBFBD><DFBD>ڲ<EFBFBD><DAB2>ĵ<EFBFBD><C4B5><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listPoint
// <20><><EFBFBD><EFBFBD>.
// listBorder
// <20>߽<EFBFBD>.ͷβ<CDB7><CEB2><EFBFBD><EFBFBD>ͬҲ<CDAC><D2B2><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ͬҲ<CDAC><D2B2><EFBFBD><EFBFBD>.
// arrayList
// [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD><DCB1>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD>.
void GetListInBorder(int iDPMM,CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listBorder, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& arrayList);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>Ƶ<EFBFBD><C6B5><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// (listPoint1,listCtrl1)
// ʵ<>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ŀ<EFBFBD><C4BF>Ƶ<EFBFBD><C6B5><EFBFBD>
// listPoint2
// ʵ<>ʵ<EFBFBD><CAB5><EFBFBD>
// listCtrl2
// [<5B><><EFBFBD><EFBFBD>]listPoint2<74><32>Ӧ<EFBFBD>Ŀ<EFBFBD><C4BF>Ƶ<EFBFBD><C6B5><EFBFBD>,<2C><><EFBFBD>е<EFBFBD><D0B5><EFBFBD>Ŀ<EFBFBD><C4BF>listCtrl1<6C><31>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵı<CFB5><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
void GetProportionCtrlList(int iDPMM,CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listCtrl1, CList<CPoint,CPoint>& listPoint2, CList<CPoint,CPoint>& listCtrl2);
//<2F><>timeStart<72><74>timeFinish<73><68>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iMillisecondsStart <20><>ʼ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>
// iMillisecondsFinish <20><><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><>λ:<3A><>
double Duration(int iMillisecondsStart,int iMillisecondsFinish);
//<2F><><EFBFBD>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// listPoint
// <20><><EFBFBD><EFBFBD><><D2AA>֤<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// alCurve
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int FindListIndex(CList<CPoint,CPoint>& listPoint, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCurve);
//<2F><><EFBFBD><EFBFBD><E3B4B9><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6>ϵIJ<CFB5><C4B2><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>:
// (ptS,ptE)
// <20>߶<EFBFBD><><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3B2BB>ͬ,<2C><><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>DBL_MAX
// point
// <20><>
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>ֵ,<2C><>[0,1]<5D><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6>ڲ<EFBFBD>
double GetVerticalParam(CPoint ptS, CPoint ptE, CPoint point);
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// iDPMM
// <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listCurve
// <20><><EFBFBD><EFBFBD>
// (iDashedLength,iSpaceLength)
// <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>(ÿһ<C3BF>οɼ<CEBF><C9BC><EFBFBD><EFBFBD>ֵij<D6B5><C4B3><EFBFBD>),<2C><>϶<EFBFBD><CFB6><EFBFBD><EFBFBD>(ÿһ<C3BF>β<EFBFBD><CEB2>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ֵij<D6B5><C4B3><EFBFBD>),ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// alCurve
// [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>մ<EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>˳<EFBFBD><CBB3>,<2C>ֶα<D6B6><CEB1><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ֵĵ<D6B5><C4B5><EFBFBD>
void CustomizeDashedLine(int iDPMM, CList<CPoint,CPoint>& listCurve, int iDashedLength, int iSpaceLength, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCurve);
//<2F><><EFBFBD><EFBFBD><E3BDA5><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// listCurve <20><><EFBFBD><EFBFBD>
// iDashedLength <20><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>
// iSpaceLength <20>հ׳<D5B0><D7B3><EFBFBD>
// iDashGradualType <20><><EFBFBD>߳<EFBFBD><DFB3>ȵĽ<C8B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =0 <20><>, =1 <20><><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>, =2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iDashGradualLength <20><><EFBFBD>߳<EFBFBD><DFB3>ȵĽ<C8B5><C4BD><EFBFBD><E4B3A4>,<2C><>һ<C7B0>εĻ<CEB5><C4BB>߳<EFBFBD><DFB3>ȼ<EFBFBD><C8BC>ϸ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ں<EFBFBD>һ<EFBFBD>εĻ<CEB5><C4BB>߳<EFBFBD><DFB3><EFBFBD>
// dDashGradualScale <20><><EFBFBD>߳<EFBFBD><DFB3>ȵĽ<C8B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>һ<C7B0>εĻ<CEB5><C4BB>߳<EFBFBD><DFB3>ȳ<EFBFBD><C8B3>Ը<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ں<EFBFBD>һ<EFBFBD>εĻ<CEB5><C4BB>߳<EFBFBD><DFB3><EFBFBD>
// iSpaceGradualType <20>հ׳<D5B0><D7B3>ȵĽ<C8B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, =0 <20><>, =1 <20><><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>, =2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iSpaceGradualLength <20>հ׳<D5B0><D7B3>ȵĽ<C8B5><C4BD><EFBFBD><E4B3A4>,<2C><>һ<C7B0>εĿհ׳<D5B0><D7B3>ȼ<EFBFBD><C8BC>ϸ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ں<EFBFBD>һ<EFBFBD>εĿհ׳<D5B0><D7B3><EFBFBD>
// dSpaceGradualScale <20>հ׳<D5B0><D7B3>ȵĽ<C8B5><C4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>һ<C7B0>εĿհ׳<D5B0><D7B3>ȳ<EFBFBD><C8B3>Ը<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ں<EFBFBD>һ<EFBFBD>εĿհ׳<D5B0><D7B3><EFBFBD>
// bAdaptiveStretch =TRUE <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>, =FALSE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// alCurve [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>մ<EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>˳<EFBFBD><CBB3>,<2C>ֶα<D6B6><CEB1><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ֵĵ<D6B5><C4B5><EFBFBD>
void CustomizeGradualDashedLine(int iDPMM, CList<CPoint,CPoint>& listCurve, int iDashedLength, int iSpaceLength,
int iDashGradualType, int iDashGradualLength, double dDashGradualScale,
int iSpaceGradualType, int iSpaceGradualLength, double dSpaceGradualScale,
BOOL bAdaptiveStretch, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCurve);
//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>뾶,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// listCurve
// <20><><EFBFBD><EFBFBD>
// (iRadius,iSpaceLength,dMaxError)
// <20>뾶,Բ<>ľ<EFBFBD>(<28><><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD>),<2C><><EFBFBD><EFBFBD>Բ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ijһ<C4B3><D2BB>ֵΪ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
// alPolygon
// [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>մ<EFBFBD>ͷ<EFBFBD><CDB7>β<EFBFBD><CEB2>˳<EFBFBD><CBB3>,<2C>ֶα<D6B6><CEB1><EFBFBD>Բ<EFBFBD><D4B2>ʵ<EFBFBD><CAB5>λ<EFBFBD><CEBB>
void CustomizeCircleCurve(CList<CPoint,CPoint>& listCurve, int iRadius, int iSpaceLength, double dMaxError, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alPolygon);
//<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>߻<EFBFBD><DFBB>߱պ<DFB1><D5BA><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>:
// listCurve <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// alCustomCurveElement <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>
// bClose =TRUE <20>պ<EFBFBD><D5BA><EFBFBD>, =FALSE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptCustomBasePoint <20><>׼<EFBFBD><D7BC>
// iCustomCurveHeight <20>߶<EFBFBD>,<2C><><=0<><30>ʹ<EFBFBD><CAB9>alCustomCurveElement<6E><74><EFBFBD><EFBFBD><EFBFBD>ĸ߶<C4B8>
// iCustomCurveGap <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>صļ<D8B5><C4BC><EFBFBD>,<2C><><0,<2C><><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>alCustomCurveElement<6E><74><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
// bAdaptiveStretch =TRUE <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD>ı<EFBFBD>Ԫ<EFBFBD>صĿ<D8B5><C4BF>Ⱥ͸߶<CDB8>,ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ԫ<EFBFBD>صĽ<D8B5><C4BD><EFBFBD>), =FALSE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ԫ<EFBFBD><D4AA>)
//<2F><><EFBFBD><EFBFBD>:
// alCurve <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
void CustomizeCurve(CList<CPoint,CPoint>& listCurve, BOOL bClose, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCustomCurveElement, CPoint ptCustomBasePoint,
int iCustomCurveHeight, int iCustomCurveGap, BOOL bAdaptiveStretch, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCurve);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listPoint <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ϵͳ<CFB5>м<EFBFBD><D0BC><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA><EFBFBD>ַ<EFBFBD>ʽ
CRect GetBorderMinRect(CList<CPoint, CPoint> &listPoint);
//<2F><><EFBFBD><EFBFBD>ʡɽ<CAA1><C9BD><EFBFBD>޸ı<DEB8><C4B1><EFBFBD><EFBFBD><EFBFBD>״
//<2F><><EFBFBD><EFBFBD>:
// listPoint1E,listPoint3E
// [<5B><><EFBFBD><EFBFBD>]<5D><>Ӧ<EFBFBD><D3A6>V<EFBFBD><56>ʡ<EFBFBD><CAA1>1E<31>ߺ<EFBFBD>3E<33><45>,<2C><><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD>׶<EFBFBD><D7B6>ʡ,<2C><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>14<31>ߺ<EFBFBD>35<33><35>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽʱҲ<CAB1><D2B2>ͬ<EFBFBD><CDAC><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
// <20><><EFBFBD><EFBFBD>ʱҪ<CAB1><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// ͬʱ,<2C><>Ҫ<EFBFBD><D2AA>֤<EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>1->3<><EFBFBD><E3B3A4>С<EFBFBD><D0A1>3->1<><EFBFBD><E3B3A4>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// [<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>֤ͷ<D6A4><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>
// listPoint2E
// <20><><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʹ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>Գƺ<D4B3><C6BA><EFBFBD>ʡɽ<CAA1>ض<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD>м<EFBFBD><D0BC><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
// listBorder
// [<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>]<5D><><EFBFBD>ߵ<EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><><D2AA>ͷβ<CDB7><CEB2><EFBFBD><EFBFBD>ͬ;<3B><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ʡɽ<CAA1><C9BD><EFBFBD><EFBFBD>״<EFBFBD><D7B4><EFBFBD>ӽ<EFBFBD>ȥ
// bClockwise
// =TRUE ˳ʱ<CBB3><EFBFBD><EBB5B9>(<28>Ӿ<EFBFBD><D3BE>ϵ<EFBFBD>˳ʱ<CBB3><CAB1>),<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GetNext
// dMaxError
// <20>ж<EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD>Ƿ<EFBFBD><C7B7>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڸ<EFBFBD>ֵͬ<D6B5><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE
// ptDartHill
// [<5B><><EFBFBD><EFBFBD>]ʡɽ<CAA1>ļ<EFBFBD><C4BC><EFBFBD>λ<EFBFBD><CEBB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>ʡɽ<CAA1><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>Dz<EFBFBD>֪<EFBFBD><D6AA>ʡɽ<CAA1><C9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>״(<28><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ҳ<EFBFBD>ǵ<EFBFBD><C7B5>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><C9BD>)
BOOL CalculateDartHill(int iDPMM, CList<CPoint,CPoint>& listPoint1E, CList<CPoint,CPoint>& listPoint3E, CList<CPoint,CPoint>& listPoint2E, CList<CPoint,CPoint>& listBorder, BOOL bClockwise, double dMaxError, CPoint& ptDartHill);
//<2F><><EFBFBD><EFBFBD><E3B9A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD>޸ı<DEB8><C4B1><EFBFBD><EFBFBD><EFBFBD>״
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʡ<EFBFBD><CAA1>ͬ,<2C><><EFBFBD><EFBFBD>CalculateDartHill<6C><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>޵Ĺ<DEB5><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// <20><><EFBFBD><EFBFBD>CalculateDartHill<6C><6C><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>˵<EFBFBD><CBB5><><D7A2>:<3A><><EFBFBD><EFBFBD><EFBFBD>޲<EFBFBD><DEB2><EFBFBD><E6BCB0><EFBFBD><EFBFBD>
BOOL CalculatePleatHill(int iDPMM, CList<CPoint,CPoint>& listPoint12, CList<CPoint,CPoint>& listPoint34, CList<CPoint,CPoint>& listBorder, double dMaxError);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1> p0p1<70><31><EFBFBD>򣬵<EFBFBD>p0<70><30><EFBFBD><EFBFBD>Ϊ dDistance <20>ĵ<EFBFBD>
CPoint GetPointOnLine(CPoint p0,CPoint p1,double dDistance);
//20170222 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listPoint1,listPoint2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] ptInt<6E><74><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] iIntIndex <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, -1<><31><EFBFBD><EFBFBD> GetIntPointOfTwoCurve( int iDPMM, CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listPoint2, CPoint& ptInt, int iCount)<29><><EFBFBD><EFBFBD>
// 0, 1,2...<2E><><EFBFBD><EFBFBD>listPoint1,listPoint2<74><32><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><E3A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BDBB><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><E0BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ұ<EFBFBD><D2B0><EFBFBD>listPoint1<74>ĵ<EFBFBD><C4B5><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>]iCount <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֮<EFBFBD><D6AE><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>
// =FALSE <20><><EFBFBD><EFBFBD><E2BDBB>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
// <20>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ƽ<EFBFBD>н<EFBFBD><D0BD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ǽ<EFBFBD><C7BD>㲻ͬ<E3B2BB><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĺ<D3B5><C4BA><EFBFBD>
// iIntIndexΪ-1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ԭ<EFBFBD>еĽ<D0B5><C4BD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30> 1<><31>2...ʱ<><CAB1>ʾ<EFBFBD><CABE>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL GetIntPointOfTwoCurve( int iDPMM, CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listPoint2, CPoint& ptInt, int iIntIndex, int iCount);
//20170222 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>(<28><EFBFBD>ģ<EFBFBD> <20>ӳ<EFBFBD><D3B3><EFBFBD><E0BDBB>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listPoint1<74><31><EFBFBD><EFBFBD>
//[20170911 syf]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>>=2<><32>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listPoint1,listPoint2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listInt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĽ<D0B5><C4BD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><E3B0B4>listPoint1<74><31><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>
// =FALSE <20><><EFBFBD><EFBFBD><E2BDBB>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
//<2F>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//1. listPoint1/listPoint2<74><32><EFBFBD>ǷDZպ<C7B1><D5BA><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٰ<EFBFBD><D9B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷβ<CDB7><CEB2><EFBFBD>ֱ<EFBFBD><D6B1>ӳ<EFBFBD>(20170911 syf<79><66><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>>=2<><32>,<2C><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>)
//2. listPoint1/listPoint2һ<32><D2BB><EFBFBD>DZպ<C7B1>,һ<><D2BB><EFBFBD>պ<EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>DZպ<C7B1><D5BA>ߵ<EFBFBD><DFB5>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA>߽<EFBFBD><DFBD><EFBFBD>
//3. listPoint1/listPoint2<74><32><EFBFBD>DZպ<C7B1><D5BA><EFBFBD><EFBFBD><EFBFBD><><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><E3B7B5>
BOOL GetIntPointOfTwoCurve_All( int iDPMM, CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listPoint2, CList<CPoint,CPoint>& listInt);
//20130717 <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listPoint1,listPoint2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] ptInt<6E><74><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>]iCount <20><><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>֮<EFBFBD><D6AE><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽<EFBFBD><CBBD><EFBFBD>
// =FALSE <20><><EFBFBD><EFBFBD><E2BDBB>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
BOOL GetIntPointOfTwoCurve(int iDPMM, CList<CPoint,CPoint>& listPoint1, CList<CPoint,CPoint>& listPoint2, CPoint& ptInt, int iCount);
//20130717 <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] ptStart,ptEnd <20><><EFBFBD><EFBFBD>,<2C>з<EFBFBD><D0B7><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listPoint <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BDBB>,<2C><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ͷβ<CDB7><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] ptInt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôֻ<C3B4><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
// =FALSE <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
BOOL GetExtendInt(int iDPMM, CPoint ptStart, CPoint ptEnd, CList<CPoint,CPoint>& listPoint, CPoint& ptInt);
//20170223<32><33><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] ptStart,ptEnd <20><><EFBFBD><EFBFBD>,<2C>з<EFBFBD><D0B7><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listPoint <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2BDBB>,<2C><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>ͷβ<CDB7><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listInt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
// =FALSE <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
BOOL GetExtendInt(int iDPMM, CPoint ptStart, CPoint ptEnd, CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listInt);
//20130718 <20><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>ȡһ<C8A1><D2BB> 20140427 <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//[<5B><><EFBFBD><EFBFBD>]ptPointS<74><53> ptPointE <20><>ȡ<EFBFBD><C8A1><EFBFBD>ߵ<EFBFBD>ͷβ<CDB7><CEB2>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>]listPoint <20><><EFBFBD><EFBFBD>ʼ<D4AD><CABC><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ֮<C8A1><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listPointMax <20><EFBFBD><EEB3A4><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
// ptPointS<74><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
//<2F><><EFBFBD><EFBFBD>ptPointS<74><53>ptPointE<74><45><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ptPointS<74><53><EFBFBD><EFBFBD>ptPointEֻ<45><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĽ<CFB5><C4BD><EFBFBD><EFBFBD>߷ֳ<DFB7><D6B3><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷβ<CDB7><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>)<29>õ<EFBFBD><C3B5><EFBFBD>Ҫ<EFBFBD><D2AA>
//<2F><><EFBFBD><EFBFBD>ptPointS<74><53>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ptPointS<74><53>ptPointE<74><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ͬ<EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>ֻ<EFBFBD><D6BB>ptPointS<74><53>ptPointE<74><45><EFBFBD><EFBFBD>
//<2F><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>listPointMax
//<2F><><EFBFBD><EFBFBD>ptPointS<74><53> ptPointE<74><45><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>listPoint;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>أ<EFBFBD>listPoint<6E><74><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ϵĵ<CFB5>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ϣ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>listPointͷβ<CDB7><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void GetCurveSegment(int iDPMM, CPoint ptPointS, CPoint ptPointE, CList<CPoint,CPoint>& listPoint, CList<CPoint,CPoint>& listPointMax);
//20130815 XQ <20><><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// (ptUp,ptDown)
// չ<><D5B9>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>
// (iUpWidth,iDownWidth)
// <20><><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>,ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C>κ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD><EFBFBD><EFBFBD>Ϊ0
// bClockWise
// =TRUE,˳ʱ<CBB3><CAB1><EFBFBD><EFBFBD>ת;=FALSE,<2C><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ת.<2E><><EFBFBD><EFBFBD>תΪ<D7AA><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>,<2C><><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ϵ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>
// <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>ʾ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,<2C><>ôչ<C3B4><D5B9><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ptUp->ptDown<77><6E>bClockWise<73><65>һ<EFBFBD><D2BB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
// (ptSpreadUp,ptSpreadDown)
// [<5B><><EFBFBD><EFBFBD><><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9>,<2C><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ptUp,ptDown)ʹ<><CAB9><EFBFBD><EFBFBD>ͬ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>
// bAllowNegativeWidth
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ǿ<>ư<EFBFBD><C6B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>ݽṹ<DDBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>չ<EFBFBD><D5B9>,<2C><><EFBFBD>Ըñ<D4B8><C3B1><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5>false,20180123 syf<79><66><EFBFBD>Ӵ˱<D3B4><CBB1><EFBFBD>)
void CalculateSpreadEndPoint(CPoint ptUp, CPoint ptDown, int iUpWidth, int iDownWidth, BOOL bClockWise, CPoint& ptSpreadUp, CPoint& ptSpreadDown, BOOL bAllowNegativeWidth = FALSE);
//<2F>жϸ<D0B6><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ijһ<C4B3>߶<EFBFBD><DFB6><EFBFBD>)
//<2F><><EFBFBD><EFBFBD>:
// iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>
// listPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE <20><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
BOOL PointInPolyline(int iDPMM, CPoint ptPoint, CList<CPoint,CPoint>& listPoint);
//20160718 XQ <20><><EFBFBD><EFBFBD>listRefPoint<6E><74>listSortPoint<6E><74><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] iDPMM <20><><EFBFBD>ȷֱ<C8B7><D6B1><EFBFBD>(һ<><D2BB><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>λ<EFBFBD><CEBB>Ϊ1/iDPMM<4D><4D><EFBFBD><EFBFBD>)
//[<5B><><EFBFBD><EFBFBD>] listRefPoint <20>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listSortPoint <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
//˵<><CBB5>:
// <20><>listSortPoint<6E>еĵ<D0B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>listRefPoint<6E><74>˳<EFBFBD><CBB3><EFBFBD>ŷ<EFBFBD>,listSortPoint<6E>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD>listRefPoint<6E><74>
void SortIntPoint(int iDPMM, CList<CPoint, CPoint> &listRefPoint, CList<CPoint, CPoint> &listSortPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TYPE
template<class TYPE>
void Swap(TYPE& p1, TYPE& p2)
{
TYPE p3;
p3 = p1;
p1 = p2;
p2 = p3;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<class TYPE>
void Swap(CList<TYPE,TYPE>& list1, CList<TYPE,TYPE>& list2)
{
CList<TYPE,TYPE> list3;
list3.RemoveAll();
list3.AddTail(&list1);
list1.RemoveAll();
list1.AddTail(&list2);
list2.RemoveAll();
list2.AddTail(&list3);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// [<5B><><EFBFBD><EFBFBD>] Value <20><><EFBFBD><EFBFBD>ֵ
// [<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] arrayValue <20><><EFBFBD><EFBFBD>
// [<5B><><EFBFBD><EFBFBD>] iCount <20><><EFBFBD>ݴ<EFBFBD>С
// ˵<><CBB5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ÿ<EFBFBD><C3BF>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ
template<class TYPE>
void SetSameValue(TYPE Value, CArray<TYPE,TYPE> &arrayValue, int iCount)
{
int iIndex;
arrayValue.RemoveAll();
arrayValue.SetSize(iCount);
for (iIndex = 0; iIndex < iCount; iIndex++)
{
arrayValue[iIndex] = Value;
}
}
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// [<5B><><EFBFBD><EFBFBD>] arryValue <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
// =false <20><><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>һ<EFBFBD><D2BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>False, <20><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>True
template<class TYPE>
BOOL IsSameValue(CArray<TYPE,TYPE> &arryValue)
{
BOOL bEqual;
int iIndex, iCount;
TYPE Value;
bEqual = TRUE;
iCount = arryValue.GetSize();
if (iCount == 0)
{
return FALSE;
}
if (iCount == 1)
{
return TRUE;
}
Value = arryValue[0];
for (iIndex = 1; (iIndex < iCount) && bEqual; iIndex++)
{
if (Value != arryValue[iIndex])
{
bEqual = FALSE;
}
}
return bEqual;
}
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
// [<5B><><EFBFBD><EFBFBD>] arryValue1 <20><><EFBFBD><EFBFBD>
// [<5B><><EFBFBD><EFBFBD>] arryValue2 <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Ӧ<EFBFBD><D3A6>ÿ<EFBFBD><C3BF>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
// =false <20><><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>һ<EFBFBD><D2BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<class TYPE>
BOOL IsSameValue(CArray<TYPE,TYPE> &arryValue1, CArray<TYPE,TYPE> &arryValue2)
{
BOOL bEqual;
int iIndex, iCount;
bEqual = TRUE;
if (arryValue1.GetSize() != arryValue2.GetSize())
{
return FALSE;
}
iCount = arryValue1.GetSize();
if (iCount == 0)
{
return TRUE;
}
for (iIndex = 0; (iIndex < iCount) && bEqual; iIndex++)
{
if (arryValue1[iIndex] != arryValue2[iIndex])
{
bEqual = FALSE;
}
}
return bEqual;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// [<5B><><EFBFBD><EFBFBD>] arryValueSrc ԭ<><D4AD><EFBFBD><EFBFBD>
// [<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] arryValueDes Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<class TYPE>
void CopyData(CArray<TYPE,TYPE> &arryValueSrc, CArray<TYPE,TYPE> &arryValueDes)
{
int iIndex, iCount;
arryValueDes.RemoveAll();
iCount = arryValueSrc.GetSize();
for (iIndex = 0; iIndex < iCount; iIndex++)
{
arryValueDes.Add(arryValueSrc[iIndex]);
}
}
//<2F>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// [<5B><><EFBFBD><EFBFBD>] arryValue <20><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>0
template<class TYPE>
TYPE FindMaxCount(CArray<TYPE,TYPE> &arryValue)
{
int iIndex, iCount;
TYPE MaxValue;
iCount = arryValue.GetSize();
if (iCount == 0)
{
return 0;
}
MaxValue = arryValue[0];
for (iIndex = 1; iIndex < iCount; iIndex++)
{
if (MaxValue < arryValue[iIndex])
{
MaxValue = arryValue[iIndex];
}
}
return MaxValue;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// <20>ú<EFBFBD><C3BA><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dAngle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>ĽǶ<C4BD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><EFBFBD><EBB7BD>Ϊ<EFBFBD><CEAA>),<2C><>λ:<3A><>
// ptButtonHoleS <20><>ת<EFBFBD>Ƕ<EFBFBD>Ϊ0ʱ<30>Ŀ<EFBFBD><C4BF><EFBFBD>S<EFBFBD><53>
// ptButtonHoleE <20><>ת<EFBFBD>Ƕ<EFBFBD>Ϊ0ʱ<30>Ŀ<EFBFBD><C4BF><EFBFBD>E<EFBFBD><45>,SE<53><EFBFBD><E3B9B9><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵĿ<CFB5><C4BF>۷<EFBFBD><DBB7><EFBFBD>(һ<><D2BB><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ˮƽ<CBAE><C6BD>)
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>߶<EFBFBD>,m_ptPointS<74><53>ʾ<EFBFBD><CABE><EFBFBD>۵Ķ<DBB5>λλ<CEBB><CEBB>,m_ptPointE<74><45>ʾ<EFBFBD><CABE><EFBFBD>۵ķ<DBB5><C4B7><EFBFBD>
CLineSegment CalculateButtonHolePosition(CPoint ptPoint, double dAngle, CPoint ptButtonHoleS, CPoint ptButtonHoleE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20>ֱ<EFBFBD><D6B1><EFBFBD>
// listCurve <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>
// bClose =true <20>պ<EFBFBD><D5BA><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iLocateType <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>,=0 <20>Ⱦ<EFBFBD>,=1 <20><><EFBFBD>Ⱦ<EFBFBD>
// bNext =true <20><>ptPointH<74><48>GetNext<78>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>,=false <20><>ptPointH<74><48>GetPrev<65>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>
// iGroupCount <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointH ͷ<><CDB7>:<3A>Ⱦ<EFBFBD>ʱ,<2C><>ptPointH~ptPointT<74>ӿ<EFBFBD><D3BF><EFBFBD>,<2C><><EFBFBD>Ⱦ<EFBFBD>ʱ,<2C><>ptPointH<74><48><EFBFBD><EFBFBD>bNext<78><74><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>
// iDistanceH <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointH<74>ľ<EFBFBD><C4BE><EFBFBD>
// ptPointT β<><CEB2>:<3A><><EFBFBD>Ⱦ<EFBFBD>ʱ<EFBFBD><CAB1>Ч
// iDistanceT <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointT<74>ľ<EFBFBD><C4BE><EFBFBD>,<2C><><EFBFBD>Ⱦ<EFBFBD>ʱ<EFBFBD><CAB1>Ч
// bOnFirst =true <20><><EFBFBD><EFBFBD>ptPointH<74><48><EFBFBD><EFBFBD>iDistanceH<65><48><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// bOnLast =true <20><><EFBFBD><EFBFBD>ptPointT<74><54>ǰiDistanceT<65><54><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iSubCount ÿС<C3BF><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD><D7B8><EFBFBD>
// iSubGap ÿ<><C3BF>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
// listGap <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC>ļ<EFBFBD><C4BC><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> > 0 !!!
// [i]<5D>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i-1<><31><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>,<2C>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31> !!!
// <20>ǵȾ<C7B5>,<2C>Ҹ<EFBFBD><D2B8><EFBFBD>>1ʱ<31><CAB1>Ч
// bFixAngle =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳ɹ̶<C9B9><CCB6>Ƕ<EFBFBD>
// dAngle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>ĽǶ<C4BD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><EFBFBD><EBB7BD>Ϊ<EFBFBD><CEAA>),<2C><>λ:<3A><>
// ptButtonHoleS <20><>ת<EFBFBD>Ƕ<EFBFBD>Ϊ0ʱ<30>Ŀ<EFBFBD><C4BF><EFBFBD>S<EFBFBD><53>
// ptButtonHoleE <20><>ת<EFBFBD>Ƕ<EFBFBD>Ϊ0ʱ<30>Ŀ<EFBFBD><C4BF><EFBFBD>E<EFBFBD><45>,SE<53><EFBFBD><E3B9B9><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵĿ<CFB5><C4BF>۷<EFBFBD><DBB7><EFBFBD>(һ<><D2BB><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ˮƽ<CBAE><C6BD>)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// listLineSegment <20>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD>,m_ptPointS<74><53>ʾ<EFBFBD><CABE><EFBFBD>۵Ķ<DBB5>λλ<CEBB><CEBB>,m_ptPointE<74><45>ʾ<EFBFBD><CABE><EFBFBD>۵ķ<DBB5><C4B7><EFBFBD>
void CalculateButtonHolePosition(
int iDPMM, CList<CPoint,CPoint>& listCurve, BOOL bClose, int iLocateType, BOOL bNext, int iGroupCount,
CPoint ptPointH, int iDistanceH, CPoint ptPointT, int iDistanceT, BOOL bOnFirst, BOOL bOnLast,
int iSubCount, int iSubGap, CList<int,int>& listGap, BOOL bFixAngle, double dAngle,
CPoint ptButtonHoleS, CPoint ptButtonHoleE, CLineSegmentList& listLineSegment);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(<28><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20>ֱ<EFBFBD><D6B1><EFBFBD>
// listCurve <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// bClose =true <20>պ<EFBFBD><D5BA><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iOffsetCount <20><><EFBFBD>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʾһ<CABE><D2BB><EFBFBD>м<EFBFBD><D0BC>ſ<EFBFBD><C5BF><EFBFBD>
// bOffsetLeft =true <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ),=false <20>Ҳ<EFBFBD>
// iOffsetDistance <20><>һ<EFBFBD>ſ<EFBFBD><C5BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵļ<DFB5><C4BC><EFBFBD>,<2C><><0<><30>λ<EFBFBD><CEBB>bOffsetLeft<66>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>
// iOffsetGapS <20>ڶ<EFBFBD><DAB6>ſ<EFBFBD><C5BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ſ<EFBFBD><C5BF>۵ļ<DBB5><C4BC><EFBFBD>,<2C><><0<><30>λ<EFBFBD><CEBB>bOffsetLeft<66>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>
// iOffsetGapE <20><><EFBFBD><EFBFBD>һ<EFBFBD>ſ<EFBFBD><C5BF><EFBFBD><EFBFBD><EFBFBD><EBB5B9><EFBFBD>ڶ<EFBFBD><DAB6>ſ<EFBFBD><C5BF>۵ļ<DBB5><C4BC><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>iOffsetGapS<70><53><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
// iLocateType <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>,=0 <20>Ⱦ<EFBFBD>,=1 <20><><EFBFBD>Ⱦ<EFBFBD>
// bNext =true <20><>ptPointH<74><48>GetNext<78>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>,=false <20><>ptPointH<74><48>GetPrev<65>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>
// iGroupCount <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPointH ͷ<><CDB7>:<3A>Ⱦ<EFBFBD>ʱ,<2C><>ptPointH~ptPointT<74>ӿ<EFBFBD><D3BF><EFBFBD>,<2C><><EFBFBD>Ⱦ<EFBFBD>ʱ,<2C><>ptPointH<74><48><EFBFBD><EFBFBD>bNext<78><74><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>
// iDistanceH <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointH<74>ľ<EFBFBD><C4BE><EFBFBD>
// ptPointT β<><CEB2>:<3A><><EFBFBD>Ⱦ<EFBFBD>ʱ<EFBFBD><CAB1>Ч
// iDistanceT <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptPointT<74>ľ<EFBFBD><C4BE><EFBFBD>,<2C><><EFBFBD>Ⱦ<EFBFBD>ʱ<EFBFBD><CAB1>Ч
// bOnFirst =true <20><><EFBFBD><EFBFBD>ptPointH<74><48><EFBFBD><EFBFBD>iDistanceH<65><48><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// bOnLast =true <20><><EFBFBD><EFBFBD>ptPointT<74><54>ǰiDistanceT<65><54><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// iSubCount ÿС<C3BF><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD><D7B8><EFBFBD>
// iSubGap ÿ<><C3BF>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
// listGap <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC>ļ<EFBFBD><C4BC><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> > 0 !!!
// [i]<5D>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i-1<><31><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>,<2C>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31> !!!
// <20>ǵȾ<C7B5>,<2C>Ҹ<EFBFBD><D2B8><EFBFBD>>1ʱ<31><CAB1>Ч
// bFixAngle =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳ɹ̶<C9B9><CCB6>Ƕ<EFBFBD>
// dAngle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>ĽǶ<C4BD>(<28><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʱ<EFBFBD><EFBFBD><EBB7BD>Ϊ<EFBFBD><CEAA>),<2C><>λ:<3A><>
// ptButtonHoleS <20><>ת<EFBFBD>Ƕ<EFBFBD>Ϊ0ʱ<30>Ŀ<EFBFBD><C4BF><EFBFBD>S<EFBFBD><53>
// ptButtonHoleE <20><>ת<EFBFBD>Ƕ<EFBFBD>Ϊ0ʱ<30>Ŀ<EFBFBD><C4BF><EFBFBD>E<EFBFBD><45>,SE<53><EFBFBD><E3B9B9><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵĿ<CFB5><C4BF>۷<EFBFBD><DBB7><EFBFBD>(һ<><D2BB><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ˮƽ<CBAE><C6BD>)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// alLineSegment <20>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>iOffsetCount,m_ptPointS<74><53>ʾ<EFBFBD><CABE><EFBFBD>۵Ķ<DBB5>λλ<CEBB><CEBB>,m_ptPointE<74><45>ʾ<EFBFBD><CABE><EFBFBD>۵ķ<DBB5><C4B7><EFBFBD>
void CalculateButtonHolePosition(
int iDPMM, CList<CPoint,CPoint>& listCurve, BOOL bClose, int iOffsetCount, BOOL bOffsetLeft, int iOffsetDistance, int iOffsetGapS, int iOffsetGapE,
int iLocateType, BOOL bNext, int iGroupCount, CPoint ptPointH, int iDistanceH, CPoint ptPointT, int iDistanceT, BOOL bOnFirst, BOOL bOnLast,
int iSubCount, int iSubGap, CList<int,int>& listGap, BOOL bFixAngle, double dAngle, CPoint ptButtonHoleS, CPoint ptButtonHoleE, CLineSegmentListArray& alLineSegment);
//<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ϵĶ<CFB5>Ӧ<EFBFBD><D3A6>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// iDPMM <20>ֱ<EFBFBD><D6B1><EFBFBD>
// listCurve <20><><EFBFBD>ߵ<EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>
// bClose =true <20>պ<EFBFBD><D5BA><EFBFBD>,=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ptPoint <20><><EFBFBD><EFBFBD>listCurve<76>ϵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD>listCurve<76><65>ͷ<EFBFBD><CDB7>,<2C><>ôֱ<C3B4>ӷ<EFBFBD><D3B7><EFBFBD>listParallel<65><6C>ͷ<EFBFBD><CDB7><><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
// listParallel <20><><EFBFBD><EFBFBD>listCurve<76><65>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptParallel <20><>ptPoint<6E><74>Ӧ<EFBFBD>ĵ<EFBFBD>,<2C><><EFBFBD>ݽ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><E3BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>,=false <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
BOOL CalculateParallelPoint(int iDPMM, CList<CPoint,CPoint>& listCurve, BOOL bClose, CPoint ptPoint, CList<CPoint,CPoint>& listParallel, CPoint& ptParallel);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊͬһ<CDAC><D2BB>
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// (1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>겻ͬ,<2C><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>Ϊͬһ<CDAC><D2BB><EFBFBD><EFBFBD>,dxdyͨ<79><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B3AC>1
// (2)<29>жϱ<D0B6>׼ΪCONST_SAME_POINT_ERROR,<2C><><EFBFBD><EFBFBD><EFBFBD>ú궨<C3BA><EAB6A8><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// (3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ʹ<EFBFBD><CAB9>CONST_SAME_POINT_ERROR<4F><52><EFBFBD>ж<EFBFBD><><D2B2><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// ptPoint1 <20><>1
// ptPoint2 <20><>2
// dSamePointError <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>ֵ,<=<3D><>ֵ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>Ϊ<EFBFBD><CEAA>ͬһ<CDAC><D2BB>
// >0 ֱ<><D6B1>ʹ<EFBFBD>ø<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ж<EFBFBD>
// =0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD>ȵĵ<C8B5><C4B5><EFBFBD><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ʹ<EFBFBD><CAB9> CONST_SAME_POINT_ERROR <20><><EFBFBD>ж<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͬһ<CDAC><D2BB><EFBFBD><EFBFBD>,=false <20><><EFBFBD><EFBFBD>
BOOL PDSIsSamePoint(CPoint ptPoint1, CPoint ptPoint2, double dSamePointError = -1.0);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>״<EFBFBD><D7B4>ͬ
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// (1)<29><>״,ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>ʾЧ<CABE><D0A7>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>޹<EFBFBD>
// (2)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>鶼ת<E9B6BC><D7AA><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>CLineSegment,Ȼ<><C8BB><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6>Ƿ<EFBFBD><C7B7><EFBFBD>ȫ<EFBFBD>غ<EFBFBD>
// (3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>/<2F><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>Ƿ<EFBFBD>Ϊͬһ<CDAC><D2BB>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// alCurve1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
// alCurve2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20><>״<EFBFBD><D7B4>ͬ,=false <20><>״<EFBFBD><D7B4>ͬ
BOOL PDSIsSameShape(CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCurve1, CArray<CList<CPoint,CPoint>,CList<CPoint,CPoint> >& alCurve2);
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>ΨһID
//<2F>ر<EFBFBD>˵<EFBFBD><CBB5>:
// https://blog.csdn.net/dpsying/article/details/21415811
//<2F><><EFBFBD><EFBFBD>ֵ:
// ΨһID,<2C>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=38,<2C><><EFBFBD><EFBFBD>{77046E66-C274-42CE-85AD-5DCFA5B4D2A5}
CString PDSCreateGUID(void);
#endif