PlotterHMI/datafile/dxf/dxflib/DxfMath.h

215 lines
7.3 KiB
C
Raw Normal View History

#if !defined(DxfMath_h)
#define DxfMath_h
#include <math.h>
#include <afxwin.h>
#include <afxtempl.h>
#include "GroupCode.h"
#define CONST_PI 3.14159265359
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// (dX,dY)<29><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,(dXO,dYO)<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>:
// (dXNew,dYNew)<29><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ֵ
void PointRotate_D(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>:
// pdPoint<6E><74><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>,pdPointO<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>:
// pdPoint<6E><74>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ֵ
void PointRotate(CPointData &pdPoint,CPointData pdPointO,double dSinBeta,double dCosBeta);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ
// dLength <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD>ֵ
double TwoPointLength(CPointData pdPoint1,CPointData pdPoint2);
//<2F><>ʸ<EFBFBD><CAB8>pdPointS1<53><31>pdPointE1<45><31>ʱ<EFBFBD><EFBFBD><EBB7BD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ʸ<EFBFBD><CAB8>pdPointS2<53><32>pdPointE2<45>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļн<C4BC>,<2C><>[0,2pi)֮<><D6AE>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
// pdPointS1,pdPointE1 ʸ<><CAB8>pdPointS1<53><31>pdPointE1
// pdPointS2,pdPointE2 ʸ<><CAB8>pdPointS2<53><32>pdPointE2
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20>н<EFBFBD>
double angle_2(CPointData pdPointS1,CPointData pdPointE1,CPointData pdPointS2,CPointData pdPointE2);
//<2F>õ<EFBFBD>pdPoint1<74><31>pdPoint2<74><32><EFBFBD>м<EFBFBD><D0BC><EFBFBD> pdMiddle
void GetMiddlePoint(CPointData pdPoint1, CPointData pdPoint2, CPointData &pdMiddle);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1> pdPoint0, pdPoint1<74><31><EFBFBD>򣬵<EFBFBD>pdPoint0<74><30><EFBFBD><EFBFBD>Ϊ dDistance <20>ĵ<EFBFBD>
CPointData GetPointOnLine(CPointData pdPoint0, CPointData pdPoint1, double dLength);
int IntTrans(double x);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>:
// listPoint <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>.
//˵<><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>.
double Area(CPointDataList& listPoint);
//<2F><><EFBFBD><EFBFBD>point<6E><74><EFBFBD>߶<EFBFBD>ptS<74><53>ptE<74>ϵIJ<CFB5><C4B2><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>:
// point <20><>.
// (ptS,ptE) <20>߶<EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// [0,1]<5D><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>,<2C><><EFBFBD>Ҿ<EFBFBD><D2BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>;<3B><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>߶ε<DFB6><CEB5>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD>.
//˵<><CBB5>:
// <20>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵㲻Ӧ<E3B2BB><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>,<2C>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>.
double PointToParam(CPointData& point, CPointData& ptS, CPointData& ptE);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD>һ<E3B5BD><D2BB><EFBFBD>߶εĴ<CEB5><C4B4><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20>߶<EFBFBD>(ptS,ptE)
// ptRes <20><>.
//<2F><><EFBFBD><EFBFBD>:
// ptDes <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><>.
//˵<><CBB5>:
// <20><><EFBFBD><EFBFBD><EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵㲻Ӧ<E3B2BB><D3A6><EFBFBD><EFBFBD>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㸳ֵ<E3B8B3><D6B5>ͬ.
// <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>.
void GetVerticalPoint(CPointData& ptS, CPointData& ptE, CPointData& ptRes, CPointData& ptDes);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD><DFB6>Ƿ<EFBFBD>ƽ<EFBFBD><C6BD>
//<2F><><EFBFBD><EFBFBD>:
// <20>߶<EFBFBD>(ptS0,ptE0),(ptS1,ptE1)
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// =TRUE,<2C><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>;=FALSE,<2C><><EFBFBD>߲<EFBFBD>ƽ<EFBFBD><C6BD>.
//˵<><CBB5>:
// ÿ<><C3BF><EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>˵㶼<CBB5><E3B6BC>Ӧ<EFBFBD><D3A6>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>.
BOOL IsParallel(CPointData& ptS0, CPointData& ptE0, CPointData& ptS1, CPointData& ptE1);
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>һ<E3B5BD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// point <20><>.
// listPoint <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD>:
// <20><>.
//<2F><><EFBFBD><EFBFBD>ֵ:
// <20><><EFBFBD><EFBFBD>.<2E><EFBFBD><E3B5BD><EFBFBD>߶ξ<DFB6><CEBE><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>Сֵ.
//˵<><CBB5>:
double DistanceFromPointToList(CPointData& point, CPointDataList& listPoint);
//<2F><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dAngleS Բ<><D4B2><EFBFBD><EFBFBD>ʼ<EFBFBD>Ƕ<EFBFBD> <20>ο<EFBFBD>ˮƽ
// dAngleE Բ<><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD> <20>ο<EFBFBD>ˮƽ
// PDCenter Բ<><D4B2>
// dRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listCtrlPoint Բ<>Ŀ<EFBFBD><C4BF>Ƶ<EFBFBD>
void CalculateArcPoint(double dAngleS, double dAngleE, CPointData PDCenter, double dRadius, CPointDataList &listCtrlPoint);
//<2F><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// PDCenter Բ<><D4B2>
// dRadius <20>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listCtrlPoint Բ<>Ŀ<EFBFBD><C4BF>Ƶ<EFBFBD>
void CalculateCirclePoint(CPointData PDCenter, double dRadius, CPointDataList &listCtrlPoint);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// dAngleS<65><53> dAngleE <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD> <20><><EFBFBD><EFBFBD>dAngleS<65><53>dAngleEΪ360<36>ȣ<EFBFBD><C8A3><EFBFBD>ʾΪ<CABE><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ dAngleE > dAngleS ˳<><CBB3><EFBFBD><EFBFBD><EBA3AC>֮Ϊ<D6AE><CEAA>ʱ<EFBFBD><CAB1>
// PDCenter <20><>Բ<EFBFBD><D4B2><EFBFBD>ĵ<EFBFBD>
// PDAxis <20><>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>˵㣨<CBB5><E3A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ㣩
// dProportion //<2F><><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listCtrlPoint <20><><EFBFBD>Ƶ<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>Ч<EFBFBD><D0A7>=true <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>=false <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ
BOOL CaculateEllipse(double dAngleS, double dAngleE, CPointData PDCenter, CPointData PDAxis, double dProportion, CPointDataList &listCtrlPoint);
//ɾ<><C9BE><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD><EFBFBD>, Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>бպ<D0B1><D5BA><EFBFBD><EFBFBD><EFBFBD>
void DeleteSameCurve(CCurveNotchInforList &listAllCurveInfor);
//ɾ<><C9BE><EFBFBD><EFBFBD>CurveInfor<6F>غ<EFBFBD>(<28><>ȫ<EFBFBD>غ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] CurveInfor <20><><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>غϵ<D8BA><CFB5><EFBFBD><EFBFBD>߱<EFBFBD>ɾ<EFBFBD><C9BE>
void FindSameCurveAndDelete(CCurveNotchInfor &CurveInfor, CCurveNotchInforList &listAllCurveInfor);
//<2F>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0><EFBFBD><EFBFBD><EFBFBD>бպ<D0B1><D5BA><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱû<CAB1><C3BB>listAllCloseCurve<76>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listAllCloseCurve <20><><EFBFBD>еıպ<C4B1><D5BA><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] iFileType <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> =0 AutoCAD<41>ļ<EFBFBD> <20><>=1 AAMA/ASTM/TIIP
void GetAllCloseCurve(CCurveNotchInforList &listAllCurveInfor, CCloseCurveInforList &listAllCloseCurve, int iFileType);
//<2F>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ұպϵ<D5BA><CFB5><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱû<CAB1><C3BB>CloseCurveInfo<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] CloseCurveInfo <20>պϵ<D5BA><CFB5><EFBFBD> <20><><EFBFBD><EFBFBD>ֵΪtrue<75><65>Ч
//[<5B><><EFBFBD><EFBFBD>] CurveInforFirst <20><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>պ<EFBFBD><D5BA><EFBFBD><EFBFBD>ߵĿ<DFB5>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪfalse<73><65>Ч
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20>ҵ<EFBFBD><D2B5><EFBFBD>=falseû<65><C3BB><EFBFBD>ҵ<EFBFBD>
BOOL GetCloseCurve(CCurveNotchInforList &listAllCurveInfor, CCloseCurveInfor &CloseCurveInfo, CCurveNotchInfor &CurveInforFirst);
//<2F>ҿ<EFBFBD><D2BF>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>MaxCtrlCurveInfor
//[<5B><><EFBFBD><EFBFBD>] MaxCtrlCurveInfor <20><><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>
void FindCtrlMaxCount(CCurveNotchInforList &listAllCurveInfor, CCurveNotchInfor &MaxCtrlCurveInfor);
//Ѱ<>ҿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>,<2C>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>
void FindStartCurve(CCurveNotchInforList &listAllCurveInfor, CCurveNotchInfor &StartCtrlCurveInfor);
//Ѱ<>ҶԽӵ<D4BD><D3B5><EFBFBD>һ<EFBFBD><D2BB>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>CurveInforNext
//[<5B><><EFBFBD><EFBFBD>] listRefCurveInfor <20>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>γɵ<CEB3><C9B5><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] JointPointData <20>Խӵ<D4BD>
//[<5B><><EFBFBD><EFBFBD>] dSamePointDistance <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] CurveInforNext <20>ҵ<EFBFBD><D2B5>ĶԽ<C4B6><D4BD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] bHead=true<75><65>ʾCurveInforNext<78><74>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
// =true <20>ҵ<EFBFBD><D2B5><EFBFBD>=false û<><C3BB><EFBFBD>ҵ<EFBFBD>
BOOL FindJointPoint(CCurveNotchInforList &listAllCurveInfor, CCurveNotchInforList &listRefCurveInfor, CPointData JointPointData, double dSamePointDistance, CCurveNotchInfor &CurveInforNext, BOOL &bHead);
//20200226 <20>ж<EFBFBD>CurveInfor<6F><72>listRefCurveInfor<6F>Ƿ<EFBFBD><C7B7>ص<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// listRefCurveInfor <20>ο<EFBFBD><CEBF>߶<EFBFBD>
// CurveInfor <20>ж<EFBFBD><D0B6>߶<EFBFBD>
//<2F><><EFBFBD><EFBFBD>ֵ:
// =true <20>ص<EFBFBD><D8B5><EFBFBD> =false <20><><EFBFBD>ص<EFBFBD>
BOOL OverlapList(CCurveNotchInforList &listRefCurveInfor, CCurveNotchInfor CurveInfor);
//<2F>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>ͷ/β<><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD>е<EFBFBD><D0B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>listSamCurveInfor
//[<5B><><EFBFBD><EFBFBD>] RefPointData <20>ο<EFBFBD><CEBF><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] dSamePointDistance <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listSameCurveInfor<6F><72>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>
void FindSamePoint(CCurveNotchInforList &listAllCurveInfor, CPointData &RefPointData, double dSamePointDistance, CCurveNotchInforList &listSameCurveInfor);
//<2F>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĸ<D0B5><C4B8><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllCurveInfor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱû<CAB1><C3BB>listAssistantCurve<76>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listCloseCurveInfor <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱû<CAB1><C3BB>listAssistantCurve<76>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listBorder <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listAssistantCurve <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FindPatternAssistanceCurve(CCurveNotchInforList &listAllCurveInfor, CCloseCurveInforList &listCloseCurveInfor, CList<CPoint, CPoint> &listBorder, CCurveNotchInforList &listAssistantCurve);
//<2F>Ҹ<EFBFBD><D2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ַ<EFBFBD><D6B7><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listAllTextData <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD> <20><><EFBFBD><EFBFBD>ʱû<CAB1><C3BB>listText<78>е<EFBFBD><D0B5>ַ<EFBFBD><D6B7><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listBorder <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listText <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FindPatternText(CTextDataList &listAllTextData, CList<CPoint, CPoint> &listBorder, CTextDataList &listText);
//<2F>Ҹ<EFBFBD><D2B8><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>еĵ<D0B5>
//[<5B><><EFBFBD><EFBFBD>][<5B><><EFBFBD><EFBFBD>] listPointData <20><><EFBFBD>е<EFBFBD> <20><><EFBFBD><EFBFBD>ʱû<CAB1><C3BB><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>е<EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listBorder<65><72><EFBFBD><EFBFBD>
//[<5B><><EFBFBD><EFBFBD>] listAssistantPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FindPatternPoint(CPointDataList &listPointData, CList<CPoint, CPoint> &listBorder, CCurveNotchInforList &listAssistantPoint);
#endif