资源简介
北斗伪距单点定位程序,在VS2012下运行,可以读取最新的RINEX3格式的混合文件,精度在十米左右。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include“matrix.h“
using namespace std;
#include“mystruct.h“
//以下矩阵要用------------------
using namespace std; //
#ifndef _NO_NAMESPACE //
using namespace math; //
#define STD std //
#else //
#define STD //
#endif //
//
#ifndef _NO_TEMPLATE //
typedef matrix Matrix; //
#else //
typedef matrix Matrix; //
#endif//--------
///////////////////////
/////////////////////////////////////////////////
void GEO(int& posktime_gps& t2double& trsta_polar& spvector& vn)
{
//double pi=3.1415926535898;
double tk=t2.num_sec-vn[posk].TOE.num_sec+(t2.num_week-vn[posk].TOE.num_week)*604800;//正常减出来是-14.050
//double tk=-14.5;
double const GM=3.9860047e14;
double const we=7.29211514767e-5;//地球自转角速度
double const pi=3.1415926535898;
double const c=2.99792458e8;//光速
double n0=sqrt(GM)/pow(vn[posk].sqrtA3);
double e_n=n0+vn[posk].delta_n;
if(tk>302400) tk=tk-604800;
if(tk<-302400) tk=tk+604800;
double M=vn[posk].M0+tk*e_n;//平近点角
//cout<<“M平近点角=“< double EE0Ek;
/////迭代偏近点角
E0=M;
do
{Ek=E0;
E=M+vn[posk].e*sin(Ek);
E0=E;
}while(fabs(E-Ek)>1e-12);//fabs浮点数取绝对值
// cout<<“偏近点角E“< double vk=atan2((sqrt(1-vn[posk].e*vn[posk].e)*sin(E))cos(E)-vn[posk].e);//注意atan和atan2的区别
//cout<<“真近点角“< double faik=vk+vn[posk].w;
//cout<<“升交距角“< /////摄动改正项u,r,i计算
double duk=vn[posk].Cuc*cos(2*faik)+vn[posk].Cus*sin(2*faik);//升交距角u的摄动量
double drk=vn[posk].Crc*cos(2*faik)+vn[posk].Crs*sin(2*faik);//卫星矢径r的摄动量
double dik=vn[posk].Cic*cos(2*faik)+vn[posk].Cis*sin(2*faik);//轨道倾角i的摄动量
//经过摄动改正后的
double uk=duk+faik;
double rk=vn[posk].sqrtA*vn[posk].sqrtA*(1-vn[posk].e*cos(E))+drk;
double ik=vn[posk].i0+dik+vn[posk].i_DOT*tk;
// cout<<“升交距角uk“< //卫星在轨道平面坐标系的坐标
double xkd=rk*cos(uk);
double ykd=rk*sin(uk);
////改正后升交点经度
// tk=-14.50000011920929;
double tempp1=vn[posk].OMEGA;
double tempp2=vn[posk].OMEGA_DOT;
double tempp3= t2.num_sec;
double omgak=vn[posk].OMEGA+(vn[posk].OMEGA_DOT)*tk-we*vn[posk].TOE.num_sec;
//omgak=-34.497361011748382;
//计算卫星在地心固定坐标系中的直角坐标
double xk=xkd*cos(omgak)-ykd*cos(ik)*sin(omgak);
double yk=xkd*sin(omgak)+ykd*cos(ik)*cos(omgak);
double zk=ykd*sin(ik);
///////计算卫星在CGCS2000中的坐标
//double Rx[3][3] = {{100}{0cos(-5.0 / 180 * pi)sin(-5.0 / 180 * pi)}{0-sin(-5.0 / 180 * pi)cos(-5.0 / 180 * pi)}}; //C++中cossinasinacos这些三角函数操作的是弧度而非角度!!!
//double Rz[3][3] = {{cos(we * tk)sin(we * tk)0}{-sin(we * tk)cos(we * tk)0}{001}};
//double R[3][3]sat[3][1];
//double satuser[3][1] = {xkykzk};
Matrix A(33
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-08-14 11:59 BD\
目录 0 2016-08-11 22:22 BD\BD\
文件 4317 2016-08-01 11:12 BD\BD\BD.vcxproj
文件 1649 2016-08-01 11:12 BD\BD\BD.vcxproj.filters
目录 0 2016-08-12 19:56 BD\BD\Debug\
文件 1693 2016-08-01 11:33 BD\BD\Debug\BD.Build.CppClean.log
文件 59 2016-08-12 11:56 BD\BD\Debug\BD.lastbuildstate
文件 6905 2016-08-12 11:56 BD\BD\Debug\BD.log
文件 25516 2016-08-12 11:56 BD\BD\Debug\CL.read.1.tlog
文件 1338 2016-08-12 11:56 BD\BD\Debug\CL.write.1.tlog
文件 2602 2016-08-12 11:56 BD\BD\Debug\cl.command.1.tlog
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
文件 2 2016-08-12 11:56 BD\BD\Debug\li
............此处省略47个文件信息
- 上一篇:西安交通大学王兆安主编的电力电子技术第五版
- 下一篇:QC手法在现场的应用
评论
共有 条评论