📄 wxwz.txt
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<graphics.h>
void WriteSatPosFile(FILE *SatPosFile,int prn,XYZCoor *SVPos);
void GetSVPos(SVText *Text,double t,double *X,double *Y,double *Z);
double Get_atan(double z,double y);
int GetGPSTime(int year,int month,int day,
int hour,int minute,double second,double *gpstime);
int read RinexEPP(FILE *RinexEPP_file,SVText *snv,
int *year,int *month,int *day,int *hour,int *minute,
double *second,double *gpstime,int *wn);
/*应用卫星导航数据计算卫星地心坐标*/
void GetSVPos(SVText *Text,double t,double *X,double *Y,double *Z)
{ double mu=3.986005e14;
double n0,n,tk,mk,ek1,ek2,ek,Error=1.0e-12,vk,phik;
double deltau,deltar,deltai,uk,rk,ik,xk,yk,omegak;
double omega=7.292115147e-5;
n0=sqrt(mu)/(Text->roota*Text->roota*Text->toota);
n=n0+Text->deltan;
tk=t-Text->toe;
if(tk>302400) tk-=604800;
else if(tk<-302400) tk+=604800;
mk=Text->m0+n*tk;
ek1=mk;
do{
ek2=mk+Text->e*sin(ek1);
if(fabs(ek2-ek1)<=Error) break;
ek1=ek2;
}while(1);
ek=ek1;
vk=Get_atan(cos(ek)-Text->e,sqrt(1.0-Text->e*Text->e)*sin(ek));
phik=vk+Text->omega;
deltau-Text->cuc*cos(2.0*phik)+Text->cus*sin(2.0*phik);
deltar-Text->crc*cos(2.0*phik)+Text->crs*sin(2.0*phik);
deltai-Text->cic*cos(2.0*phik)+Text->cis*sin(2.0*phik);
uk=phik+deltau;
rk=Text->roota*Text->roota*(1.0-Text->e*cos(ek))+deltar;
ik=Text->i0+deltai+Text->idot*tk;
xk=rk*cos(uk);
yk=rk*sin(uk);
omegak=Text->omega0+(Text->omegadot-omega)*tk-omegae*Text->toe;
*X=xk*cos(omegak)-yk*cos(ik)*sin(omegak);
*Y=xk*sin(omegak)+yk*cos(ik)*cos(omegak);
*Z=yk*sin(ik);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -