(VC++ MFC)高斯平均引数大地主题正反算_第1页
(VC++ MFC)高斯平均引数大地主题正反算_第2页
(VC++ MFC)高斯平均引数大地主题正反算_第3页
(VC++ MFC)高斯平均引数大地主题正反算_第4页
(VC++ MFC)高斯平均引数大地主题正反算_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 地球科学与环境工程学院实验报告书课程名: 学 号: 姓 名: 指导老师: 日 期: 16目 录一、目的与要求1二、实验内容1三、计算公式整理1四、 程序代码.4五、计算结果15六、实验体会16一、目的与要求参考椭球面是大地测量计算的基准面。大地坐标是椭球面上的基本坐标系,根据大地测量的观测成果(如距离与方向),从大地原点出发,逐点计算在椭球面上的大地坐标;或根据两点的大地坐标,计算它们之间的大地线长度和大地方位角,这类计算称为大地问题解算(或称为大地主题解算)。大地问题解算的用途是多方面的,随着现代空间技术和航空航天、航海等领域的发展,大地问题解算(尤其是大地反算)有着更为重要的作用,因此需

2、要熟练掌握其计算。二、实验内容在大地测量学基础教材中,介绍了高斯平均引数法与白塞尔方法的计算过程、步骤。鉴于此,需要熟练掌握高斯平均引数法与白塞尔方法解大地主题问题的基本方法与原理。采用所熟悉的计算机语言编程计算。计算时采用克拉索夫椭球参数,至少完成其中一种方法正反算,按照数据序号选取不同的已知数据,在计算结果中注明所选取的数据序号,选取其它数据作为无效数据处理。三、计算公式整理3.1、高斯平均引数正算计算公式(S< 200 km)3.2、高斯平均引数正算计算公式(S< 200 km)四、程序代码4.1、角度转换类的头文件:#pragma onceconst double Pi=3

3、.141592653589793;class AngleTranspublic:AngleTrans(void);AngleTrans(void);double D,F,M,DFM,Rad,Ten;double trans1(double DFM),/度分秒形式的角度转换为弧度形式 trans2(double Rad), /弧度形式的角度转换为度分秒形式trans3(double D);/十进制度转化为弧度;4.2、角度转换类的源文件:#include "StdAfx.h"#include "AngleTrans.h"#include<cmath&

4、gt;AngleTrans:AngleTrans(void)AngleTrans:AngleTrans(void)/度分秒转换为弧度double AngleTrans:trans1(double DFM)D=floor(DFM); F=floor(DFM-D)*100);M=(DFM-D-F/100)*10000;Ten=D+F/60+M/3600;Rad=Ten/180*Pi;return Rad;/弧度转换为度分秒double AngleTrans:trans2(double Rad)Ten=Rad/Pi*180;D=floor(Ten);F=(Ten-D)*60;M=(F-floor(F

5、)*60;F=floor(F);DFM=D+F/100+M/10000;return DFM;/十进制度转化为弧度double AngleTrans:trans3(double D) Rad=D/180*Pi;return Rad;4.3、正反算类的头文件:#pragma onceclass ZhengFanSuanpublic:ZhengFanSuan(void);ZhengFanSuan(void);double zB1,zL1,zA12,zS,fB1,fL1,fB2,fL2;double ZhengSuanB(double zB1,double zL1,double zA12,doubl

6、e zS), ZhengSuanL(double zB1,double zL1,double zA12,double zS),ZhengSuanA(double zB1,double zL1,double zA12,double zS);double FanSuanA12(double fB1,double fL1,double fB2,double fL2),FanSuanS(double fB1,double fL1,double fB2,double fL2),FanSuanA21(double fB1,double fL1,double fB2,double fL2);4.3、正反算类

7、的源文件:#include "StdAfx.h"#include "ZhengFanSuan.h"#include"AngleTrans.h"#include<cmath>ZhengFanSuan:ZhengFanSuan(void)ZhengFanSuan:ZhengFanSuan(void)AngleTrans _AngleTrans;const double e1= 0.0066934216622966, e2=0.006738525414683, a=6378245.0000, b= 6356863.01877,t

8、emp=pow(10.0, -10);/精度要求double Calc_M(double z) /计算Mmdouble x=a*(1-pow(e1,2)/sqrt(pow(1-pow(e1,2)*pow(sin(z),2),3);return x;double Calc_N(double z)/计算Nmdouble x=a/sqrt(1-pow(e1,2)*pow(sin(z),2);return x;double Calc_t(double z)/计算tmdouble x=tan(z);return x;double Calc_yita(double z)/计算yitamdouble x=p

9、ow(e2,2)*pow(cos(z),2);return x;/正算纬度double ZhengFanSuan:ZhengSuanB(double zB1,double zL1,double zA12,double zS) double M10000, N10000, t10000, B10000,Bm10000, L10000,Lm10000, A10000,Am10000, yita10000; double _zB1=_AngleTrans.trans1(zB1), _zL1=_AngleTrans.trans1(zL1),_zA12=_AngleTrans.trans1(zA12),

10、final; t1=tan(_zB1); yita1=pow(e2,2)*pow(cos(_zB1),2); N1=a/sqrt(1-pow(e1,2)*pow(sin(_zB1),2); M1=a*(1-pow(e1,2)/sqrt(pow(1-pow(e1,2)*pow(sin(_zB1),2),3); B0=_AngleTrans.trans3(206265/M1*zS*cos(_zA12)/3600), L0=_AngleTrans.trans3(206265*zS*sin(_zA12)/(N1*cos(_zB1)/3600), A0=L0*sin(_zB1); Bm1=_zB1+1/

11、2*B0; Lm1=_zL1+1/2*L0; Am1=_zA12+1/2*A0; int i=1; B1=_AngleTrans.trans3(206265/M1*zS*cos(Am1)*(1+pow(zS,2)/(24*pow(N1,2)*(pow(sin(Am1),2)* (2+3*pow(t1,2)+2*pow(yita1,2)+3*pow(cos(Am1),2)*pow(yita1,2)*(pow(t1,2)-1-pow(yita1,2)- 4*pow(yita1,2)*pow(t1,2)/3600);Li=_AngleTrans.trans3(206265/(N1*cos(Bm1)*

12、zS*sin(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(ti,2)* pow(sin(Ami),2)-pow(cos(Ami),2)*(1+pow(yitai,2)-9*pow(yitai,2)*pow(ti,2)/3600);Ai=_AngleTrans.trans3(206265/Ni*zS*sin(Ami)*ti*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(cos(Ami),2)* (2+7*pow(yitai,2)+9*pow(yitai,2)*pow(ti,2)+5*pow(yitai,4)+pow(sin(Ami),2)*(2+p

13、ow(ti,2)+2* pow(yitai,2)/3600);while(Bi-Bi-1>=temp) Bi+1=_AngleTrans.trans3(206265/Mi*zS*cos(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(sin(Ami),2)* (2+3*pow(ti,2)+2*pow(yitai,2)+3*pow(cos(Ami),2)*pow(yitai,2)*(pow(ti,2)-1-pow(yitai,2)- 4*pow(yitai,2)*pow(ti,2)/3600);Li+1=_AngleTrans.trans3(206265/(Ni*

14、cos(Bmi)*zS*sin(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(ti,2)* pow(sin(Ami),2)-pow(cos(Ami),2)*(1+pow(yitai,2)-9*pow(yitai,2)*pow(ti,2)/3600);Ai+1=_AngleTrans.trans3(206265/Ni*zS*sin(Ami)*ti*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(cos(Ami),2)* (2+7*pow(yitai,2)+9*pow(yitai,2)*pow(ti,2)+5*pow(yitai,4)+pow(sin(A

15、mi),2)*(2+pow(ti,2)+2* pow(yitai,2)/3600);Bmi+1=_zB1+1/2*Bi; Lmi+1=_zL1+1/2*Li; Ami+1=_zA12+1/2*Ai; Mi+1=Calc_M(Bi); Ni+1=Calc_N(Ni); yitai+1=Calc_yita(yitai); ti+1=Calc_t(ti);final=Bi; i+; double Final=final+_zB1;return _AngleTrans.trans2(Final);/正算经度double ZhengFanSuan:ZhengSuanL(double zB1,double

16、 zL1,double zA12,double zS) double M10000, N10000, t10000, B10000,Bm10000, L10000,Lm10000, A10000,Am10000, yita10000; double _zB1=_AngleTrans.trans1(zB1), _zL1=_AngleTrans.trans1(zL1),_zA12=_AngleTrans.trans1(zA12),final; t1=tan(_zB1); yita1=pow(e2,2)*pow(cos(_zB1),2); N1=a/sqrt(1-pow(e1,2)*pow(sin(

17、_zB1),2); M1=a*(1-pow(e1,2)/sqrt(pow(1-pow(e1,2)*pow(sin(_zB1),2),3); B0=_AngleTrans.trans3(206265/M1*zS*cos(_zA12)/3600), L0=_AngleTrans.trans3(206265*zS*sin(_zA12)/(N1*cos(_zB1)/3600), A0=L0*sin(_zB1); Bm1=_zB1+1/2*B0; Lm1=_zL1+1/2*L0; Am1=_zA12+1/2*A0; int i=1; B1=_AngleTrans.trans3(206265/M1*zS*

18、cos(Am1)*(1+pow(zS,2)/(24*pow(N1,2)*(pow(sin(Am1),2)* (2+3*pow(t1,2)+2*pow(yita1,2)+3*pow(cos(Am1),2)*pow(yita1,2)*(pow(t1,2)-1-pow(yita1,2)- 4*pow(yita1,2)*pow(t1,2)/3600);Li=_AngleTrans.trans3(206265/(N1*cos(Bm1)*zS*sin(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(ti,2)* pow(sin(Ami),2)-pow(cos(Ami),2)*(1

19、+pow(yitai,2)-9*pow(yitai,2)*pow(ti,2)/3600);Ai=_AngleTrans.trans3(206265/Ni*zS*sin(Ami)*ti*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(cos(Ami),2)* (2+7*pow(yitai,2)+9*pow(yitai,2)*pow(ti,2)+5*pow(yitai,4)+pow(sin(Ami),2)*(2+pow(ti,2)+2* pow(yitai,2)/3600);if(Li-Li-1>=temp)while(Li-Li-1>=temp) Bi+1=_Angl

20、eTrans.trans3(206265/Mi*zS*cos(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(sin(Ami),2)* (2+3*pow(ti,2)+2*pow(yitai,2)+3*pow(cos(Ami),2)*pow(yitai,2)*(pow(ti,2)-1-pow(yitai,2)- 4*pow(yitai,2)*pow(ti,2)/3600);Li+1=_AngleTrans.trans3(206265/(Ni*cos(Bmi)*zS*sin(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(ti,2)* pow(s

21、in(Ami),2)-pow(cos(Ami),2)*(1+pow(yitai,2)-9*pow(yitai,2)*pow(ti,2)/3600);Ai+1=_AngleTrans.trans3(206265/Ni*zS*sin(Ami)*ti*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(cos(Ami),2)* (2+7*pow(yitai,2)+9*pow(yitai,2)*pow(ti,2)+5*pow(yitai,4)+pow(sin(Ami),2)*(2+pow(ti,2)+2* pow(yitai,2)/3600);Bmi+1=_zB1+1/2*Bi; Lmi+

22、1=_zL1+1/2*Li; Ami+1=_zA12+1/2*Ai; Mi+1=Calc_M(Bi); Ni+1=Calc_N(Ni);yitai+1=Calc_yita(yitai);ti+1=Calc_t(ti);final=Li; i+; elsefinal=Li;double Final=final+_zL1;return _AngleTrans.trans2(Final);/正算大地方位角double ZhengFanSuan:ZhengSuanA(double zB1,double zL1,double zA12,double zS) double M100, N100, t100

23、, B100,Bm100, L100,Lm100, A100,Am100, yita10000; double _zB1=_AngleTrans.trans1(zB1), _zL1=_AngleTrans.trans1(zL1),_zA12=_AngleTrans.trans1(zA12),final; t1=tan(_zB1); yita1=pow(e2,2)*pow(cos(_zB1),2); N1=a/sqrt(1-pow(e1,2)*pow(sin(_zB1),2); M1=a*(1-pow(e1,2)/sqrt(pow(1-pow(e1,2)*pow(sin(_zB1),2),3);

24、 B0=_AngleTrans.trans3(206265/M1*zS*cos(_zA12)/3600), L0=_AngleTrans.trans3(206265*zS*sin(_zA12)/(N1*cos(_zB1)/3600), A0=L0*sin(_zB1); Bm1=_zB1+1/2*B0; Lm1=_zL1+1/2*L0; Am1=_zA12+1/2*A0; int i=1; B1=_AngleTrans.trans3(206265/M1*zS*cos(Am1)*(1+pow(zS,2)/(24*pow(N1,2)*(pow(sin(Am1),2)* (2+3*pow(t1,2)+

25、2*pow(yita1,2)+3*pow(cos(Am1),2)*pow(yita1,2)*(pow(t1,2)-1-pow(yita1,2)- 4*pow(yita1,2)*pow(t1,2)/3600);Li=_AngleTrans.trans3(206265/(N1*cos(Bm1)*zS*sin(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(ti,2)* pow(sin(Ami),2)-pow(cos(Ami),2)*(1+pow(yitai,2)-9*pow(yitai,2)*pow(ti,2)/3600);Ai=_AngleTrans.trans3(20

26、6265/Ni*zS*sin(Ami)*ti*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(cos(Ami),2)* (2+7*pow(yitai,2)+9*pow(yitai,2)*pow(ti,2)+5*pow(yitai,4)+pow(sin(Ami),2)*(2+pow(ti,2)+2* pow(yitai,2)/3600);while(Ai-Ai-1>=temp) Bi+1=_AngleTrans.trans3(206265/Mi*zS*cos(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(sin(Ami),2)* (2+3*pow

27、(ti,2)+2*pow(yitai,2)+3*pow(cos(Ami),2)*pow(yitai,2)*(pow(ti,2)-1-pow(yitai,2)- 4*pow(yitai,2)*pow(ti,2)/3600);Li+1=_AngleTrans.trans3(206265/(Ni*cos(Bmi)*zS*sin(Ami)*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(ti,2)* pow(sin(Ami),2)-pow(cos(Ami),2)*(1+pow(yitai,2)-9*pow(yitai,2)*pow(ti,2)/3600);Ai+1=_AngleTran

28、s.trans3(206265/Ni*zS*sin(Ami)*ti*(1+pow(zS,2)/(24*pow(Ni,2)*(pow(cos(Ami),2)* (2+7*pow(yitai,2)+9*pow(yitai,2)*pow(ti,2)+5*pow(yitai,4)+pow(sin(Ami),2)*(2+pow(ti,2)+2* pow(yitai,2)/3600);Bmi+1=_zB1+1/2*Bi; Lmi+1=_zL1+1/2*Li; Ami+1=_zA12+1/2*Ai; Mi+1=Calc_M(Bi); Ni+1=Calc_N(Ni); yitai+1=Calc_yita(yi

29、tai); ti+1=Calc_t(ti);final=Ai; i+; double Final;if(_zA12>Pi)Final=final+_zA12-Pi;elseFinal=final+_zA12+Pi;return _AngleTrans.trans2(Final);/反算Sdouble ZhengFanSuan:FanSuanS(double fB1,double fL1,double fB2,double fL2)double A12,A21,S;double _fB1=_AngleTrans.trans1(fB1), _fL1=_AngleTrans.trans1(fL

30、1), _fB2=_AngleTrans.trans1(fB2), _fL2=_AngleTrans.trans1(fL2);double Bm=(_fB1+_fB2)/2, _B=_fB2-_fB1, _L=_fL2-_fL1;double Nm=Calc_N(Bm),tm=Calc_t(Bm),yitam=Calc_yita(Bm);double Vm=sqrt(1+pow(e2,2)*pow(cos(Bm),2),r01=Nm*cos(Bm),r03=(-Nm*pow(cos(Bm),3)*pow(tm,2)/24,r21=(Nm*cos(Bm)*(1+pow(yitam,2)-9*po

31、w(yitam,2)*pow(tm,2)*pow(yitam,4)/pow(Vm,4)/24,s10=Nm/pow(Vm,2),s12=(Nm/pow(Vm,2)*pow(cos(Bm),2)*(2+3*pow(tm,2)+2*pow(yitam,2)/24,s30=(Nm/pow(Vm,6)*(pow(yitam,2)-pow(yitam,2)*pow(tm,2)/8,t01=tm*cos(Bm),t21= cos(Bm)*tm/(24*pow(Vm,4)*(2+7*pow(yitam,2)+9*pow(yitam,2)*pow(tm,2)+5*pow(yitam,4),t03=(tm*po

32、w(cos(Bm),3)*(2+pow(tm,2)+2*pow(yitam,2)/24;double U=r01*_L+r21*pow(_B,2)*_L+r03*pow(_L,3),V=s10*_B+s12*_B*pow(_L,2)+s30*pow(_B,3),_A=t01*_L+t21*pow(_B,2)*_L+t03*pow(_L,3);double Am=atan(U/V);S=V/cos(Am);return S;/反算A12double ZhengFanSuan:FanSuanA12(double fB1,double fL1,double fB2,double fL2)double

33、 T,A12,A21,S;double _fB1=_AngleTrans.trans1(fB1), _fL1=_AngleTrans.trans1(fL1), _fB2=_AngleTrans.trans1(fB2), _fL2=_AngleTrans.trans1(fL2);double Bm=(_fB1+_fB2)/2, _B=_fB2-_fB1, _L=_fL2-_fL1;double Nm=Calc_N(Bm),tm=Calc_t(Bm),yitam=Calc_yita(Bm);double Vm=sqrt(1+pow(e2,2)*pow(cos(Bm),2),r01=Nm*cos(B

34、m),r03=(-Nm*pow(cos(Bm),3)*pow(tm,2)/24,r21=(Nm*cos(Bm)*(1+pow(yitam,2)-9*pow(yitam,2)*pow(tm,2)*pow(yitam,4)/pow(Vm,4)/24,s10=Nm/pow(Vm,2),s12=(Nm/pow(Vm,2)*pow(cos(Bm),2)*(2+3*pow(tm,2)+2*pow(yitam,2)/24,s30=(Nm/pow(Vm,6)*(pow(yitam,2)-pow(yitam,2)*pow(tm,2)/8,t01=tm*cos(Bm),t21= cos(Bm)*tm/(24*po

35、w(Vm,4)*(2+7*pow(yitam,2)+9*pow(yitam,2)*pow(tm,2)+5*pow(yitam,4),t03=(tm*pow(cos(Bm),3)*(2+pow(tm,2)+2*pow(yitam,2)/24;double U=r01*_L+r21*pow(_B,2)*_L+r03*pow(_L,3),V=s10*_B+s12*_B*pow(_L,2)+s30*pow(_B,3),_A=t01*_L+t21*pow(_B,2)*_L+t03*pow(_L,3);double Am=atan(U/V);A12=Am-0.5*_A;return _AngleTrans

36、.trans2(A12);/反算A21double ZhengFanSuan:FanSuanA21(double fB1,double fL1,double fB2,double fL2)double T,A12,A21,S;double _fB1=_AngleTrans.trans1(fB1), _fL1=_AngleTrans.trans1(fL1), _fB2=_AngleTrans.trans1(fB2), _fL2=_AngleTrans.trans1(fL2);double Bm=(_fB1+_fB2)/2, _B=_fB2-_fB1, _L=_fL2-_fL1;double Nm

37、=Calc_N(Bm),tm=Calc_t(Bm),yitam=Calc_yita(Bm);double Vm=sqrt(1+pow(e2,2)*pow(cos(Bm),2),r01=Nm*cos(Bm),r03=(-Nm*pow(cos(Bm),3)*pow(tm,2)/24,r21=(Nm*cos(Bm)*(1+pow(yitam,2)-9*pow(yitam,2)*pow(tm,2)*pow(yitam,4)/pow(Vm,4)/24,s10=Nm/pow(Vm,2),s12=(Nm/pow(Vm,2)*pow(cos(Bm),2)*(2+3*pow(tm,2)+2*pow(yitam,

38、2)/24,s30=(Nm/pow(Vm,6)*(pow(yitam,2)-pow(yitam,2)*pow(tm,2)/8,t01=tm*cos(Bm),t21= cos(Bm)*tm/(24*pow(Vm,4)*(2+7*pow(yitam,2)+9*pow(yitam,2)*pow(tm,2)+5*pow(yitam,4),t03=(tm*pow(cos(Bm),3)*(2+pow(tm,2)+2*pow(yitam,2)/24;double U=r01*_L+r21*pow(_B,2)*_L+r03*pow(_L,3),V=s10*_B+s12*_B*pow(_L,2)+s30*pow

39、(_B,3),_A=t01*_L+t21*pow(_B,2)*_L+t03*pow(_L,3);double Am=atan(U/V);A12=Am-0.5*_A;if(A12>Pi)A21=Am+0.5*_A-Pi;elseA21=Am+0.5*_A+Pi;return _AngleTrans.trans2(A21);4.4、正算的计算按钮代码:void C大地主题高斯引数正反算Dlg:OnBnClickedButton2() UpdateData(true);ZhengFanSuan _ZhengFanSuan;double B1=_wtof(zB1), L1=_wtof(zL1),

40、 A12=_wtof(zA12), S=_wtof(zS), B2=_ZhengFanSuan.ZhengSuanB(B1,L1,A12,S), L2=_ZhengFanSuan.ZhengSuanL(B1,L1,A12,S), A21=_ZhengFanSuan.ZhengSuanA(B1,L1,A12,S);zB2.Format(_T("%.7f"),B2);zL2.Format(_T("%.7f"),L2),zA21.Format(_T("%.7f"),A21);UpdateData(false);4.5、反算的计算按钮代码:void C大地主题高斯引数正反算Dlg:OnBnClickedButton1()UpdateData(true);ZhengFanSuan _ZhengFanSuan;double B1=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论