|
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD> BaseFunction.h
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2005-12-07
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "math.h"
|
|
|
|
|
|
#include "afxcmn.h"
|
|
|
|
|
|
#include "Point2D.h"
|
|
|
|
|
|
#include "afxtempl.h"
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef PI
|
|
|
|
|
|
#define PI 3.1415926535897932384626433832795
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef RHO
|
|
|
|
|
|
#define RHO 57.295779513082320876798154814114 //(180.0/PI)
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef CODE_GB2321
|
|
|
|
|
|
#define CODE_GB2321 0x00000000
|
|
|
|
|
|
#define CODE_UTF8 0x00000001
|
|
|
|
|
|
#endif
|
|
|
|
|
|
//#ifndef MAX_LINE
|
|
|
|
|
|
// #define MAX_LINE 2048
|
|
|
|
|
|
//#endif
|
|
|
|
|
|
class AFX_EXT_CLASS CBaseFunction
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
static int _compare_double(const void *d1,const void *d2);
|
|
|
|
|
|
|
|
|
|
|
|
//static char m_tempLine[MAX_LINE];
|
|
|
|
|
|
//static char m_tempText[MAX_LINE];
|
|
|
|
|
|
//char m_tempLine[MAX_LINE];
|
|
|
|
|
|
//char m_tempText[MAX_LINE];
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
CBaseFunction(void);
|
|
|
|
|
|
virtual ~CBaseFunction(void);
|
|
|
|
|
|
|
|
|
|
|
|
//˫<><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
|
|
|
void FloatToString(CString& result, double m_float);
|
|
|
|
|
|
void FloatToString(CString& result, double m_float, int n);
|
|
|
|
|
|
void FloatToString(char* result, double m_float);
|
|
|
|
|
|
void FloatToString(char *result, double m_float, int n);
|
|
|
|
|
|
void FloatToString(double m_float); //<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>
|
|
|
|
|
|
void FloatToString(double m_float, int n);
|
|
|
|
|
|
|
|
|
|
|
|
//<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=',');
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
int BinarySearch(double key, int num, double *x);
|
|
|
|
|
|
double LineValue(double x0, double *x, double *y);// <20><><EFBFBD><EFBFBD>Xֵ<58><D6B5><EFBFBD><EFBFBD>ֵ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);
|
|
|
|
|
|
|
|
|
|
|
|
//<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>
|
|
|
|
|
|
double TotalDistance(double *a, double *b, int n); //<2F><><EFBFBD><EFBFBD><EFBFBD>ܵľ<DCB5><C4BE><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 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);
|
|
|
|
|
|
double PointLineDistance(double x0,double y0,double k,double b); //<2F>㵽ֱ<E3B5BD>ߵľ<DFB5><C4BE><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20>㵽<EFBFBD>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> --whl
|
|
|
|
|
|
double PointLineDistance(double x0, double y0, double x1, double y1, double x2, double y2);
|
|
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//
|
|
|
|
|
|
// 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>ռ<EFBFBD><D5BC>㵽<EFBFBD>ռ<EFBFBD><D5BC>߶ε<DFB6><CEB5><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD> --Wangcw
|
|
|
|
|
|
double PointSegmentDistance3D(double x0, double y0, double z0, double x1, double y1,double z1, double x2, double y2, double z2);
|
|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
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>
|
|
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
|
|
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())
|
|
|
|
|
|
double GetFirstValue(double x,double step);
|
|
|
|
|
|
|
|
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
|
|
//<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(CList<dfPoint, dfPoint>& 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>ݽǶȻ<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);
|
|
|
|
|
|
|
|
|
|
|
|
//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);
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD> --- wangcw
|
|
|
|
|
|
bool Smooth53(double* val, int n, int stimes = 100);
|
|
|
|
|
|
|
|
|
|
|
|
int GetArgument(CString cmd, CStringList &list);
|
|
|
|
|
|
int ScanfString(CStringArray &m_type, CString str, char split);
|
|
|
|
|
|
int ScanfString1(CStringArray &m_type, CString cmd, 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, 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 ScanfString(CStringArray &m_type, char* cmd); //<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>
|
|
|
|
|
|
void ReverseString(char *string, int n);
|
|
|
|
|
|
|
|
|
|
|
|
//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>
|
|
|
|
|
|
|
|
|
|
|
|
int ReplaceChar(char* pString, char old_char, char new_char);
|
|
|
|
|
|
int FindString(char* pString, char* pSearchString);
|
|
|
|
|
|
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 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); //дһ<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>
|
|
|
|
|
|
|
|
|
|
|
|
int ScanDouble(char *line,double *x,int n,int m);
|
|
|
|
|
|
int ScanDouble1(char *line,double *x,int n,int m);
|
|
|
|
|
|
long FloatToLong(double value);
|
|
|
|
|
|
|
|
|
|
|
|
void SortDouble(int num,double *x);
|
|
|
|
|
|
|
|
|
|
|
|
void SetDecimalDigits(int digits);
|
|
|
|
|
|
int GetDecimalDigits(void);
|
|
|
|
|
|
|
|
|
|
|
|
int IsDigit(CString &line);
|
|
|
|
|
|
int IsDigit(char* line);
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
HGLOBAL WINAPI CopyHandle(HGLOBAL h);
|
|
|
|
|
|
|
|
|
|
|
|
//Progress
|
|
|
|
|
|
void SetProgress(CProgressCtrl* pProgress);
|
|
|
|
|
|
CProgressCtrl* GetProgress(void);
|
|
|
|
|
|
void SetProgressPos(int nPos);
|
|
|
|
|
|
|
|
|
|
|
|
//ִ<><D6B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
HANDLE ExecuteCommand(LPCTSTR lpFileCommand, LPCTSTR lpFileParameters, LPCTSTR lpFileDirectory, int nWinShow=SW_SHOW);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
DWORD GetCurveType(CString str);
|
|
|
|
|
|
CString GetCurveTypeString(DWORD type);
|
|
|
|
|
|
|
|
|
|
|
|
CString GetSplitPath(const CString sFullPathName, CString context=_T("ext"));
|
|
|
|
|
|
|
|
|
|
|
|
//<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);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>/<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetCodeType(DWORD nType);
|
|
|
|
|
|
DWORD GetCodeType();
|
|
|
|
|
|
|
|
|
|
|
|
COLORREF HexToColorRef(CString strHex);
|
|
|
|
|
|
RGBQUAD HexToRgbQuad(CString strHex);
|
|
|
|
|
|
CString RgbQuadToHex(RGBQUAD clr);
|
|
|
|
|
|
|
|
|
|
|
|
CString ColorRefToHex(COLORREF clr);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
CProgressCtrl* m_pProgress;
|
|
|
|
|
|
int __DecimalDigits;//ȱʡ<C8B1>ı<EFBFBD><C4B1><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB> void FloatToString(CString& result, double m_float);
|
|
|
|
|
|
DWORD m_nCodeType;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
extern thread_local CBaseFunction bf;
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE int CBaseFunction::GetDecimalDigits(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
return __DecimalDigits;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE void CBaseFunction::SetDecimalDigits(int digits)
|
|
|
|
|
|
{
|
|
|
|
|
|
__DecimalDigits=digits;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE int CBaseFunction::IsDigit(CString &line)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(line.GetLength()==0)
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
if(line[0]<='9'&&line[0]>='0')
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
if((line[0]=='-'||line[0]=='.'||line[0]=='+') && line.GetLength()>1)
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE int CBaseFunction::IsDigit(char* line)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(line[0]<='9'&&line[0]>='0')
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
if((line[0]=='-'||line[0]=='.'||line[0]=='+') && strlen(line)>1)
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE double CBaseFunction::Distance2(double x1,double y1,double x2,double y2)
|
|
|
|
|
|
{
|
|
|
|
|
|
x1-=x2;
|
|
|
|
|
|
y1-=y2;
|
|
|
|
|
|
return x1*x1+y1*y1;
|
|
|
|
|
|
}
|
|
|
|
|
|
AFX_INLINE double CBaseFunction::Distance3D(double x1, double y1, double z1, double x2,double y2,double z2)
|
|
|
|
|
|
{
|
|
|
|
|
|
x1 -= x2;
|
|
|
|
|
|
y1 -= y2;
|
|
|
|
|
|
z1 -= z2;
|
|
|
|
|
|
return sqrt(x1*x1 + y1*y1 + z1*z1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE double CBaseFunction::Distance(double x1,double y1,double x2,double y2)
|
|
|
|
|
|
{
|
|
|
|
|
|
return sqrt(Distance2(x1,y1,x2,y2));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE long CBaseFunction::FloatToLong(double value)
|
|
|
|
|
|
{
|
|
|
|
|
|
if(value<0) return (long)(value-0.5);
|
|
|
|
|
|
return (long)(value+0.5);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE CProgressCtrl* CBaseFunction::GetProgress(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_pProgress;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
AFX_INLINE void CBaseFunction::SetProgressPos(int nPos)
|
|
|
|
|
|
{
|
|
|
|
|
|
// if(m_pProgress) m_pProgress->SetPos(nPos);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extern "C" AFX_EXT_API CBaseFunction* WINAPI AfxGetBaseFunction();
|
|
|
|
|
|
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 "C" TRIVERTEX AFX_EXT_DATA vert[5];
|
|
|
|
|
|
//extern "C" GRADIENT_TRIANGLE AFX_EXT_DATA gTRi[4];
|
|
|
|
|
|
//extern "C" double AFX_EXT_DATA __z[4];
|
|
|
|
|
|
|
|
|
|
|
|
extern "C"
|
|
|
|
|
|
{
|
|
|
|
|
|
AFX_EXT_API TRIVERTEX* WINAPI AfxGetvert();
|
|
|
|
|
|
AFX_EXT_API GRADIENT_TRIANGLE* WINAPI AfxGetgTRi();
|
|
|
|
|
|
AFX_EXT_API double* WINAPI AfxGet__z();
|
|
|
|
|
|
};
|