63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
#ifndef _DATA_FUNC_H
|
|
#define _DATA_FUNC_H
|
|
#include <fstream>
|
|
#include <iostream>
|
|
#include <string.h>
|
|
#include <sstream>
|
|
#include <iomanip>
|
|
#include <ctime>
|
|
#include <cmath>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#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 |