• 大小: 6KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-06-15
  • 语言: C/C++
  • 标签:

资源简介

高斯正反算C++源代码,能准确进行高斯正反换算

资源截图

代码片段和文件信息

#include 
#include
#define PI 3.14159265358979312          


double BLxy;
void zs(double Bdouble Ldouble adouble e2double e12);
void fs(double xdouble yint mdouble adouble e2double e12);
/*double setf(double a int t)
{
   double b=fabs(a);
   for(int i=0;i    b*=10;
   if(b-floor(b)>0.5) b=floor(b)+1;
   else b=floor(b);
   for(i=0;i    b/=10;
   if(a<0) b=-b;
    return b;
}*/
 double dh(double angle)
 {double ab;
  angle=modf(angle&a);
  angle=modf(angle*100.0&b);
  return(a+b/60.0+angle/36.0)*(PI+3.0E-16)/180.0;
 }
//**********************************************************************
 double hd(double angle)
 {double abc;
 angle=modf(angle*180.0/(PI-3.0E-16)&a);
 angle=modf(angle*60.0&b);
 angle=modf(angle*60.0&c);
 return a+b*0.01+c*0.0001+angle*0.0001;
 }
 //*************************************************************************
void Gaussjisuan()
{
int style2style3nm;
double L0;
double abe2e12;
     cout<<“------请选择参考椭球:--------“<     cout<<“     1  克拉索夫斯基椭球“<     cout<<“     2  1975年国际椭球“<    cin>>style2;
   cout.precision(17);
 if(style2==1)
 {  a=6378245.0000000000;
    b=6356863.0187730473;
e2=0.006693421622966;
e12=0.006738525414683;
 cout<<“ ------克拉索夫斯基椭球参数为:“<     cout<<“        长半轴a=“<  cout<<“        短半轴b=“<  cout<<“        第一偏心率e的平方e2=“<     cout<<“        第二偏心率e的平方e12=“< } 
 else 
 {a=6378140.0000000000;
  b=6356755.2881575287;
  e2=0.006694384999588;
  e12=0.006739501819473;
     cout<<“ ------1975年国际椭球参数为:“<     cout<<“        长半轴a=“<  cout<<“        短半轴b=“<  cout<<“        第一偏心率e的平方e2=“<     cout<<“        第二偏心率e的平方e12=“< }
 cout<<“----------请选择转换类型:“< cout<<“      1.   高斯正算“< cout<<“      2.   高斯反算“< cout<<“      3.   高斯换带计算“< cin>>style3;
 if(style3==1)
 {cout<<“请输入转换点总数“<  cin>>n;
  for(int i=0;i  {
  cout<<“请输入点的经纬度B L“<   cin>>B>>L;
  zs(BLae2e12);
  }
 }
 else if(style3==2)
 {cout<<“请输入转换点总数“<  cin>>n;
  for(int j=0;j  {
  cout<<“输入高斯坐标x y和带号:“<   cin>>x>>y>>m;
  cout<   fs(xymae2e12);
  }
 }
 else if(style3==3)
 {cout<<“请输入转换点总数“<  cin>>n;
  for(int k=0;k  {
  cout<<“输入点的x y坐标和带号:“<   cin>>x>>y>>m;
  fs(xymae2e12);
  zs(BLae2e12);
  }
 }
}
//***************************************************************
void zs(double Bdouble Ldouble adouble e2double e12)
{
double m0m2m4m6m8;
double a0a2a4a6a8;
double XL0Ntyt2l;
int style1;
m0=a*(1-e2);
m2=double(3)/double(2)*e2*m0;
m4=double(5)/double(4)*e2*m2;
m6=double(7)/double(6)*e2*m4;
m8=double(9)/double(8)*e2*m6;
a0=m0+m2/double(2)+double(3)/double(8)*m4+double(5)/double(16)*m6+double(35)/double(

评论

共有 条评论