您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 空间直角坐标系与大地坐标系转换程序
学习好资料欢迎下载空间直角坐标系与大地坐标系转换程序#includeiostream#includecmath#includeiomanipusingnamespacestd;#definePI(2.0*asin(1.0))voidmain(){doublea,b,c,d1,d2,f1,f2,m1,m2,B,L,H,X,Y,Z,W,N,e;//cout请分别输入椭球的长半轴、短半轴(国际单位)endl;//cinab;a=6378137;//以WGS84为例b=6356752.3142;e=sqrt(a*a-b*b)/a;c=a*a/b;intx;cout请输入0或1,0:大地坐标系到空间直角坐标系;1:空间直角坐标系到大地坐标系endl;cinx;switch(x){case0:{cout请分别输入该点大地纬度、经度、大地高(国际单位,纬度经度请按度分秒,分别输入)endl;cind1f1m1d2f2m2H;B=PI*(d1+f1/60+m1/3600)/180;L=PI*(d2+f2/60+m2/3600)/180;W=sqrt(1-e*e*sin(B)*sin(B));N=a/W;X=(N+H)*cos(B)*cos(L);Y=(N+H)*cos(B)*sin(L);Z=(N*(1-e*e)+H)*sin(B);cout空间直角坐标系中X,Y,Z,坐标值(国际单位)分别为fixedsetprecision(6)Xfixedsetprecision(6)Yfixedsetprecision(6)Zendl;break;}case1:{cout请分别输入空间直角坐标系中X,Y,Z的值(国际单位)endl;cinXYZ;doublet,m,n,P,k,B0;m=Z/sqrt(X*X+Y*Y);//t0B0=atan(m);//初值n=Z/sqrt(X*X+Y*Y);学习好资料欢迎下载P=c*e*e/sqrt(X*X+Y*Y);k=1+(a*a-b*b)/(b*b);t=m+P*n/sqrt(k+n*n);//现在为t1,之后代替t2,t3...B=atan(t);W=sqrt(1-e*e*sin(B)*sin(B));N=a/W;H=Z/sin(B)-N*(1-e*e);inti;for(i=1;fabs(B-B0)10E-10;i++)//每一次新的B与上一次计算的B比较,误差小于10E-10rad{B0=B;n=t;t=m+P*n/sqrt(k+n*n);//迭代B=atan(t);}W=sqrt(1-e*e*sin(B)*sin(B));N=a/W;//if((X0)&(Y0))//L=atan(Y/X)+PI;//if((X0)&(Y0))//L=atan(Y/X)+PI;//if((X0)&(Y0))//L=2*PI-atan(Y/X);L=atan2(Y,X);H=sqrt(X*X+Y*Y)/cos(B)-N;intBd,Bf,Ld,Lf;doubleBm,Lm;B=180*B/PI;//B转化为度做单位Bd=B;Bf=(B-Bd)*60;Bm=((B-Bd)*60-Bf)*60;L=180*L/PI;//L转化为度做单位Ld=L;Lf=(L-Ld)*60;Lm=((L-Ld)*60-Lf)*60;cout大地坐标系中纬度,经度,大地高(国际单位)分别为BdBffixedsetprecision(6)BmendlLdLffixedsetprecision(6)Lmendlfixedsetprecision(6)Hendl;break;}}}学习好资料欢迎下载运行结果
本文标题:空间直角坐标系与大地坐标系转换程序
链接地址:https://www.777doc.com/doc-6234498 .html