📄 crdtran.h
字号:
#ifndef _CRDTRAN_H_
#define _CRDTRAN_H_
//笛卡尔坐标
typedef struct tagCRDCARTESIAN {
double x;
double y;
double z;
} CRDCARTESIAN;
typedef CRDCARTESIAN *PCRDCARTESIAN;
//大地坐标
typedef struct tagCRDGEODETIC {
double longitude; //经度
double latitude; //纬度
double height; //大地高
} CRDGEODETIC;
typedef CRDGEODETIC *PCRDGEODETIC;
//站心地平坐标(线坐标形式)
typedef struct tagCRDTOPOCENTRIC {
double northing; //北方向
double easting; //东方向
double upping; //垂线方向
} CRDTOPOCENTRIC;
typedef CRDTOPOCENTRIC *PCRDTOPOCENTRIC;
//站心地平坐标(极坐标形式)
typedef struct tagCRDTOPOCENTRICPOLAR {
double range; //极距
double azimuth; //方位角
double elevation; //高度角
} CRDTOPOCENTRICPOLAR;
typedef CRDTOPOCENTRICPOLAR *PCRDTOPOCENTRICPOLAR;
//1. 由笛卡尔坐标转换为大地坐标
void CartesianToGeodetic (PCRDGEODETIC pcg, //指向所转换出的大地坐标的指针;
PCRDCARTESIAN pcc, //指向待转换的笛卡尔坐标的指针;
double dSemiMajorAxis,//参考椭球的长半轴
double dFlattening); //参考椭球的扁率。
//2. 由大地坐标转换为笛卡尔坐标
void GeodeticToCartesian (PCRDCARTESIAN pcc, //指向所转换出的笛卡尔坐标的指针;
PCRDGEODETIC pcg, //指向待转换的大地坐标的指针;
double dSemiMajorAxis,//参考椭球的长半轴;
double dFlattening); //参考椭球的扁率。
//3. 由笛卡尔坐标转换为站心地平坐标
void CartesianToTopocentric (PCRDTOPOCENTRIC pct, //指向所转换出的站心地平坐标的指针;
PCRDCARTESIAN pcc, //指向待转换的笛卡尔坐标的指针;
PCRDCARTESIAN pccCenter, //指向站心的笛卡尔坐标的指针;
double dSemiMajorAxis, //参考椭球的长半轴;
double dFlattening); //参考椭球的扁率。
//4. 由站心地平直角坐标转换为站心地平极坐标
void TopocentricToTopocentricPolar (PCRDTOPOCENTRICPOLAR pctp, //指向所转换出的站心地平极坐标的指针;
PCRDTOPOCENTRIC pct); //指向待转换的站心地平坐标的指针;
////////////////////////////////////////////////////////////////////////////////////////////
//将任意一个弧度 original 标准化成 0 ~ 6.28318530717958647693 之间的数字 [0 , 2π)
double radnormal(double original);
//将 DDD.MMSS 表示的角度化成弧度
double ang2rad(double ang);
//将弧度化成 DDD.MMSS 表示的角度
double rad2ang(double rad);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -