大地测量学编程实习报告大地主题解算.docx

上传人:b****4 文档编号:24393087 上传时间:2023-05-27 格式:DOCX 页数:13 大小:262.63KB
下载 相关 举报
大地测量学编程实习报告大地主题解算.docx_第1页
第1页 / 共13页
大地测量学编程实习报告大地主题解算.docx_第2页
第2页 / 共13页
大地测量学编程实习报告大地主题解算.docx_第3页
第3页 / 共13页
大地测量学编程实习报告大地主题解算.docx_第4页
第4页 / 共13页
大地测量学编程实习报告大地主题解算.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

大地测量学编程实习报告大地主题解算.docx

《大地测量学编程实习报告大地主题解算.docx》由会员分享,可在线阅读,更多相关《大地测量学编程实习报告大地主题解算.docx(13页珍藏版)》请在冰豆网上搜索。

大地测量学编程实习报告大地主题解算.docx

大地测量学编程实习报告大地主题解算

 

大地测量学编程实习报告

——大地主题解算

 

学院:

测绘学院

专业:

测绘工程

班级:

2014级2班

学号:

2014301610339

姓名:

何杨

 

一、实习目的

1. 提高运用计算机语言编程开发的能力; 

2. 加深对大地主题解算计算公式及辅助参数的理解并掌握计算步骤; 

3. 通过编程语言实现大地主题解算。

二、注意事项

1. 计算所需变量多,容易混淆;

 2. 正反算函数的编写;

 3. 函数调用; 

4. 弧度与角度之间的转化。

三、程序框图

正算

 

 

Yes

 

反算

 

四、源代码

调用的函数:

publicdoubleMjisuan(doubleB)//M计算

{

doubleM;

M=a*(1-e2)*Math.Pow((1-e2*Math.Sin(B)*Math.Sin(B)),-1.5);

returnM;

}

publicdoubleNjisuan(doubleB)//N计算

{

doubleN;

N=a*Math.Pow((1-e2*Math.Sin(B)*Math.Sin(B)),-0.5);

returnN;

}

publicdoubleangletorad(doubleangle)//角度转弧度

{

doublerad;

rad=Math.PI*angle/180;

returnrad;

}

publicdoubleAmcalculate(doubleb,doublel,doubleSsinAm,doubleScosAm)//Am计算

{

doublec,T,Am;

c=Math.Abs(ScosAm/SsinAm);

if(Math.Abs(b)>Math.Abs(l))

T=Math.Atan(Math.Abs(SsinAm/ScosAm));

else

T=Math.PI*0.25+Math.Atan((1-c)/(1+c));

if(b>0&&l>=0)

Am=T;

elseif(b<0&&l>=0)

Am=Math.PI-T;

elseif(b<=0&&l<0)

Am=Math.PI+T;

elseif(b==0&&l>0)

Am=Math.PI*0.5;

elseAm=2*Math.PI-T;

returnAm;

}

 

正算

privatevoidbutton1_Click(objectsender,EventArgse)

{

 

doubleB1=Convert.ToDouble(textBox1.Text)+Convert.ToDouble(textBox8.Text)/60+Convert.ToDouble(textBox9.Text)/3600;

doubleL1=Convert.ToDouble(textBox2.Text)+Convert.ToDouble(textBox11.Text)/60+Convert.ToDouble(textBox10.Text)/3600;

doubleA12=Convert.ToDouble(textBox4.Text)+Convert.ToDouble(textBox12.Text)/60+Convert.ToDouble(textBox13.Text)/3600;

doubleS=Convert.ToDouble(textBox3.Text);

doubleAm,Bm,Lm,A23,B23,L23,B01,L01,A01,M,N,B02,L02,A02,t,n2,p1,p2,p3,Vm2;

B1=angletorad(B1);

L1=angletorad(L1);

A12=angletorad(A12);

M=Mjisuan(B1);

N=Njisuan(B1);

B01=S*Math.Cos(A12)/M;

L01=S*Math.Sin(A12)/(N*Math.Cos(B1));

A01=S*Math.Sin(A12)*Math.Tan(B1)/N;

Am=A12+0.5*A01;

Bm=B1+0.5*B01;

M=Mjisuan(Bm);

N=Njisuan(Bm);

t=Math.Tan(Bm);

n2=Math.Cos(Bm)*Math.Cos(Bm)*e2/(1-e2);

Vm2=1+n2;

B02=(Vm2/N)*S*Math.Cos(Am)*(1+S*S/(24*N*N)*((Math.Sin(Am)*Math.Sin(Am)*(2+3*t*t+3*n2*t*t)+3*Math.Cos(Am)*Math.Cos(Am)*n2*(t*t-1-n2-4*n2*t*t))));

L02=(1/(N*Math.Cos(Bm)))*S*Math.Sin(Am)*(1+S*S/(24*N*N)*(t*t*Math.Sin(Am)*Math.Sin(Am)-Math.Cos(Am)*Math.Cos(Am)*(1+n2-9*n2*t*t+n2*n2)));

A02=(1/N)*S*Math.Sin(Am)*t*(1+S*S/(24*N*N)*(Math.Cos(Am)*Math.Cos(Am)*(2+7*n2+9*n2*t*t+5*n2*n2)+Math.Sin(Am)*Math.Sin(Am)*(2+t*t+2*n2)));

while(Math.Abs(B02-B01)>0.000000001&&Math.Abs(L02-L01)>0.000000001&&Math.Abs(A02-A01)>0.000000001)

{

A01=A02;

B01=B02;

L01=L02;

Am=A12+0.5*A02;

Bm=B1+0.5*B02;

Lm=L1+0.5*L02;

M=Mjisuan(Bm);

N=Njisuan(Bm);

t=Math.Tan(Bm);

n2=Math.Cos(Bm)*Math.Cos(Bm)*e2/(1-e2);

B02=(Vm2/N)*S*Math.Cos(Am)*(1+S*S/(24*N*N)*((Math.Sin(Am)*Math.Sin(Am)*(2+3*t*t+3*n2*t*t)+3*Math.Cos(Am)*Math.Cos(Am)*n2*(t*t-1-n2-4*n2*t*t))));

L02=(1/(N*Math.Cos(Bm)))*S*Math.Sin(Am)*(1+S*S/(24*N*N)*(t*t*Math.Sin(Am)*Math.Sin(Am)-Math.Cos(Am)*Math.Cos(Am)*(1+n2-9*n2*t*t+n2*n2)));

A02=(1/N)*S*Math.Sin(Am)*t*(1+S*S/(24*N*N)*(Math.Cos(Am)*Math.Cos(Am)*(2+7*n2+9*n2*t*t+5*n2*n2)+Math.Sin(Am)*Math.Sin(Am)*(2+t*t+2*n2)));

}

B02=B1+B02;

L02=L1+L02;

A02=A12+A02+Math.PI;

p1=180.0*A02/Math.PI;

intA21=(int)p1;

intA22=(int)((p1-A21)*60);

A23=(p1-A21-A22/60.0)*3600;

p2=180.0*B02/Math.PI;

intB21=(int)p2;

intB22=(int)((p2-B21)*60);

B23=(p2-B21-B22/60.0)*3600;

p3=180.0*L02/Math.PI;

intL21=(int)p3;

intL22=(int)((p3-L21)*60);

L23=(p3-L21-L22/60.0)*3600;

if(A21>360)

A21=A21-180;

textBox5.Text=B21.ToString();

textBox21.Text=B22.ToString();

textBox20.Text=B23.ToString();

textBox6.Text=L21.ToString();

textBox18.Text=L22.ToString();

textBox16.Text=L23.ToString();

textBox19.Text=A21.ToString();

textBox17.Text=A22.ToString();

textBox15.Text=A23.ToString();

}

 

反算

privatevoidbutton2_Click(objectsender,EventArgse)

{

doubleB1=Convert.ToDouble(textBox1.Text)+Convert.ToDouble(textBox8.Text)/60+Convert.ToDouble(textBox9.Text)/3600;

doubleL1=Convert.ToDouble(textBox2.Text)+Convert.ToDouble(textBox11.Text)/60+Convert.ToDouble(textBox10.Text)/3600;

doubleB2=Convert.ToDouble(textBox5.Text)+Convert.ToDouble(textBox21.Text)/60+Convert.ToDouble(textBox20.Text)/3600;

doubleL2=Convert.ToDouble(textBox6.Text)+Convert.ToDouble(textBox18.Text)/60+Convert.ToDouble(textBox16.Text)/3600;

B1=angletorad(B1);

L1=angletorad(L1);

B2=angletorad(B2);

L2=angletorad(L2);

doubleSsinAm,ScosAm,r01,r21,r03,S10,S12,S30,M,N,Am,Bm,t,n2,Vm2,t01,t21,t03,dA,dL,dB,S,A12,A21;

doublep1,p2,A123,A213;

dL=L2-L1;

dB=B2-B1;

Bm=0.5*(B1+B2);

M=Mjisuan(Bm);

N=Njisuan(Bm);

t=Math.Tan(Bm);

n2=Math.Cos(Bm)*Math.Cos(Bm)*e2/(1-e2);

Vm2=1+n2;

r01=N*Math.Cos(Bm);

r21=N*Math.Cos(Bm)/(24*Vm2*Vm2)*(1+n2-9*n2*t*t+n2*n2);

r03=-N/24*Math.Cos(Bm)*Math.Cos(Bm)*Math.Cos(Bm)*t;

S10=N/Vm2;

S12=-N/(24*Vm2)*Math.Cos(Bm)*Math.Cos(Bm)*(2+3*t*t+2*n2);

S30=N/(8*Vm2*Vm2*Vm2)*(n2-t*t*n2+n2*n2);

t01=t*Math.Cos(Bm);

t21=1/(24*Vm2*Vm2)*Math.Cos(Bm)*t*(2+7*n2+9*t*t*n2+5*n2*n2);

t03=1/(24)*Math.Cos(Bm)*Math.Cos(Bm)*Math.Cos(Bm)*t*(2+t*t+2*n2*t*t);

SsinAm=r01*dL+r21*dB*dB*dL+r03*dL*dL*dL;

ScosAm=S10*dB+S12*dB*dL*dL+S30*dB*dB*dB;

dA=t01*dL+t21*dB*dB*dL+t03*dL*dL*dL;

Am=Amcalculate(B2-B1,L2-L1,SsinAm,ScosAm);

S=SsinAm/Math.Sin(Am);

A12=Am-0.5*dA;

A21=Am+0.5*dA+Math.PI;

p1=180.0*A12/Math.PI;

intA121=(int)p1;

intA122=(int)((p1-A121)*60);

A123=(p1-A121-A122/60.0)*3600;

p2=180.0*A21/Math.PI;

intA211=(int)p2;

intA212=(int)((p2-A211)*60);

A213=(p2-A211-A212/60.0)*3600;

if(A121>360)

A121=A121-180;

textBox4.Text=A121.ToString();

textBox12.Text=A122.ToString();

textBox13.Text=A123.ToString();

textBox19.Text=A211.ToString();

textBox17.Text=A212.ToString();

textBox15.Text=A213.ToString();

textBox3.Text=S.ToString();

 

 

}

 

五、运算结果

 

正算反算(可对比结果,几乎一样)

 

 

六、实习总结

此次实习我收获颇多,我不仅对大地主题解算的公式更加的了解,而且对c#语言的掌握也更加熟悉了。

在实习过程中,遇到了一些问题,但是在我的精心检查下,都一一排除了。

简而言之,此次实习是十分理想的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1