#pragma once #include "standardglobe_global.h" #include /// /// 经纬高坐标系坐标 /// struct LLAPos { double _lon_deg = 0; double _lat_deg = 0; double _alt_m = 0; }; /// /// 地心坐标系 /// struct ECEFPos { double _x_pos = 0; double _y_pos = 0; double _z_pos = 0; QVector3D getVec3() const; }; /// /// 东天北坐标系 /// struct ENUPos { double _e_pos = 0; double _n_pos = 0; double _t_pos = 0; }; /// /// 极坐标 /// struct PolarPos { double _dist_m = 0; double _azimuth_deg = 0; double _pitch_deg = 0; }; /// /// 标准球体坐标转换工具 /// class STANDARDGLOBE_EXPORT StandardGlobe { private: /// /// 标准正球体星球直径 /// static double _radius_m; public: StandardGlobe(); static ECEFPos llaToEcef(const LLAPos &v); static LLAPos ecefToLLA(const ECEFPos &v); /// /// 根据LLA坐标获取两点之间的大地线长度和b->t初始方位角,warning:本计算忽视LLA的高度值 /// /// /// /// /// static void getDistanceWithTargetLLA(const LLAPos &base, const LLAPos &target, double &dist, double &azi); /// /// 根据两点之间的大地线长度和b->t初始方位角,计算目标LLA定位坐标 /// /// /// /// /// static void getTargetLLAWithDistance(const LLAPos& base, double dist, double azi, LLAPos& target); };