gm3d-gui/src/head_func.h

93 lines
3.4 KiB
C
Raw Normal View History

2019-09-05 12:22:21 +08:00
#ifndef _HEAD_FUNC_H
#define _HEAD_FUNC_H
#include "iostream"
#include "fstream"
#include "sstream"
#include "string.h"
#include "cmath"
#include "iomanip"
#include "stdio.h"
#include "stdlib.h"
//#include "unistd.h"
2019-09-05 12:22:21 +08:00
#include "vector"
#include "map"
#include "algorithm"
#include "ctime"
#include "omp.h"
#include "random"
using namespace std;
//<2F><>ѧ<EFBFBD><D1A7><EFBFBD><EFBFBD>
#define BDL_MAX 1e+30 ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define BDL_MIN -1e+30 ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
#define PRECISION 16 ///< <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<D2AA>õ<EFBFBD>λ<EFBFBD><CEBB>
#define ZERO 1e-16 ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
2019-09-05 12:22:21 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define Pi (4.0*atan(1.0)) ///< Բ<><D4B2><EFBFBD><EFBFBD>
#define G0 6.67408e-3 ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>e-11<31><31><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>λת<CEBB><D7AA><EFBFBD><EFBFBD>ȡά<C8A1>ȵ<EFBFBD>λΪm<CEAA><6D><EFBFBD>ܶȵ<DCB6>λΪg/cm^3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G0<47><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ΪmGal
#define T0 5.0e+4 ///< <20>شų<D8B4>ƽ<EFBFBD><C6BD>ǿ<EFBFBD><C7BF>
//<2F><EFBFBD><EABAAF>
#define MAX(a,b) (a>b?a:b) ///< <20><><EFBFBD><EFBFBD>a<EFBFBD><61>b<EFBFBD><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define MIN(a,b) (a<b?a:b) ///< <20><><EFBFBD><EFBFBD>a<EFBFBD><61>b<EFBFBD><62><EFBFBD><EFBFBD>Сֵ
#define SetToBox(a,b,in) (MAX(a,MIN(b,in))) ///< <20><><EFBFBD><EFBFBD>a<EFBFBD><61><62><D6AE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>in<69><6E>a<EFBFBD><61><62><D6AE><EFBFBD><EFBFBD>ֱ<EFBFBD>ӷ<EFBFBD><D3B7>أ<EFBFBD><D8A3><EFBFBD><EFBFBD>򷵻ؽϽ<D8BD><CFBD>ı߽<C4B1>ֵ
//<2F>ն<EFBFBD><D5B6><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>Ʒ<EFBFBD>
#define BOLDRED "\033[1m\033[31m" ///< <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ<EFBFBD>Ӵ<EFBFBD>
#define BOLDGREEN "\033[1m\033[32m" ///< <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ<EFBFBD>Ӵ<EFBFBD>
#define BOLDYELLOW "\033[1m\033[33m" ///< <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ<EFBFBD>Ӵ<EFBFBD>
#define BOLDBLUE "\033[1m\033[34m" ///< <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ<EFBFBD>Ӵ<EFBFBD>
#define UNDERLINE "\033[1m\033[4m" ///< <20><><EFBFBD>ú<EFBFBD><C3BA><EFBFBD><EFBFBD>ַ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD><C2BB><EFBFBD>
#define RESET "\033[0m" ///< <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
#define MOVEUP(x) printf("\033[%dA", (x)) ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ųx<C5B2><78>
#define MOVEDOWN(x) printf("\033[%dB", (x)) ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78>
#define MOVELEFT(x) printf("\033[%dD", (x)) ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>ַ<EFBFBD>
#define MOVERIGHT(x) printf("\033[%dC", (x)) ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD>ַ<EFBFBD>
#define MOVETO(y,x) printf("\033[%d;%dH", (y), (x)) ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>y<EFBFBD>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD>Ų<EFBFBD><C5B2>x<EFBFBD>ַ<EFBFBD>
#define CLEARLINE "\033[K" ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLEARALL "\033[2J" ///< <20><><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ݽṹ
typedef vector<int> _1iArray; ///< <20><><EFBFBD><EFBFBD>һά<D2BB><CEAC><EFBFBD><EFBFBD>
typedef vector<double> _1dArray; ///< ˫<><CBAB><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD>һά<D2BB><CEAC><EFBFBD><EFBFBD>
typedef vector<string> _1sArray; ///< <20>ַ<EFBFBD><D6B7><EFBFBD>һά<D2BB><CEAC><EFBFBD><EFBFBD>
typedef vector<vector<int> > _2iArray; ///< <20><><EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
typedef vector<vector<double> > _2dArray; ///< ˫<><CBAB><EFBFBD>ȸ<EFBFBD><C8B8><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
typedef map<int,int> _int2intMap; ///< <20><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ε<EFBFBD>ӳ<EFBFBD><D3B3>
//ģ<>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2019-09-05 12:22:21 +08:00
struct modelist{
char mod_type[1024];
char val_type[1024];
char mod_para[1024];
double mod_value;
};
typedef vector<modelist> modelistArray;
//ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
2019-09-05 12:22:21 +08:00
struct cpoint{
int id = -1;
double x = BDL_MAX; double y = BDL_MAX; double z = BDL_MAX;
};
typedef vector<cpoint> cpointArray;
typedef map<string,cpoint> _str2pointMap;
//<2F>۲<EFBFBD><DBB2><EFBFBD>
2019-09-05 12:22:21 +08:00
struct obspoint : public cpoint{
double val = BDL_MAX; double dev = BDL_MAX;
};
typedef vector<obspoint> obspointArray;
//<2F><><EFBFBD><EFBFBD>
2019-09-05 12:22:21 +08:00
struct cube{
cpoint cen;
int ids[8] = {-1,-1,-1,-1,-1,-1,-1,-1};
double dx = BDL_MAX; double dy = BDL_MAX; double dz = BDL_MAX;
};
typedef vector<cube> cubeArray;
/*************************<2A><><EFBFBD>ݽṹ<DDBD><E1B9B9><EFBFBD><EFBFBD>********************************/
cpoint operator -(cpoint,cpoint); //ʸ<><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double modCpoint(cpoint); //ʸ<><CAB8>ģ
/*************************ȫ<>ֺ<EFBFBD><D6BA><EFBFBD>********************************/
double arctg(double); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>atan<61><6E><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>atan <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>atan+pi
stringstream str2ss(string); //<2F><>stringת<67><D7AA>Ϊstringstream
string cpoint_id(cpoint); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>cpoint<6E><74>λ<EFBFBD><CEBB>id
int open_infile(ifstream&,char*); //<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>򷵻<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>򷵻<EFBFBD>1
int open_outfile(ofstream&,char*); //<2F><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>򷵻<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>򷵻<EFBFBD>1
double grid_interpolate(double,double,double,double,double,double,double,double,double,double); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
2019-09-05 12:22:21 +08:00
#endif