1、5.15373039818E+03 卫星轨道长半轴的平方根t0e4.60800000000E+05 星历的参考时刻,从星期日零时开始量度,以秒计M0-2.14992476872E+00 参考时刻t0e的平近点角(弧度)e1.25958691351E-02 轨道偏心率-1.85137234909E+00 近地点角距(弧度)Cuc2.75485217571E-06 升交点角距的余弦调和改正项的振幅(弧度)Cus9.03755426407E-06 升交点角距的正弦调和改正项的振幅(弧度)Crc1.91875000000E+02 轨道半径的余弦调和改正项的振幅(弧度)Crs5.37812500000E
2、+01 轨道半径的正弦调和改正项的振幅(弧度)Cic2.06753611565E-07 轨道倾角的余弦调和改正项的振幅(弧度)Cis-7.26431608200E-08 轨道倾角的正弦调和改正项的振幅(弧度)IDOT-1.31434044204E-10 轨道倾角的变率i09.37690094716E-01 参考时刻的轨道倾角(弧度)-7.91890109042E-09 升交点赤经的变率(弧度/s)01.93198315097E+00 GPS周开始时刻的升交点经度(弧度)4作业过程 (10)升交点经度:t =0 +(-e)(t - t0e)-e t0e式中:e为地球自转角速度,e =7.2921
3、15146710-5rad/s;为升交点赤经变化率,0为GPS周开始时刻的升交点经度,和0均由星历文件给出;t0为参考时刻,一般取t0 = 0,为一周的开始(星期日的子夜);t0e为广播星历的参考历元时刻,从t0开始起算;(11)卫星在地固坐标系中的空间直角坐标为:,为旋转矩阵,将其代入并展开后得5 源程序#include stdlib.hmath.h#includeiostream.hconst int k=20;/历元数double Xk,Yk,Zk;/计算所得卫星坐标const double GM=3986004.418E8;/地球引力常数const double we=7.292115
4、1467E-5;/地球自转角速度double dn,a05,t0e,M0,e,w,Cuc,Cus,Crc,Crs,Cic,Cis,IDOT,i0,WMG,WMG0;/定义广播星历参数/广播星历参数导入void Input() ifstream f1(广播星历参数.txt); if(!f1) cerrdn;a05;t0e;M0;e;w;Cuc;Cus;Crc;Crs;Cic;Cis;IDOT;i0;WMG;WMG0; f1.close();/卫星坐标计算void Compute(double t,int k) double n0,n,tk,Mk,E0,Ek,Vk,fk,du,dr,di,uk,r
5、k,ik,xk,yk,Lt;/定义卫星坐标计算过程中间量/()计算平均角速度n: n0=sqrt(GM/pow(a05,6); n=n0+dn;/()计算规化时刻tk: tk=t-t0e;/()计算平近点角Mk: Mk=M0+n*tk;/()迭代计算偏近点角Ek: E0=Mk; do Ek=Mk+e*sin(E0); E0=Ek; while(Mk+e*sin(E0)-E0=1e-8);/()计算真近点角Vk: double v1=sqrt(1-e*e)*sin(Ek); double v2=cos(Ek)-e; Vk=atan2(v1,v2);/()计算升交角距fk: fk=Vk+w;/()
6、摄动改正: du=Cuc*cos(2*fk)+Cus*sin(2*fk);/升交角距改正du dr=Crc*cos(2*fk)+Crs*sin(2*fk);/轨道向径改正dr di=Cic*cos(2*fk)+Cis*sin(2*fk);/轨道倾角改正di uk=fk+du;/改正后的升交角距uk rk=a05*a05*(1-e*cos(Ek)+dr;/改正后的轨道向径rk ik=i0+di+IDOT*tk;/改正后的轨道倾角ik/()计算卫星在升交点轨道直角坐标系的坐标: xk=rk*cos(uk); yk=rk*sin(uk);/()计算升交点精度: Lt=WMG0+(WMG-we)*(t
7、-t0e)-we*t0e;/()计算卫星空间直角坐标: Xk=xk*cos(Lt)-yk*cos(ik)*sin(Lt); Yk=xk*sin(Lt)+yk*cos(ik)*cos(Lt); Zk=yk*sin(ik);void main() Input(); for(int i=0;ik;i+) double t=t0e+i*60; Compute(t,i); cout 历元/s 卫星号 X/m Y/m Z/m 卫地距离 for(i=0; cout.precision(11); coutt0e+i*60 7 Xi YiZisqrt(Xi*Xi+Yi*Yi+Zi*Zi)/输出结果到“卫星坐标计
8、算结果.txt” ofstream outfile; outfile.open(卫星坐标计算结果.txt if(outfile.is_open () outfile for(int i=0; outfile.precision(11); outfile outfile.close();6 计算结果表6.1卫星坐标计算结果历元/s卫星号X/mY/mZ/m4608007-13413856.78016092624.86716628017.859460860-13535898.78416110553.89216507426.350460920-13657027.02116128646.85816385
9、596.447460980-13777233.04616146894.38616262536.953461040-13896508.54616165287.01616138256.762461100-14014845.33316183815.20216012764.866461160-14132235.35116202469.31815886070.351461220-14248670.67316221239.65815758182.394461280-14364143.50516240116.43715629110.267461340-14478646.18616259089.79615498863.336461400-14592171.19116278149.79915367451.057461460-14704711.12616297286.43915234882.978461520-14816258.73916316489.63615101168.738461580-14926806.91316335749.24214966318.067461640-15036348.668
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1