#ifndef _DATA_FUNC_H #define _DATA_FUNC_H #include #include #include #include #include #include #include #include #include #include #define pole_radius 6356752.3 #define equator_radius 6378137 #define pi 3.1415926535897932384626433832795 #define OUTPUT "-o" using namespace std; struct vector //定义矢量结构体 { double x,y,z; }; struct vertex //定义顶点结构体 { int No;//顶点序号 vector vt;;//顶点坐标 }; struct edge { int No; int ver[2]; }; struct face { int No; int ver[3]; }; struct tetra //定义四面体结构体 { int No;//四面体序号 int ver[4];//相应四面体顶点序号 }; struct sphere_point{//定义球坐标点 double phi,thet,radius; }; double WGS84_r(double lati){//返回WGS84参考椭球半径 return pole_radius*equator_radius/sqrt(pow(pole_radius,2)*pow(cos((double) lati*pi/180),2)+pow(equator_radius,2)*pow(sin((double) lati*pi/180),2)); } vector SCS2CCS(sphere_point p1){//球坐标转直角坐标 vector v; v.x = p1.radius*sin((0.5-p1.thet/180.0)*pi)*cos((2.0+p1.phi/180.0)*pi); v.y = p1.radius*sin((0.5-p1.thet/180.0)*pi)*sin((2.0+p1.phi/180.0)*pi); v.z = p1.radius*cos((0.5-p1.thet/180.0)*pi); return v; } #endif