|
|
|
|
|
/**************************************************************************************
|
|
|
|
|
|
<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BaseFunction.h
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F>ռ<EFBFBD><D5BC>㵽<EFBFBD>ռ<EFBFBD><D5BC>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD>
|
|
|
|
|
|
double PointSegmentDistance3D(double x0, double y0, double z0, double x1, double y1,double z1, double x2, double y2, double z2);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A(x1,y1),B(x2,y2)<29>ĵ<EFBFBD><C4B5><EFBFBD>(<28>ڻ<EFBFBD>)
|
|
|
|
|
|
double DotProduct(double x1,double y1,double x2,double y2);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A(x1,y1),B(x2,y2)<29>IJ<EFBFBD><C4B2><EFBFBD>(<28><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
double CrossProduct(double x1, double y1, double x2, double y2);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߱߳<DFB1><DFB3>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double TriArea(double a, double b, double c);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A(x1,y1) B(x2,y2) C(x3,y3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>Ľ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AC<41>߽<EFBFBD><DFBD><EFBFBD>(x0,y0)<29><><EFBFBD><EFBFBD>ABC<42><43><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
bool GetAngularBisector(double x1, double y1, double x2, double y2, double x3, double y3, double& x0, double& y0);
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>(x1,y1)-(x2,y2) ,(x3,y3)-(x4,y4)<29>Ƿ<EFBFBD><C7B7>ཻ,<2C><><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><><EFBFBD>ཻ<EFBFBD><E0BDBB> <20><><EFBFBD><EFBFBD>2 <20><><EFBFBD><EFBFBD><EFBFBD>ཻ
|
|
|
|
|
|
int IsSegmentCross(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>,k1,k2Ϊ<32><CEAA><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵ<EFBFBD>б<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>kֵ > 1e10 <20><>ʾ<EFBFBD><CABE>ֱ<EFBFBD><D6B1>x<EFBFBD><78> <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><EFBFBD><DEBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
|
|
|
|
|
|
int LineCrossPoint(double x1,double y1, double k1, double x2,double y2, double k2, double& x0, double& y0 );
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> --- wangcw
|
|
|
|
|
|
bool Smooth53(double* val, int n, int stimes = 100);
|
|
|
|
|
|
//<2F><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>걣<EFBFBD><EAB1A3><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>x<EFBFBD><78>y<EFBFBD><79>
|
|
|
|
|
|
int GetOutline(int num, double *x, double *y);
|
|
|
|
|
|
// <20>õ<EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>㼯p<E3BCAF><70>СΪn<CEAA><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<CEAA><CDB9><EFBFBD><EFBFBD>С,<><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>convex<65><78>
|
|
|
|
|
|
int GetConvexHull(int n, CPoint2D* s_points,CPoint2D* convex, int maxsize = 1, int dir = 1 );
|
|
|
|
|
|
//x1,y1,x2,y2,x3,y3Ϊ<33><CEAA><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬x,y,r<>з<EFBFBD><D0B7>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>꼰<EFBFBD>뾶
|
|
|
|
|
|
BOOL GetCircumcenter(double &x, double &y, double &r,
|
|
|
|
|
|
double x1, double y1,
|
|
|
|
|
|
double x2, double y2,
|
|
|
|
|
|
double x3, double y3);
|
|
|
|
|
|
|
|
|
|
|
|
**************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#ifndef AFX_EXT_CLASS
|
|
|
|
|
|
#define AFX_EXT_CLASS Q_DECL_IMPORT
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#include "math.h"
|
|
|
|
|
|
#include "Point2D.h"
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
//
|
|
|
|
|
|
#ifndef PI
|
|
|
|
|
|
#define PI 3.1415926535897932384626433832795
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef RHO
|
|
|
|
|
|
#define RHO 57.295779513082320876798154814114 //(180.0/PI)
|
|
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef _QT_VERSION
|
|
|
|
|
|
//
|
|
|
|
|
|
// Code Page Default Values.
|
|
|
|
|
|
//
|
|
|
|
|
|
#define CP_ACP 0 // default to ANSI code page
|
|
|
|
|
|
#define CP_OEMCP 1 // default to OEM code page
|
|
|
|
|
|
#define CP_MACCP 2 // default to MAC code page
|
|
|
|
|
|
#define CP_THREAD_ACP 3 // current thread's ANSI code page
|
|
|
|
|
|
#define CP_SYMBOL 42 // SYMBOL translations
|
|
|
|
|
|
|
|
|
|
|
|
#define CP_UTF7 65000 // UTF-7 translation
|
|
|
|
|
|
#define CP_UTF8 65001 // UTF-8 translation
|
|
|
|
|
|
|
|
|
|
|
|
#endif //_QT_VERSION
|
|
|
|
|
|
namespace GBase
|
|
|
|
|
|
{
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|
|
|
|
|
#define CODE_GB2312 0x00000000 //gb2312<31><32><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define CODE_UTF8 0x00000001 //utf-8<><38><EFBFBD><EFBFBD>
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CBaseFunction
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CBaseFunction(void);
|
|
|
|
|
|
virtual ~CBaseFunction(void);
|
|
|
|
|
|
|
|
|
|
|
|
//˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
|
|
|
void FloatToString(CString& result, double dValue);
|
|
|
|
|
|
void FloatToString(CString& result, double dValue, int n);
|
|
|
|
|
|
void FloatToString(char* result, double dValue);
|
|
|
|
|
|
void FloatToString(char *result, double dValue, int n);
|
|
|
|
|
|
CString FloatToString(double dValue); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_tempLine<6E>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GetTempString()<29><><EFBFBD><EFBFBD>
|
|
|
|
|
|
CString FloatToString(double dValue, int n);
|
|
|
|
|
|
CString ToString(double dValue, int n = 6);
|
|
|
|
|
|
|
|
|
|
|
|
CString Bool2Str(bool boolVal);
|
|
|
|
|
|
CString Bool2Str(BOOL boolVal);
|
|
|
|
|
|
|
|
|
|
|
|
long FloatToLong(double value);
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鵽<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>У<EFBFBD><D0A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ȱʡ<C8B1>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void PrintXYZ(char* string, double *v, int num, int digits, char split = ',');
|
|
|
|
|
|
//void PrintXYZ(CString& result, double *v, int num, int digits, char split=',');
|
|
|
|
|
|
void PrintXYZ(char* result, double *v, int num, char split = ',');
|
|
|
|
|
|
//void PrintXYZ(CString& result, double *v, int num, char split=',');
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
void SetDecimalDigits(int digits);
|
|
|
|
|
|
int GetDecimalDigits(void);
|
|
|
|
|
|
|
|
|
|
|
|
int IsDigit(CString &line);
|
|
|
|
|
|
int IsDigit(char* line);
|
|
|
|
|
|
|
|
|
|
|
|
bool IsKey(const CString& key, LPCTSTR lpszKeyString);
|
|
|
|
|
|
bool IsZero(const double& val); //<2F>ж<EFBFBD>val<61>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsZero(const double& val, double deps); //<2F>ж<EFBFBD>val<61>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsEqual(const double& x, const double& y, double deps = 1e-8); //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsEqual(const CPoint2D& pt1, const CPoint2D& pt2, double deps = 1e-6); //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>غ<EFBFBD>
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> λ<><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>plen
|
|
|
|
|
|
int GetTopDigit(int scrV, int* plen);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻Ϊ0
|
|
|
|
|
|
int ReplaceDigitWithZero(int scrV);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
int GetArgument(CString cmd, CStringList &list);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Թؼ<D4B9><D8BC>֣<EFBFBD><D6A3>ո<D5B8><F1A1A2B6>š<EFBFBD>TAB<41><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>Ĺؼ<C4B9><D8BC>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ScanfString(CStringArray &m_type, char* cmd);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ScanfString1(CStringArray &m_type, char* cmd, int n, char split);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ScanfString1(CStringArray &m_type, CString cmd, char split);
|
|
|
|
|
|
int ScanfString(CStringArray &m_type, CString cmd, char split, bool bWithQuotation = false);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>split<69><74><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>,bWithQuotation==true<75><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>Ĺؼ<C4B9><D8BC>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int ScanfString(CStringArray &m_type,
|
|
|
|
|
|
char* cmd, int nCmdNum,
|
|
|
|
|
|
char* splitChar, int nSplitNum,
|
|
|
|
|
|
bool bWithQuotation = true);
|
|
|
|
|
|
|
|
|
|
|
|
int ScanDouble(char *line, double *x, int n, int m);
|
|
|
|
|
|
int ScanDouble1(char *line, double *x, int n, int m);
|
|
|
|
|
|
//<2F>õ<EFBFBD><C3B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> added ww 2015-1-26
|
|
|
|
|
|
int GetFileLineNum(const char* strFile);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>*x<>е<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>/<2F>ɴ<EFBFBD><C9B4><EFBFBD>С)
|
|
|
|
|
|
int BinarySearch(double key, int num, double *x);
|
|
|
|
|
|
double LineValue(double x0, double *x, double *y);
|
|
|
|
|
|
double LineValue(double x0, double x1, double x2, double y1, double y2);
|
|
|
|
|
|
double LineValue(double m, double n, double z1, double z2, double z3, double z4);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////< <20><>ӦPline.h<>е<EFBFBD>DflineValue<75><65><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F>ȶ<EFBFBD><C8B6>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ֵ
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>*x<>е<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>/<2F>ɴ<EFBFBD><C9B4><EFBFBD>С)
|
|
|
|
|
|
double LineValue(double *x, double *y, int num, double x0);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Zֵ<5A><D6B5><EFBFBD>Բ<EFBFBD>ֵXY<58><59><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>true
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>*z<>е<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>/<2F>ɴ<EFBFBD><C9B4><EFBFBD>С)
|
|
|
|
|
|
// bExtend<6E><64>1<EFBFBD><31><EFBFBD>ƣ<EFBFBD>bExtend=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool LineValue(OUT CPoint2D& pt, double *x, double *y, double *z, int num, double z0, BOOL bExtend);
|
|
|
|
|
|
//<2F><><EFBFBD>Բ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>true<75><65>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>*y<>е<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>/<2F>ɴ<EFBFBD><C9B4><EFBFBD>С)
|
|
|
|
|
|
// bExtend<6E><64>1<EFBFBD><31><EFBFBD>ƣ<EFBFBD>bExtend=0<><30><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
|
|
|
|
|
// <20><>bExtend=0ʱ<30><CAB1>bSetValue=1<>ڷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ֵ<EFBFBD><D6B5>bSetValue=0<>ڷ<EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
bool LineValue(OUT double &y0, double *x, double *y, int num, double x0, BOOL bExtend, BOOL bSetValue);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|
|
|
|
|
void Rotate(double &x0, double &y0, double radians);
|
|
|
|
|
|
void Rotate(double &x, double &y, double cosa, double sina);
|
|
|
|
|
|
void Rotate(double &x0, double &y0, double &z0, double alfa, double beta);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD>mode=0<><30><EFBFBD><EFBFBD>+ <20><>1Ϊ<31><CEAA><EFBFBD><EFBFBD>2Ϊ<32>ˣ<EFBFBD>3Ϊ<33><CEAA>
|
|
|
|
|
|
void Arithmetic(double& val, double factor, int mode);
|
|
|
|
|
|
|
|
|
|
|
|
void SortCoordinate(double* x, double* y, int n); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int GetMinValueIndex(double* a, int n); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double TotalDistance(double *a, double *b, int n); //<2F><><EFBFBD><EFBFBD><EFBFBD>ܵľ<DCB5><C4BE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double Distance2(double x1, double y1, double x2, double y2);
|
|
|
|
|
|
double Distance(double x1, double y1, double x2, double y2);
|
|
|
|
|
|
double Distance3D(double x1, double y1, double z1, double x2, double y2, double z2);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>(x0,y0)<29><>ֱ<EFBFBD><D6B1>kx+b<>ľ<EFBFBD><C4BE><EFBFBD>
|
|
|
|
|
|
double PointLineDistance(double x0, double y0, double k, double b);
|
|
|
|
|
|
// <20><>(x0,y0)<29><><EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD>
|
|
|
|
|
|
double PointLineDistance(double x0, double y0, double x1, double y1, double x2, double y2);
|
|
|
|
|
|
// <20><>(x0,y0)<29><><EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> a- 0<><30>1 <20>ľ<EFBFBD><C4BE>룬 b 0<><30>2 <20>ľ<EFBFBD><C4BE>룬 c 1<><31>2<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
|
|
|
|
|
|
double PointLineDistance(double x0, double y0, double x1, double y1, double x2, double y2, double a, double b, double c);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ռ<EFBFBD><D5BC><EFBFBD>(x0,y0,z0)<29><><EFBFBD>ռ<EFBFBD><D5BC>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> --Wangcw
|
|
|
|
|
|
double PointLineDistance3D(double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2);
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//
|
|
|
|
|
|
// 1 <20>ϲ<EFBFBD>
|
|
|
|
|
|
// p1--------------------p2
|
|
|
|
|
|
// 2 <20>²<EFBFBD>
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
// p2
|
|
|
|
|
|
// |
|
|
|
|
|
|
// |
|
|
|
|
|
|
// 1 <20><><EFBFBD><EFBFBD> | 2 <20>Ҳ<EFBFBD>
|
|
|
|
|
|
// |
|
|
|
|
|
|
// |
|
|
|
|
|
|
// p1
|
|
|
|
|
|
//
|
|
|
|
|
|
// <20>жϵ<D0B6><CFB5><EFBFBD>ֱ<EFBFBD>ߵ<EFBFBD><DFB5>IJ<EFBFBD> 1-- <20><><EFBFBD><EFBFBD> 0--<2D><><EFBFBD><EFBFBD> 2---<2D>Ҳ<EFBFBD>
|
|
|
|
|
|
int PointInLine(double x0, double y0, double x1, double y1, double x2, double y2);
|
|
|
|
|
|
//<2F>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>߶<EFBFBD><DFB6><EFBFBD>
|
|
|
|
|
|
bool IsPointOnSegment(double x0, double y0, double x1, double y1, double x2, double y2);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>(x1,y1)-(x2,y2) ,(x3,y3)-(x4,y4)<29>Ƿ<EFBFBD><C7B7>ཻ,<2C><><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD>ཻ<EFBFBD><E0BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><><EFBFBD>ཻ<EFBFBD><E0BDBB> <20><><EFBFBD><EFBFBD>2 <20><><EFBFBD><EFBFBD><EFBFBD>ཻ
|
|
|
|
|
|
int IsSegmentCross(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵĽ<DFB5><C4BD><EFBFBD>,k1,k2Ϊ<32><CEAA><EFBFBD><EFBFBD>ֱ<EFBFBD>ߵ<EFBFBD>б<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>kֵ > 1e10 <20><>ʾ<EFBFBD><CABE>ֱ<EFBFBD><D6B1>x<EFBFBD><78> <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><EFBFBD><DEBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD>1<EFBFBD><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD><EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE>ֱ<EFBFBD><D6B1><EFBFBD>غ<EFBFBD>
|
|
|
|
|
|
int LineCrossPoint(double x1, double y1, double k1, double x2, double y2, double k2, double& x0, double& y0);
|
|
|
|
|
|
int LineCrossPoint(const CPoint2D& pt1, const CPoint2D& pt2, const CPoint2D& pt3, const CPoint2D& pt4, double& x0, double& y0);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>жϵ<D0B6><CFB5>Ƿ<EFBFBD><C7B7>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD> 1Ϊ<31>ڲ<EFBFBD> 0Ϊ<30>ⲿ<EFBFBD><E2B2BF> x,yΪ<79><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬mΪ<6D><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ww 2016-11-01
|
|
|
|
|
|
int IsPtInPolygon(double x0, double y0, double* x, double* y, int m);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A(x1,y1),B(x2,y2)<29>ĵ<EFBFBD><C4B5><EFBFBD>(<28>ڻ<EFBFBD>)
|
|
|
|
|
|
double DotProduct(double x1, double y1, double x2, double y2);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A(x1,y1),B(x2,y2)<29>IJ<EFBFBD><C4B2><EFBFBD>(<28><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
double CrossProduct(double x1, double y1, double x2, double y2);
|
|
|
|
|
|
|
|
|
|
|
|
int Offset(double k, double z, double &delt, double &h, BOOL bOffset); //<2F><><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>ƫ<EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD>kΪб<CEAA><D0B1>
|
|
|
|
|
|
// dx = -z*dx; dy = -z*dy; z = -z*sqrt(1 - (dx^2 + dy^2) )
|
|
|
|
|
|
int Offset(double &dx, double &dy, double &z, BOOL bOffset); //<2F><><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>ƫ<EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD>ƫ<EFBFBD>ƣ<EFBFBD>dx<64><78>dxΪƫ<CEAA><C6AB>
|
|
|
|
|
|
//bOffset==TRUEʱ<45><CAB1><EFBFBD><EFBFBD>Offset2D<32><44>ΪFALSEʱ<45><CAB1><EFBFBD><EFBFBD>UnOffset2D
|
|
|
|
|
|
int Offset2D(double k, double z, double &delt, double &h); //<2F><><EFBFBD><EFBFBD><EFBFBD>ϵĵ<CFB5>ƫ<EFBFBD><C6AB>
|
|
|
|
|
|
int UnOffset2D(double k, double h, double &delt, double &z); //<2F><><EFBFBD><EFBFBD><EFBFBD>ϵĵ㷴ƫ<E3B7B4><C6AB>
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
double GetAngle(double x1, double y1, double x2, double y2, double x3, double y3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>֮<EFBFBD><D6AE><EFBFBD>ļн<C4BC>
|
|
|
|
|
|
double GetAngle(double x1, double y1, double x2, double y2); //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58>֮<EFBFBD><D6AE><EFBFBD>ļн<C4BC>
|
|
|
|
|
|
double GetAngle(double x, double y);
|
|
|
|
|
|
double GetAzimuth(double x1, double y1, double x2, double y2); //<2F><><EFBFBD>㷽λ<E3B7BD><CEBB>
|
|
|
|
|
|
|
|
|
|
|
|
double ToDegree(double dms); //<2F><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA>
|
|
|
|
|
|
double ToDMS(double degree); //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void GetKB(double x1, double y1, double x2, double y2, double &k, double &b);//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD>߷<EFBFBD><DFB7>̲<EFBFBD><CCB2><EFBFBD>
|
|
|
|
|
|
BOOL GetKB(int num, double *x, double *y, double &k, double &b); //<2F><>С<EFBFBD><D0A1><EFBFBD>˷<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, num>2, <20><><EFBFBD><EFBFBD>ֱ<EFBFBD>߷<EFBFBD><DFB7><EFBFBD>(Y=kX+b)
|
|
|
|
|
|
//<2F><>С<EFBFBD><D0A1><EFBFBD>˷<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>ظ߳<D8B8> ww 2021.4.22
|
|
|
|
|
|
double LeastSquareFit(std::vector<CPoint3D>& points, double x0, double y0);
|
|
|
|
|
|
//<2F><>С<EFBFBD><D0A1><EFBFBD>˷<EFBFBD>ƽ<EFBFBD><C6BD>fitting by a plane h(x,y) = barH + barA0*(x-barX) + barA1*(y-barY) -- ww 2021.4.22
|
|
|
|
|
|
bool LeastSquarePlane(std::vector<CPoint3D>& points, double& barX, double& barY, double& barH,
|
|
|
|
|
|
double& barA0, double& barA1);
|
|
|
|
|
|
int Gauss(int n, double *a, double *c);
|
|
|
|
|
|
double GetAreaTrue(int num, double* x, double* y); //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵҲ<D6B5><D2B2><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD>ֵ
|
|
|
|
|
|
double GetArea(int num, double *x, double *y); //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>,GetArea()=fabs(GetAreaTrue())
|
|
|
|
|
|
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>pt1,pt2 <20><>pt2, pt3֮<33><D6AE><EFBFBD>ļн<C4BC>cosֵ
|
|
|
|
|
|
double GetCosinValue(CPoint2D& pt1, CPoint2D& pt2, CPoint2D& pt3);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߱߳<DFB1><DFB3>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double TriArea(double a, double b, double c);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A(x1,y1) B(x2,y2) C(x3,y3)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>Ľ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AC<41>߽<EFBFBD><DFBD><EFBFBD>(x0,y0)<29><><EFBFBD><EFBFBD>ABC<42><43><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>Ͼ<EFBFBD><CFBE><EFBFBD>Ϊ1<CEAA><31><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> ww
|
|
|
|
|
|
bool GetAngularBisector(double x1, double y1, double x2, double y2, double x3, double y3, double& x0, double& y0);
|
|
|
|
|
|
//x1,y1,x2,y2,x3,y3Ϊ<33><CEAA><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬x,y,r<>з<EFBFBD><D0B7>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>꼰<EFBFBD>뾶
|
|
|
|
|
|
BOOL GetCircumcenter(double &x, double &y, double &r,
|
|
|
|
|
|
double x1, double y1,
|
|
|
|
|
|
double x2, double y2,
|
|
|
|
|
|
double x3, double y3);
|
|
|
|
|
|
|
|
|
|
|
|
double GetFirstValue(double x, double step);
|
|
|
|
|
|
double GetCanonicalStep(double step); //<2F><><EFBFBD>ù淶<C3B9><E6B7B6><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ12<31><32><EFBFBD><EFBFBD>10<31><30>0.13=0.1
|
|
|
|
|
|
double ContourStep(double m_step);
|
|
|
|
|
|
int GetCycValue(int i, int T);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ã<EFBFBD> (x0,y0)Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ww 2019.7.3
|
|
|
|
|
|
void GetGravityCenter(double* xx, double* yy, int num, double& x0, double& y0);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>õȱ߶<C8B1><DFB6><EFBFBD><EFBFBD>εĶ<CEB5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// centerPoint <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// endPoint <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD>õ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// polyNum <20>ȱ߶<C8B1><DFB6><EFBFBD><EFBFBD>εı<CEB5><C4B1><EFBFBD>
|
|
|
|
|
|
void GetEquilateralPolyPoints(CPointList& pl, dfPoint ¢erPoint, dfPoint &endPoint, int polyNum);
|
|
|
|
|
|
//<2F><><EFBFBD>ݽǶȻ<C7B6><C8BB><EFBFBD>Բ<EFBFBD>ϵĵ<CFB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
dfPoint GetPointOnCircle(dfPoint& centerPoint, double r, double angle);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD>߶<EFBFBD>S(x1,y1)(x2,y2)<29><><EFBFBD>д<EFBFBD><D0B4><EFBFBD> rΪ<72>д<EFBFBD><D0B4>߶˵㵽<CBB5>߶<EFBFBD>S<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD> ww dstPts[0] = left dstPts[1] = right
|
|
|
|
|
|
bool GetMidPerpendicular(const CPoint2D& pt1, const CPoint2D& pt2, double r, std::vector<CPoint2D>& dstPts);
|
|
|
|
|
|
//<2F><><EFBFBD>ݽǶȻ<C7B6><C8BB><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>ϵĵ<CFB5><C4B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool GetPointOnEllipse(double &x, double& y, const CSize8& szRadius, double angle);
|
|
|
|
|
|
bool GetPointOnEllipse(double &x, double& y, const CPoint2D& centerPoint, const CSize8& szRadius, double angle);
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>Բ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1> centerpoint = <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD> <20><>szRadius = <20><><EFBFBD><EFBFBD><EFBFBD>᳤<EFBFBD><E1B3A4> <20><>x0,y0) = <20><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD> <20><>Ϊ<EFBFBD><CEAA><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>1e20
|
|
|
|
|
|
double GetKOnEllipse(double x0, double y0, const CPoint2D& centerPoint, const CSize8& szRadius);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> --- wangcw
|
|
|
|
|
|
bool Smooth53(double* val, int n, int stimes = 1);
|
|
|
|
|
|
//h0 Ϊ<><CEAA><EFBFBD>룬m<EBA3AC><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>h1<68><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n=<3D><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>time=ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>㻬<EFBFBD><E3BBAC>ȡƽ<C8A1><C6BD>
|
|
|
|
|
|
double PointSmooth(double *h0, int m, double *h1, int n, int time);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȨУ<C8A8><D0A3><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x,y,z,mΪ<6D><CEAA><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>x0,y0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣬kͨ<6B><CDA8>Ϊ2
|
|
|
|
|
|
double Weight2D(double x0, double y0, int m, double *x, double *y, double *z, double k);
|
|
|
|
|
|
//<2F><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȨУ<C8A8><D0A3><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
double Weight3D(double x0, double y0, double t0, int m, double *x, double *y, double *t, double *z, int k);
|
|
|
|
|
|
//<2F>ж϶<D0B6><CFB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ˳ʱ<CBB3>ӷ<EFBFBD><D3B7><EFBFBD>
|
|
|
|
|
|
bool IsClockWise(double* x, double* y, int num);
|
|
|
|
|
|
//<2F>ж<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>true <20><> <20><><EFBFBD><EFBFBD>false ww
|
|
|
|
|
|
bool IsCollinear(double*x, double* y, int num, double prec = 1e-10);
|
|
|
|
|
|
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᷶Χ<E1B7B6>Ϳ̱<CDBF><CCB1><EFBFBD><EFBFBD><EFBFBD> ww 2019.7.9
|
|
|
|
|
|
void AdjustAxis(double& minV, double& maxV, int& numTicks);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>p1<70><31>p2ָ<32><D6B8><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(szLength.cy<63>Ǽ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD>ȣ<EFBFBD>cx<63>Ǽ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>)
|
|
|
|
|
|
BOOL GetArrowPoint3(CPoint2D p1, CPoint2D p2, CPoint2D* pOutPoint3, CSize8 szLength);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ptStart<72><74>ptEnd<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>curPoint<6E><74><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>γ<EFBFBD>angle<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void GetAnglePoint(CPoint2D& curPoint, CPoint2D ptStart, CPoint2D ptEnd, double angle);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
///> dec=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>dec<65><63>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SortDouble(int num, double *x, int dec = 0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
///><3E><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
///> numΪ<6D><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
///> col<6F><6C>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>0<EFBFBD><30>x<EFBFBD>ţ<EFBFBD>1<EFBFBD><31>y<EFBFBD>ţ<EFBFBD>2<EFBFBD><32>z<EFBFBD><7A>
|
|
|
|
|
|
///> dec=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>dec<65><63>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SortXYZ(double *x, double *y, double *z, int num, int colSort, int dec);
|
|
|
|
|
|
void SortXY(double *x, double *y, int num, int colSort, int dec);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
//ASCII<49><49><EFBFBD>ļ<EFBFBD><C4BC>Ķ<EFBFBD>д
|
|
|
|
|
|
//int ReadString(CFile& fr, CString& str);
|
|
|
|
|
|
//int GetString(CFile& fr, CString& str);
|
|
|
|
|
|
BOOL IsLineEnd_GetString(int result); //<2F>ж<EFBFBD>GetString<6E><67><EFBFBD>ص<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾһ<CABE>еĽ<D0B5><C4BD><EFBFBD>
|
|
|
|
|
|
//int ReadString(CFile & fr, char* str); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
|
|
|
//int GetString(CFile& fr, char* str); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD><EFBFBD>س<EFBFBD>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
//int ReadString(CFile & fr); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//int GetString(CFile& fr); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD><EFBFBD>س<EFBFBD>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
//char* GetTempString(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
|
//int GetTempStringLength(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>鳤<EFBFBD><E9B3A4>
|
|
|
|
|
|
//void ZeroTempString(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
void ReverseString(char *string, int n);
|
|
|
|
|
|
int ReplaceChar(char* pString, char old_char, char new_char);
|
|
|
|
|
|
int FindString(char* pString, char* pSearchString, int nStartPos = 0);
|
|
|
|
|
|
int ReverseFind(const char* pString, char cFind); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|
|
|
|
|
//void SerializeString(CArchive& ar, CString& str, const short& ver);
|
|
|
|
|
|
//void WriteChar(CFile &fw, LPCTSTR lpstr, int nTimes=1); //д<><D0B4>nTimes<65><73><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
//void WriteLine(CFile &fw, LPCTSTR lpstr, int nTabNum); //<2F><><EFBFBD><EFBFBD>nTabNum<75><6D>tab<61><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
|
|
|
//void WriteLine(CFile &fw, CString str); //дһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD>),<2C><>WriteString<6E><67>WriteReturn<72><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//void WriteString(CFile &fw, CString str, int nTabNum=0); //дһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//void WriteString(CFile &fw, double value, int n=6); //дһ<D0B4><D2BB>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//void WriteString(CFile &fw, long value); //дһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//void WriteReturn(CFile& fw); //дһ<D0B4><D2BB><EFBFBD>س<EFBFBD>
|
|
|
|
|
|
//void WriteXY(CFile& fw, double x, double y, char cSplit=','); //дX,Y<><59><EFBFBD><EFBFBD>
|
|
|
|
|
|
//void WriteXY(CFile& fw, double& x, double& y, double& z, char cSplit);
|
|
|
|
|
|
|
|
|
|
|
|
//BOOL WriteFile(LPCTSTR lpSaveFileName, void* pBuffer, DWORD nBufferSize); //<2F><><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
//void SetErrorInfo(LPCTSTR lpszErrorInfo);
|
|
|
|
|
|
//CString GetErrorInfo(void);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
void ExchangeXY(double& x, double& y); //x,y<><79><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
void Swap(double& x, double& y); //x,y<><79><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
void Swap(float& x, float& y); //x,y<><79><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
|
|
|
|
|
|
////Ϊ<><CEAA>дԪ<D0B4><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(int <20><> short)<29><>
|
|
|
|
|
|
//void WriteElementType(CArchive& ar, int nType, const short& ver);
|
|
|
|
|
|
//void ReadElementType(CArchive& ar, int &nType, const short& ver);
|
|
|
|
|
|
|
|
|
|
|
|
// //Progress
|
|
|
|
|
|
// void SetProgress(CProgressCtrl* pProgress);
|
|
|
|
|
|
// CProgressCtrl* GetProgress(void);
|
|
|
|
|
|
// void SetProgressPos(int nPos);
|
|
|
|
|
|
//Convert a string to uppercase
|
|
|
|
|
|
static char* StrUpr(char* str);
|
|
|
|
|
|
|
|
|
|
|
|
CString GetSplitPath(/*const*/ CString sFullPathName, CString context = _T("ext"));
|
|
|
|
|
|
|
|
|
|
|
|
//split the path into given strings
|
|
|
|
|
|
#ifdef _QT_VERSION
|
|
|
|
|
|
static bool SplitPath(const char* fullPath, char* drive, char* dir, char* fname, char* ext);
|
|
|
|
|
|
static bool SplitPath(const wchar_t* fullPath, wchar_t* drive, wchar_t* dir, wchar_t* fname, wchar_t* ext);
|
|
|
|
|
|
// static QColor ulongToQColor(unsigned long color);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>걣<EFBFBD><EAB1A3><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>x<EFBFBD><78>y<EFBFBD><79>
|
|
|
|
|
|
int GetOutline(int num, double *x, double *y);
|
|
|
|
|
|
// <20>õ<EFBFBD>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD>㼯p<E3BCAF><70>СΪn<CEAA><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<CEAA><CDB9><EFBFBD><EFBFBD>С,<><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>convex<65><78>
|
|
|
|
|
|
int GetConvexHull(int n, CPoint2D* s_points, CPoint2D* convex, int maxsize = 1, int dir = 1);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>߶εĽ<CEB5><C4BD>㣬<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ޣ<EFBFBD><DEA3><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>غϣ<D8BA><CFA3><EFBFBD><EFBFBD><EFBFBD>2. ww 2015-10-27
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD> a,bΪֱ<CEAA><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lx0,ly0Ϊֱ<CEAA><D6B1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>꣬<EFBFBD><EAA3AC>sx1,sy1)(sx2,sy2)Ϊ<>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>˵㣬<CBB5><E3A3AC><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>(cx,cy)Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int SegLineCrossPoint(double a, double b, double lx0, double ly0,
|
|
|
|
|
|
double sx1, double sy1, double sx2, double sy2, double& cx, double& cy);
|
|
|
|
|
|
|
|
|
|
|
|
////xml<6D><6C>ʽ<EFBFBD>汾<EFBFBD><E6B1BE>
|
|
|
|
|
|
//void SetXmlVersion(double dVer);
|
|
|
|
|
|
//double GetXmlVersion();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>뷽ʽ
|
|
|
|
|
|
//void ConvertGBKToUTF8(CString& strGBK, bool checkCodec = true);
|
|
|
|
|
|
//void SetCodeType(DWORD nType);
|
|
|
|
|
|
//DWORD GetCodeType();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ӡ<EFBFBD><D3A1>ת
|
|
|
|
|
|
void SetPrintRotatePt(CPoint pt);
|
|
|
|
|
|
CPoint GetPrintRotatePt();
|
|
|
|
|
|
void SetPrintRotateAngle(double angle);
|
|
|
|
|
|
double GetPrintRotateAngle();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʽ
|
|
|
|
|
|
void SetInsertDrawMode(DWORD mode);
|
|
|
|
|
|
DWORD GetInsertDrawMode();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>-1Ϊ<31><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
void SetTxtDecimalDgts(int i);
|
|
|
|
|
|
int GetTxtDecimalDgts();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|
|
|
|
|
void EnableSaveThumbImage(BOOL bSave);
|
|
|
|
|
|
BOOL IsSaveThumbImage();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void EnalbeAntialias(BOOL bAntialias);
|
|
|
|
|
|
BOOL IsAntialias();
|
|
|
|
|
|
|
|
|
|
|
|
//ִ<><D6B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
HANDLE ExecuteCommand(LPCTSTR lpFileCommand, LPCTSTR lpFileParameters, LPCTSTR lpFileDirectory, int nWinShow = SW_SHOW);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡģ<C8A1><C4A3>·<EFBFBD><C2B7>
|
|
|
|
|
|
CString GetModulePath();
|
|
|
|
|
|
|
|
|
|
|
|
int GetDPIX(int x);
|
|
|
|
|
|
int GetDPIY(int y);
|
|
|
|
|
|
CPoint GetDPIPoint(CPoint pt);
|
|
|
|
|
|
CRect GetDPIRect(CRect rt);
|
|
|
|
|
|
CSize GetDPISize(CSize sz);
|
|
|
|
|
|
public:
|
|
|
|
|
|
///move from Pline.h
|
|
|
|
|
|
void enspl(double *x, double *y, int n, int k, double t, double *s); //<2F>⻬<EFBFBD><E2BBAC><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ֵ<EFBFBD><D6B5>k=-1,t<><74>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD>꣬sΪ<73><CEAA><EFBFBD><EFBFBD>ʽϵ<CABD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ5<CEAA><35>s[0]<5D><>s[1]<5D><>s[2]<5D><>s[3]Ϊ<><CEAA>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽϵ<CABD><CFB5><EFBFBD><EFBFBD>s[4]Ϊ<><CEAA><EFBFBD>ص<EFBFBD>yֵ <20><><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
|
|
|
|
|
|
double enlgr(double *x, double *y, int n, double t); //һԪȫ<D4AA><C8AB><EFBFBD>䲻<EFBFBD>Ⱦࣨ<C8BE><E0A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
double enlg3(double *x, double *y, int n, double t); //һԪ<D2BB><D4AA><EFBFBD>㲻<EFBFBD>Ⱦࣨ<C8BE><E0A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
double enpqs(double *x, double *y, int n, double t); //<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ⱦࣨ<C8BE><E0A3A8><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
double enhmt(double *x, double *y, double *dy, int n, double t); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2>Ⱦ<EFBFBD><C8BE><EFBFBD>ֵ<EFBFBD><D6B5>dyΪn<CEAA><6E><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>ڵ<EFBFBD><DAB5>ϵ<EFBFBD>һ<EFBFBD><EFBFBD><D7B5><EFBFBD>ֵ
|
|
|
|
|
|
double enatk(double *x, double *y, int n, double t, double dEps); //<2F><><EFBFBD>ؽȾ<F0B2BBB5><C8BE><EFBFBD>ֵ dEps<70><73>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double espl1(double *x, double *y, int n, double *dy, double *ddy, double *t, int m, double *z, double *dz, double *ddz);//<2F><>һ<EFBFBD>ֱ߽<D6B1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ˵<D6B5><CBB5><EFBFBD><EFBFBD>x,y,dy,ddy<64><79><EFBFBD>鳤<EFBFBD><E9B3A4>Ϊn<CEAA><6E>dy[0]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>һ<EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>dy[n-1]<5D><><EFBFBD><EFBFBD><EFBFBD>Ҷ˵<D2B6><CBB5><EFBFBD>һ<EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><6E><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>һ<EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>ddyΪ<79><CEAA><EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>tΪҪ<CEAA><D2AA>ֵ<EFBFBD>Ľڵ<C4BD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊm<CEAA><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A>dz<64><7A>ddz<64>ֱ<EFBFBD>Ϊ<EFBFBD>ڵ㴦<DAB5><E3B4A6>ֵ<EFBFBD><D6B5>һ<EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double espl2(double *x, double *y, int n, double *dy, double *ddy, double *t, int m, double *z, double *dz, double *ddz);//<2F>ڶ<EFBFBD><DAB6>ֱ߽<D6B1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ddy[0]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>һ<EFBFBD><EFBFBD><D7B5><EFBFBD><EFBFBD><EFBFBD>ddy[n-1]<5D><><EFBFBD><EFBFBD><EFBFBD>Ҷ˵<D2B6><CBB5>Ķ<EFBFBD><C4B6><EFBFBD><D7B5><EFBFBD>
|
|
|
|
|
|
double espl3(double *x, double *y, int n, double *dy, double *ddy, double *t, int m, double *z, double *dz, double *ddz);//<2F><><EFBFBD><EFBFBD><EFBFBD>ֱ߽<D6B1><DFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y[0]=y[n-1];
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC>㣺yy=a[0]+a[1]*xx+a[2]*xx*xx+a[3]*xx*xx*xx+a[4]*xx*xx*xx*xx;
|
|
|
|
|
|
void hpir1(double *x, double *y, int n, double *a, int m, double *dt);//<2F><>С<EFBFBD><D0A1><EFBFBD>˷<EFBFBD><CBB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,nΪ<6E><CEAA>֪<EFBFBD><D6AA><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mΪ<6D><CEAA><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>ģ<EFBFBD>m<EFBFBD><6D>1<EFBFBD><31><EFBFBD>η<EFBFBD><CEB7><EFBFBD>m<n,m<20,aΪ<61><CEAA><EFBFBD>صĶ<D8B5><C4B6><EFBFBD>ʽϵ<CABD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊm<CEAA><6D>dtΪ<74><CEAA><EFBFBD><EFBFBD>Ϊ3<CEAA><33><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void hchir(double *x, double *y, int n, double *a, int m); //<2F>б<EFBFBD>ѩ<EFBFBD><D1A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>nΪ<6E><CEAA>֪<EFBFBD><D6AA><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mΪ<6D><CEAA><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<n,m<20,aΪ<61><CEAA><EFBFBD>صĶ<D8B5><C4B6><EFBFBD>ʽϵ<CABD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊm+1,a[m]<5D><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>ʽƫ<CABD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>ԣ<EFBFBD>x<EFBFBD><78>y<EFBFBD><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y=ax+b<><62><EFBFBD>Իع<D4BB>
|
|
|
|
|
|
void isqt1(double *x, double *y, int n, double *a, double *dt); //һԪ<D2BB><D4AA><EFBFBD>Իع飬<D8B9><E9A3AC><EFBFBD><EFBFBD>b=a[0],a=a[1]<5D><>dt[0]:<3A><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>ƽ<EFBFBD><C6BD><EFBFBD>ͣ<EFBFBD>dt[1]ƽ<><C6BD><EFBFBD><EFBFBD>ƫ<D7BC>dt[2]<5D>ع<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>ͣ<EFBFBD>dt[3]<5D><><EFBFBD><EFBFBD>ƫ<EFBFBD>dt[4]<5D><>Сƫ<D0A1>dt[5]ƫ<><C6AB>ƽ<EFBFBD><C6BD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
|
|
|
|
|
|
void ilog1(int n, double *x, double *y, double t, double *a); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>Ҫ<EFBFBD><D2AA>y[i]>0<><30>tΪ<74><CEAA><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>t>0<><30>a<EFBFBD><61><EFBFBD>鳤<EFBFBD><E9B3A4>Ϊ7<CEAA><37>a[0]:<3A><><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>y=b*pow(t,ax)<29>е<EFBFBD>b<EFBFBD><62>a[1]Ϊ<><CEAA><EFBFBD><EFBFBD>ʽ<EFBFBD>е<EFBFBD>a<EFBFBD><61>a[2]Ϊƫ<CEAA><C6AB>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>,a[3]Ϊƽ<CEAA><C6BD><EFBFBD><EFBFBD>ƫ<D7BC><C6AB>,a[4]Ϊ<><CEAA><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>,a[5]Ϊ<><CEAA>Сƫ<D0A1><C6AB>,a[6]ƫ<><C6AB>ƽ<EFBFBD><C6BD>ֵ
|
|
|
|
|
|
void ilog2(int n, double *x, double *y, double *a); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>Ҫ<EFBFBD><D2AA>x[i]>0;y[i]>0<><30>a<EFBFBD><61><EFBFBD>鳤<EFBFBD><E9B3A4>Ϊ7<CEAA><37>a[0]Ϊ<><CEAA><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>y=b*pow(x,a)<29>е<EFBFBD>b<EFBFBD><62>a[1]Ϊ<><CEAA><EFBFBD><EFBFBD>ʽ<EFBFBD>е<EFBFBD>a<EFBFBD><61>a[2]Ϊƫ<CEAA><C6AB>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>,a[3]Ϊƽ<CEAA><C6BD><EFBFBD><EFBFBD>ƫ<D7BC><C6AB>,a[4]Ϊ<><CEAA><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>,a[5]Ϊ<><CEAA>Сƫ<D0A1><C6AB>,a[6]ƫ<><C6AB>ƽ<EFBFBD><C6BD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
__int64 IntegerTransfer(__int64 vv);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
static int _compare_double_asc(const void *d1, const void *d2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int _compare_double_dec(const void *d1, const void *d2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><>άָ<CEAC><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ww 2017-6-29
|
|
|
|
|
|
static int _compare_double_pointer_asc(const void *d1, const void *d2); //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static int _compare_double_pointer_dec(const void *d1, const void *d2); //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>齵<EFBFBD><E9BDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
};
|
|
|
|
|
|
using namespace GBase;
|
|
|
|
|
|
extern GBase::CBaseFunction Gbf;
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" AFX_EXT_API GBase::CBaseFunction* WINAPI GGetBaseFunction();
|
|
|
|
|
|
extern "C" AFX_EXT_API GBase::CBaseFunction* GGetPublicFunction();
|
|
|
|
|
|
extern "C" AFX_EXT_API BOOL* WINAPI AfxGetNo_Trim_Zero();
|
|
|
|
|
|
extern "C" AFX_EXT_API void WINAPI SetVert(TRIVERTEX &v, int x, int y, COLORREF cr);
|
|
|
|
|
|
|
|
|
|
|
|
//extern CString m_strPathModule; //<2F><>ǰģ<C7B0><C4A3>·<EFBFBD><C2B7>
|
|
|
|
|
|
//extern HWND m_hWndModule; //<2F><>ǰģ<C7B0><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
|
extern "C" AFX_EXT_API void WINAPI AfxSetModulePath(CString strPath);
|
|
|
|
|
|
extern "C" AFX_EXT_API HWND WINAPI AfxGetModuleHwnd();
|
|
|
|
|
|
extern "C" AFX_EXT_API void WINAPI AfxSetModuleHwnd(HWND hWnd);
|
|
|
|
|
|
#ifdef _QT_VERSION
|
|
|
|
|
|
extern "C" AFX_EXT_API void WINAPI DeleteFile(CString strFile);
|
|
|
|
|
|
#endif //_QT_VERSION
|
|
|
|
|
|
|
|
|
|
|
|
//extern "C" TRIVERTEX AFX_EXT_DATA vert[5];
|
|
|
|
|
|
//extern "C" GRADIENT_TRIANGLE AFX_EXT_DATA gTRi[4];
|
|
|
|
|
|
//extern "C" double AFX_EXT_DATA __z[4];
|
|
|
|
|
|
#ifdef _QT_VERSION //Qt's similiar functions as WINAPI --ww 2017.12.28
|
|
|
|
|
|
// read or write ini file
|
|
|
|
|
|
extern "C" AFX_EXT_API DWORD GetPrivateProfileString(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName);
|
|
|
|
|
|
extern "C" AFX_EXT_API DWORD GetPrivateProfileSection(LPCTSTR lpAppName, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);
|
|
|
|
|
|
extern "C" AFX_EXT_API BOOL WritePrivateProfileString(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
|
|
|
|
|
|
//retrieves the path for the file that contains the specified module that the current process owns
|
|
|
|
|
|
extern "C" AFX_EXT_API DWORD GetModuleFileName(void* hModule, LPTSTR lpFilename, DWORD nSize);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" AFX_EXT_API void GetLocalTime(SYSTEMTIME* t);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" AFX_EXT_API int MultiByteToWideChar(
|
|
|
|
|
|
UINT CodePage, // code page
|
|
|
|
|
|
DWORD dwFlags, // character-type options
|
|
|
|
|
|
LPCSTR lpMultiByteStr, // string to map
|
|
|
|
|
|
int cbMultiByte, // number of bytes in string
|
|
|
|
|
|
LPWSTR lpWideCharStr, // wide-character buffer
|
|
|
|
|
|
int cchWideChar // size of buffer);
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" AFX_EXT_API int WideCharToMultiByte(
|
|
|
|
|
|
UINT CodePage, // code page
|
|
|
|
|
|
DWORD dwFlags, // performance and mapping flags
|
|
|
|
|
|
LPCWSTR lpWideCharStr, // wide-character string
|
|
|
|
|
|
int cchWideChar, // number of chars in string.
|
|
|
|
|
|
LPSTR lpMultiByteStr, // buffer for new string
|
|
|
|
|
|
int cbMultiByte, // size of buffer
|
|
|
|
|
|
LPCSTR lpDefaultChar, // default for unmappable chars
|
|
|
|
|
|
LPBOOL lpUsedDefaultChar // set when default char used);
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#define AfxGetDPIX(x) AfxGetBaseFunction()->GetDPIX(x)
|
|
|
|
|
|
#define AfxGetDPIY(y) AfxGetBaseFunction()->GetDPIY(y)
|
|
|
|
|
|
#define AfxGetDPIPoint(pt) AfxGetBaseFunction()->GetDPIPoint(pt)
|
|
|
|
|
|
#define AfxGetDPIRect(rt) AfxGetBaseFunction()->GetDPIRect(rt)
|
|
|
|
|
|
#define AfxGetDPISize(sz) AfxGetBaseFunction()->GetDPISize(sz)
|
|
|
|
|
|
//extern "C"
|
|
|
|
|
|
//{
|
|
|
|
|
|
// AFX_EXT_API TRIVERTEX* WINAPI AfxGetvert();
|
|
|
|
|
|
// AFX_EXT_API GRADIENT_TRIANGLE* WINAPI AfxGetgTRi();
|
|
|
|
|
|
// AFX_EXT_API double* WINAPI AfxGet__z();
|
|
|
|
|
|
//};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//////<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>
|
|
|
|
|
|
// dx=(x[pnum-1]-x[0])/num;
|
|
|
|
|
|
// fw.WriteString("\nlayer m ԭʼ<D4AD><CABC> \npline\n");
|
|
|
|
|
|
// for(j=0;j<pnum;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// str.Format("%lf,%lf\n",x[j],y[j]);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// if(m_mode==0)//<2F><><EFBFBD>Բ<EFBFBD>ֵ;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// double y0;
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20><><EFBFBD>Բ<EFBFBD>ֵ \npline\n");
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// bf.LineValue(y0,x,y,pnum,xx,TRUE,FALSE);
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,y0);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==1)//<2F>⻬<EFBFBD><E2BBAC><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ֵ;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20>⻬<EFBFBD><E2BBAC><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD>ֵ \npline\n");
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// bf.enspl(x,y,pnum,-1,xx,a);
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,a[4]);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==2)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ \npline\n");
|
|
|
|
|
|
// dy[0]=(y[1]-y[0])/(x[1]-x[0]);
|
|
|
|
|
|
// dy[pnum-1]=(y[pnum-1]-y[pnum-2])/(x[pnum-1]-x[pnum-2]);
|
|
|
|
|
|
// dfcreate1(num);
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t[j]=x[0]+j*dx;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// bf.espl1(x,y,pnum,dy,dyy,t,num,z,dz,ddz);
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// str.Format("%lf,%lf\n",t[j],z[j]);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==3)//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if(pnum<m_time)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// str.Format("ԭ<><D4AD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d,<2C><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>С<EFBFBD><D0A1> %d<><64>",pnum,pnum);
|
|
|
|
|
|
// ::AfxMessageBox(str);return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_time>=20){::AfxMessageBox("<22><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>С<EFBFBD><D0A1> 20<32><30>");return;}
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>\npline\n");
|
|
|
|
|
|
// sum=0;
|
|
|
|
|
|
// for(j=0;j<pnum;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sum=sum+x[j];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// sum=sum/pnum;
|
|
|
|
|
|
|
|
|
|
|
|
// bf.hpir1(x,y,pnum,a,m_time,dt);//m_time<6D>ζ<EFBFBD><CEB6><EFBFBD>ʽ
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// zz=xx-sum;
|
|
|
|
|
|
// yy=0;
|
|
|
|
|
|
// for(int i=0;i<m_time;i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// yy=yy+a[i]*pow(zz,i);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// //yy=a[0]+a[1]*pow(zz,1)+a[2]*pow(zz,2)+a[3]*pow(zz,3)+a[4]*pow(zz,4)+a[5]*pow(zz,5)+a[6]*pow(zz,6)+a[7]*pow(zz,7);
|
|
|
|
|
|
// //yy=a[0]+a[1]*zz+a[2]*zz*zz+a[3]*zz*zz*zz+a[4]*zz*zz*zz*zz+a[5]*zz*zz*zz*zz*zz+a[6]*zz*zz*zz*zz*zz*zz+a[7]*zz*zz*zz*zz*zz*zz*zz;
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,yy);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==4)//<2F>б<EFBFBD>ѩ<EFBFBD><D1A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if(pnum<m_time)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// str.Format("ԭ<><D4AD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d,<2C><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>С<EFBFBD><D0A1> %d<><64>",pnum,pnum);
|
|
|
|
|
|
// ::AfxMessageBox(str);return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_time>=20){::AfxMessageBox("<22><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>С<EFBFBD><D0A1> 20<32><30>");return;}
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20>б<EFBFBD>ѩ<EFBFBD><D1A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
|
|
|
|
|
|
|
// bf.hchir(x,y,pnum,a,m_time); //m_time<6D>ζ<EFBFBD><CEB6><EFBFBD>ʽ
|
|
|
|
|
|
// fw.WriteString("\npline\n");
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// yy=0.0;
|
|
|
|
|
|
|
|
|
|
|
|
// for(int i=0;i<m_time;i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// yy=yy+a[i]*pow(xx,i);
|
|
|
|
|
|
// }
|
|
|
|
|
|
//// yy=a[0]+a[1]*xx+a[2]*xx*xx+a[3]*xx*xx*xx+a[4]*xx*xx*xx*xx;
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,yy);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==5)//<2F><><EFBFBD>ؽȾ<F0B2BBB5><C8BE><EFBFBD>ֵ;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20><><EFBFBD>ؽȾ<F0B2BBB5><C8BE><EFBFBD>ֵ\n");
|
|
|
|
|
|
// fw.WriteString("\npline\n");
|
|
|
|
|
|
// double eps=fabs((y[pnum-1]-y[0])/10000.0);
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// yy=bf.enatk(x,y,pnum,xx,eps);
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,yy);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==6)//һԪȫ<D4AA><C8AB><EFBFBD>䲻<EFBFBD>Ⱦࣨ<C8BE><E0A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// fw.WriteString("\nlayer m һԪȫ<D4AA><C8AB><EFBFBD>䲻<EFBFBD>Ⱦ<EFBFBD>\n");
|
|
|
|
|
|
// fw.WriteString("\npline\n");
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// yy=bf.enlgr(x,y,pnum,xx);
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,yy);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==7)//һԪ<D2BB><D4AA><EFBFBD>㲻<EFBFBD>Ⱦࣨ<C8BE><E0A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// fw.WriteString("\nlayer m һԪ<D2BB><D4AA><EFBFBD>㲻<EFBFBD>Ⱦ<EFBFBD>\n");
|
|
|
|
|
|
// fw.WriteString("\npline\n");
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// yy=bf.enlg3(x,y,pnum,xx);
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,yy);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if(m_mode==8)//<2F><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ⱦ<EFBFBD>;
|
|
|
|
|
|
// {
|
|
|
|
|
|
// fw.WriteString("\nlayer m <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>Ⱦ<EFBFBD>\n");
|
|
|
|
|
|
// fw.WriteString("\npline\n");
|
|
|
|
|
|
// for(j=0;j<num;j++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// xx=x[0]+dx*j;
|
|
|
|
|
|
// yy=bf.enpqs(x,y,pnum,xx);
|
|
|
|
|
|
// str.Format("%lf,%lf\n",xx,yy);
|
|
|
|
|
|
// fw.WriteString(str);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
template<typename T>
|
|
|
|
|
|
void DeepEraseVector(std::vector<T>& vec)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < (int)vec.size(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (NULL != vec[i])
|
|
|
|
|
|
delete vec[i];
|
|
|
|
|
|
}
|
|
|
|
|
|
vec.clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
|