⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wxwz.txt

📁 卫星位置计算的算法
💻 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 + -