版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言计算GPS卫星位置C语言计算GPS卫星位置/NUMPAGES18C语言计算GPS卫星位置C语言计算GPS卫星位置C语言计算GPS卫星位置1概述在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置。卫星位置的计算是根据卫星电文所提供的轨道参数按一定的公式计算的。本节专门讲解观测瞬间GPS卫星在地固坐标系中坐标的计算方法。2卫星位置的计算1.计算卫星运行的平均角速度n根据开普勒第三定律,卫星运行的平均角速度n0可以用下式计算:式中μ为WGS-84坐标系中的地球引力常数,且μ=3.986005×1014m3/s2。平均角速度n0n=n0+Δn(4-12)2.计算归化时间tk首先对观测时刻t′作卫星钟差改正t=t′-Δt然后对观测时刻t归化到GPS时系tk=t-toc(4-13)式中tk称作相对于参考时刻toe的归化时间(读者注意:toc≠toe)。3.观测时刻卫星平近点角Mk的计算Mk=M0+ntk(4-14)式中M0是卫星电文给出的参考时刻toe的平近点角。4.计算偏近点角EkEk=Mk+esinEk(Ek,Mk以弧度计)(4-15)上述方程可用迭代法进行解算,即先令Ek=Mk,代入上式,求出Ek再代入上式计算,因为GPS卫星轨道的偏心率e很小,因此收敛快,只需迭代计算两次便可求得偏近点角Ek。5.真近点角Vk的计算由于:因此:6.升交距角Φk的计算ω为卫星电文给出的近地点角距。7.摄动改正项δu,δr,δi的计算δu,δr,δi分别为升交距角u的摄动量,卫星矢径r的摄动量和轨道倾角i的摄动量。8.计算经过摄动改正的升交距角uk、卫星矢径rk和轨道倾角ik9.计算卫星在轨道平面坐标系的坐标卫星在轨道平面直角坐标系(X轴指向升交点)中的坐标为10.观测时刻升交点经度Ωk的计算升交点经度Ωk等于观测时刻升交点赤经Ω(春分点和升交点之间的角距)与格林泥治视恒星时GAST(春分点和格林尼治起始子午线之间的角距)之差,Ωk=Ω-GAST(4-23)又因为:(4-24)其中Ωoe为参与时刻toe的升交点的赤经;是升交点赤经的变化率,卫星电文每小时更新一次Ω和toe。此外,卫星电文中提供了一周的开始时刻tw的格林尼治视恒星时GASTw。由于地球自转作用,GAST不断增加,所以:GAST=GASTw+ωet(4-25)式中ωe=7.29211567×10-5rad/s为地球自转的速率;t为观测时刻。由式(4-24)和(4-25),得:由(4-13)式,得:其中,、、的值可从卫星电文中获取。11.计算卫星在地心固定坐标系中的直角坐标把卫星在轨道平面直角坐标系中的坐标进行旋转变换,可得出卫星在地心固定坐标系中的三维坐标:12.卫星在协议地球坐标系中的坐标计算考虑极移的影响,卫星在协议地球坐标系中的坐标为利用C语言程序实现#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#defineu3.986004418e+14#defineWE7.292115e-6structcanshu{ intprn,nian,yue,ri,shi,fen;//卫星PRN号,年,月,日,时,分 doublemiao;//秒 longdoubleadoe,a0,a1,a2,mo,dn,e,ga,pio,io,w,pid,ii,cuc,cus,cue,crs,crc,cis,cic,toe,aodc,wn; /*参数说明:ADOE值,a0卫星钟偏差,a1卫星钟漂移,a2卫星钟频率漂移,M0平近点角,Δn平运动差,e偏心率,a1/2半长轴的平方根,Ω0轨道平面升交点经度, i0倾角,ω近地点角距,*Ω升交点速率,IDot倾角速率,CucCus升交角距的摄动改正项, CrcCrs地心距的摄动改正项,CicCis倾角的摄动改正项, toe参考历元*/};voidwxzbjx(structcanshu*pt){ longdoublea,n0,n,t,tk,toc,mk,ek,vk,fik,uk,rk,ik; longdoublexk,yk,zk,lk; longdoubleXK,YK,ZK; inttemp; pt->nian=pt->nian+2000; t=(longdouble)(((pt->nian)-1980)*365*24*3600+(pt->yue-1)*30*24*3600+pt->ri *24*3600+pt->shi*3600+pt->miao); a=pt->ga*pt->ga; n0=sqrt(WE/(a*a*a));//平均角速度n0 n=n0+pt->dn; tk=t-pt->toe; toc=pt->a0+pt->a1*(t-pt->toe)+pt->a2*(t-pt->toe)*(t-pt->toe); tk=tk-pt->toe; mk=pt->mo+n*tk; ek=mk; for(temp=0;temp<10;temp++) { ek=mk+pt->e*sin(ek);//利用迭代法求偏近点角ek } vk=2*atan(sqrt((1+pt->e)/(1-pt->e))*(tan(ek))/2); fik=vk+pt->w; uk=fik+pt->cuc*cos(2*fik)+pt->cus*sin(2*fik); rk=pt->ga*pt->ga*(1-pt->e*ek)+pt->crc*cos(2*fik)+pt->crs*sin(2*fik); ik=pt->io+pt->cic*cos(2*fik)+pt->cis*sin(2*fik)+pt->ii*tk; xk=rk*cos(uk); yk=rk*sin(uk); zk=0; lk=pt->pio+(pt->pid-WE)*tk-WE*pt->toe; XK=xk*cos(lk)-yk*cos(ik)*sin(lk); YK=xk*sin(lk)+yk*cos(ik)*cos(lk); ZK=yk*sin(ik); printf("\n%d年%d月%d号%d时%.2f秒%d号卫星的坐标:",pt->nian,pt->yue,pt->ri,pt->shi,pt->miao,pt->prn); printf("\nXk=%.9f\nYk=%.9f\nZK=%.9f\n\n",XK,YK,ZK);}intmain(void){ FILE*fp,*fp1,*fp2; structcanshua; inti=0,hanhao=1; longdouble temp1,temp2,temp3,temp5,temp4,temp6,temp7; charch,ch1; if((fp1=fopen("E:\\星历文件\\guangboxingli2.txt","r"))==NULL)//请自定义星历文件位置及名称 { printf("文件无法打开!"); exit(0); } else { if((fp2=fopen("E:\\星历文件\\guangboxingli2fu.txt","w"))==NULL) { printf("文件无法打开!"); exit(0); } else { while((ch1=fgetc(fp1))!=EOF) { if(ch1=='\n') { i++; } putchar(ch1); if(i==15) { break; } } while(!feof(fp1)) { ch1=fgetc(fp1); if(ch1=='D') { ch1='e'; } fputc(ch1,fp2); } fclose(fp1); }fclose(fp2); } printf("以上是星历文件的头文件!\n"); system("pause"); printf("读取文件参数数据\n!"); if((fp=fopen("E:\\星历文件\\guangboxingli2fu.txt","r"))==NULL)//创建计算结果文档 { printf("文件无法打开!"); exit(0); } while(!feof(fp)) { switch(hanhao) { case1: { fscanf(fp,"\n%d%d%d%d%d%d%lf%le%le%le",&a.prn,&a.nian,&a.yue,&a.ri,&a.shi, &a.fen,&a.miao,&a.a0,&a.a1,&a.a2); printf("%d%d%d%d%d%d%lf%le%le%le",a.prn,a.nian,a.yue,a.ri,a.shi, a.fen,a.miao,a.a0,a.a1,a.a2); hanhao++; } case2: { fscanf(fp,"%le%le%le%le",&a.adoe,&a.crs,&a.dn,&a.mo); printf("\n%le%le%le%le",a.adoe,a.crs,a.dn,a.mo); hanhao++; } case3: { fscanf(fp,"%le%le%le%le",&a.cue,&a.e,&a.cus,&a.ga); printf("\n%le%le%le%le",a.cue,a.e,a.cus,a.ga); hanhao++; } case4: { fscanf(fp,"%le%le%le%le",&a.toe,&a.cic,&a.pio,&a.cis); printf("\n%le%le%le%le",a.toe,a.cic,a.pio,a.cis); hanhao++; } case5: { fscanf(fp,"%le%le%le%le",&a.io,&a.crc,&a.w,&a.pid); printf("\n%le%le%le%le",a.io,a.crc,a.w,a.pid); hanhao++; } case6: { fscanf(fp,"%le%le%le%le",&a.ii,&temp1,&a.wn,&temp2); printf("\n%le%le%le%le",a.ii,temp1,a.wn,temp2); hanhao++; } case7: { fscanf(fp,"%le%le%le%le",&temp3,&temp4,&temp5,&a.aodc); printf("\n%le%le%le%le",temp3,temp1,temp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版人工智能技术研发与应用销售合同3篇
- 2025年度临建板房装配式建筑技术与施工合同4篇
- 2025年度新能源储能系统销售合同样本4篇
- 生物医药研发创新平台建设合同
- 中国国际健康产业展览会参展合同
- 云数据存储服务合同
- 煤炭洗选合同
- 私人飞机租赁使用合同协议书
- 私人厨师家庭宴会料理服务合同
- 2025年度旅游行业应收账款票据质押融资合同
- 孩子改名字父母一方委托书
- 2024-2025学年人教版初中物理九年级全一册《电与磁》单元测试卷(原卷版)
- 江苏单招英语考纲词汇
- 矿山隐蔽致灾普查治理报告
- 2024年事业单位财务工作计划例文(6篇)
- PDCA循环提高护士培训率
- 2024年工程咨询服务承诺书
- 青桔单车保险合同条例
- 车辆使用不过户免责协议书范文范本
- 《狮子王》电影赏析
- 2023-2024学年天津市部分区九年级(上)期末物理试卷
评论
0/150
提交评论