您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > (VC++MFC)高斯平均引数大地主题正反算
1地球科学与环境工程学院实验报告书课程名:学号:姓名:指导老师:日期:1目录一、目的与要求........................................................................................................................1二、实验内容............................................................................................................................1三、计算公式整理....................................................................................................................1四、程序代码…………………………………………………………………………………….......…...4五、计算结果..........................................................................................................................15六、实验体会..........................................................................................................................161一、目的与要求参考椭球面是大地测量计算的基准面。大地坐标是椭球面上的基本坐标系,根据大地测量的观测成果(如距离与方向),从大地原点出发,逐点计算在椭球面上的大地坐标;或根据两点的大地坐标,计算它们之间的大地线长度和大地方位角,这类计算称为大地问题解算(或称为大地主题解算)。大地问题解算的用途是多方面的,随着现代空间技术和航空航天、航海等领域的发展,大地问题解算(尤其是大地反算)有着更为重要的作用,因此需要熟练掌握其计算。二、实验内容在《大地测量学基础》教材中,介绍了高斯平均引数法与白塞尔方法的计算过程、步骤。鉴于此,需要熟练掌握高斯平均引数法与白塞尔方法解大地主题问题的基本方法与原理。采用所熟悉的计算机语言编程计算。计算时采用克拉索夫椭球参数,至少完成其中一种方法正反算,按照数据序号选取不同的已知数据,在计算结果中注明所选取的数据序号,选取其它数据作为无效数据处理。三、计算公式整理3.1、高斯平均引数正算计算公式(S200km)233.2、高斯平均引数正算计算公式(S200km)4四、程序代码4.1、角度转换类的头文件:#pragmaonceconstdoublePi=3.141592653589793;classAngleTrans{public:AngleTrans(void);~AngleTrans(void);doubleD,F,M,DFM,Rad,Ten;doubletrans1(doubleDFM),//度分秒形式的角度转换为弧度形式trans2(doubleRad),//弧度形式的角度转换为度分秒形式trans3(doubleD);//十进制度转化为弧度};4.2、角度转换类的源文件:#includeStdAfx.h#includeAngleTrans.h#includecmathAngleTrans::AngleTrans(void){}AngleTrans::~AngleTrans(void){}//度分秒转换为弧度doubleAngleTrans::trans1(doubleDFM){D=floor(DFM);F=floor((DFM-D)*100);M=(DFM-D-F/100)*10000;Ten=D+F/60+M/3600;Rad=Ten/180*Pi;returnRad;}5//弧度转换为度分秒doubleAngleTrans::trans2(doubleRad){Ten=Rad/Pi*180;D=floor(Ten);F=(Ten-D)*60;M=(F-floor(F))*60;F=floor(F);DFM=D+F/100+M/10000;returnDFM;}//十进制度转化为弧度doubleAngleTrans::trans3(doubleD){Rad=D/180*Pi;returnRad;}4.3、正反算类的头文件:#pragmaonceclassZhengFanSuan{public:ZhengFanSuan(void);~ZhengFanSuan(void);doublezB1,zL1,zA12,zS,fB1,fL1,fB2,fL2;doubleZhengSuanB(doublezB1,doublezL1,doublezA12,doublezS),ZhengSuanL(doublezB1,doublezL1,doublezA12,doublezS),ZhengSuanA(doublezB1,doublezL1,doublezA12,doublezS);doubleFanSuanA12(doublefB1,doublefL1,doublefB2,doublefL2),FanSuanS(doublefB1,doublefL1,doublefB2,doublefL2),FanSuanA21(doublefB1,doublefL1,doublefB2,doublefL2);};4.3、正反算类的源文件:#includeStdAfx.h#includeZhengFanSuan.h#includeAngleTrans.h#includecmathZhengFanSuan::ZhengFanSuan(void){6}ZhengFanSuan::~ZhengFanSuan(void){}AngleTrans_AngleTrans;constdoublee1=0.0066934216622966,e2=0.006738525414683,a=6378245.0000,b=6356863.01877,temp=pow(10.0,-10);//精度要求doubleCalc_M(doublez)//计算Mm{doublex=a*(1-pow(e1,2))/sqrt(pow(1-pow(e1,2)*pow(sin(z),2),3));returnx;}doubleCalc_N(doublez)//计算Nm{doublex=a/sqrt(1-pow(e1,2)*pow(sin(z),2));returnx;}doubleCalc_t(doublez)//计算tm{doublex=tan(z);returnx;}doubleCalc_yita(doublez)//计算yitam{doublex=pow(e2,2)*pow(cos(z),2);returnx;}//正算纬度doubleZhengFanSuan::ZhengSuanB(doublezB1,doublezL1,doublezA12,doublezS){doubleM[10000],N[10000],t[10000],B[10000],Bm[10000],L[10000],Lm[10000],A[10000],Am[10000],yita[10000];double_zB1=_AngleTrans.trans1(zB1),_zL1=_AngleTrans.trans1(zL1),_zA12=_AngleTrans.trans1(zA12),7final;t[1]=tan(_zB1);yita[1]=pow(e2,2)*pow(cos(_zB1),2);N[1]=a/sqrt(1-pow(e1,2)*pow(sin(_zB1),2));M[1]=a*(1-pow(e1,2))/sqrt(pow(1-pow(e1,2)*pow(sin(_zB1),2),3));B[0]=_AngleTrans.trans3(206265/M[1]*zS*cos(_zA12)/3600),L[0]=_AngleTrans.trans3(206265*zS*sin(_zA12)/(N[1]*cos(_zB1))/3600),A[0]=L[0]*sin(_zB1);Bm[1]=_zB1+1/2*B[0];Lm[1]=_zL1+1/2*L[0];Am[1]=_zA12+1/2*A[0];inti=1;B[1]=_AngleTrans.trans3((206265/M[1]*zS*cos(Am[1])*(1+pow(zS,2)/(24*pow(N[1],2))*(pow(sin(Am[1]),2))*(2+3*pow(t[1],2)+2*pow(yita[1],2))+3*pow(cos(Am[1]),2)*pow(yita[1],2)*(pow(t[1],2)-1-pow(yita[1],2)-4*pow(yita[1],2)*pow(t[1],2))))/3600);L[i]=_AngleTrans.trans3((206265/(N[1]*cos(Bm[1]))*zS*sin(Am[i])*(1+pow(zS,2)/(24*pow(N[i],2))*(pow(t[i],2)*pow(sin(Am[i]),2)-pow(cos(Am[i]),2)*(1+pow(yita[i],2)-9*pow(yita[i],2)*pow(t[i],2)))))/3600);A[i]=_AngleTrans.trans3((206265/N[i]*zS*sin(Am[i])*t[i]*(1+pow(zS,2)/(24*pow(N[i],2))*(pow(cos(Am[i]),2)*(2+7*pow(yita[i],2)+9*pow(yita[i],2)*pow(t[i],2)+5*pow(yita[i],4))+pow(sin(Am[i]),2)*(2+pow(t[i],2)+2*pow(yita[i],2)))))/3600);while(B[i]-B[i-1]=temp){B[i+1]=_AngleTrans.trans3((206265/M[i]*zS*cos(Am[i])*(1+pow(zS,2)/(24*pow(N[i],2))*(pow(sin(Am[i]),2))*(2+3*pow(t[i],2)+2*pow(yita[i],2))+3*pow(cos(Am[i]),2)*pow(yita[i],2)*(pow(t[i],2)-1-pow(yita[i],2)-4*pow(yita[i],2)*pow(t[i],2))))/3600);L[i+1]=_AngleTrans.trans3((206265/(N[i]*cos(Bm[i]))*zS*sin(Am[i])*(1+pow(zS,2)/(24*pow(N[i],2))*(pow(t[i],2)*pow(sin(Am[i]),2)-pow(cos(Am[i]),2)*(1+pow(yita[i],2)-9*pow(yita[i],2)*pow(t[i],2)))))/3600);A[i+1]=_AngleTrans.trans3((206265/N[i]*zS*sin(Am[i])*t[i]*(1+pow(zS,2)/(24*pow(N[i],2))*(pow(cos(Am[i]),2)*(2+7*pow(yita[i],2)+9*pow(yita[i],2)*pow(t[i],2)+5*pow(yita[i],4))+pow(sin(Am[i]),2)*(2+pow(t[i],2)+2*8pow(yita[i],2)))))/3600);Bm[i+1]=_zB1
本文标题:(VC++MFC)高斯平均引数大地主题正反算
链接地址:https://www.777doc.com/doc-3042892 .html