📄 getposition.h
字号:
#ifndef _GETPOSITION_H
#define _GETPOSITION_H
#include "Time.h"
#include "Coordinate.h"
#include "Rinex.h"
#include <list>
using namespace std;
const double _DAY_IN_SECOND=86400;
const double _HOUR_IN_SECOND=3600;
const double _MINUTE_IN_SECOND=60;
const double c=2.99792458e+08;//光速
const double GM=3.986005e+14;//重力常数
const double we=7.2921151467e-05;//地球自转角速度
const double F=-4.442807633e-10;
const double f1=1575.42e+6;
typedef struct tagUtilParam
{
double n;//平均角速度
double E;//偏近点角
double u0;
double vk;//真近点角
double uk;//经过改正的升交角距
double r;//经过改正的向径
double i;//经过改正的轨道倾角
double L;//改正后的升交点经度
} UtilParam;
typedef UtilParam *PUtilParam;
typedef struct tagSatVelocity //卫星速度
{
double xv;
double yv;
double zv;
} SatVel;
typedef SatVel *PSatVel;
//得到最靠近所给时刻的历元单位
list<PGMNREC>::iterator GetBestGMNREC(list<GMNREC>& navRecord,
int& nPRN,PCOMMONTIME pctEpoch);
//得到有关计算卫星空间位置,发射时刻改正,卫星速度有关的参数
//避免代码重复
void GetUtilParameter(list<PGMNREC>& navRecord,int& nPRN,PCOMMONTIME pctEpoch,
PUtilParam pParam);
//计算卫星在笛卡尔坐标系中的位置
void GetOrbNClk(list<PGMNREC>& navRecord,int& nPRN,PCOMMONTIME pctEpoch,
PCRDCARTESIAN pcrdOrb/*,double* pdSVClkBias*/);
//计算卫星C/A码信号发射时刻的改正
void GetSVClkBias(list<PGMNREC>& navRecord,int& nPRN,PCOMMONTIME pctEpoch,
double* pdSVClkBias,double *detj);
//计算卫星的速度
void GetSatVelocity(list<PGMNREC>& navRecord,int& nPRN,PCOMMONTIME pctEpoch,
PSatVel psatv);
typedef struct tagSITEV //测站速度
{
double xv;
double yv;
double zv;
}SITEV;
typedef SITEV *PSITEV;
typedef struct tagPPONERESULT{
COMMONTIME epoch;//历元时刻
int sat_num;//参与解算的卫星数
CRDCARTESIAN crd; ///////////// ///////////// /////////// 测站坐标
double clk_bias;//接收机钟差
double PDOP;
SITEV m_sitev;//测站速度
int flag;//是否能进行速度解算,0代表不能,1代表能
}PPONERESULT;
typedef PPONERESULT *PPPONERESULT;
void PPOne(GMOHDR& gmoh,/*观测值头文件*/
list<PGMOREC>::iterator pgmor,/*某一历元观测值 数据记录*/
list<PGMNREC>& navRecord,/*导航电文文件*/
PPPONERESULT presult);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -