大地高斯正反算C.doc
《大地高斯正反算C.doc》由会员分享,可在线阅读,更多相关《大地高斯正反算C.doc(6页珍藏版)》请在冰豆网上搜索。
大地高斯正反算-C#
代码如下
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsFormsApplication3
{
publicpartialclassForm1:
Form
{
doublea,E,E1,bbb;
publicForm1()
{
InitializeComponent();
}
privatevoidmenuStrip1_ItemClicked(objectsender,ToolStripItemClickedEventArgse)
{
}
privatevoidtoolStripTextBox1_Click(objectsender,EventArgse)
{
}
privatevoidtoolStripMenuItem1_Click(objectsender,EventArgse)
{
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(a!
=6378245.00&&a!
=6378137&&a!
=6378137&&a!
=6378140)
{
textBox3.Text="请?
选?
择?
坐?
标括?
系μ";
textBox4.Text="请?
选?
择?
坐?
标括?
系μ";
}
else
{
intdu,fen,miao;
doubleB,L,X;
doubleN,x,y,t,n,m,m0,m2,m4,m6,m8,l;
B=Convert.ToDouble(textBox1.Text)*Math.PI/180+Convert.ToDouble(textBox2.Text)/60*Math.PI/180+Convert.ToDouble(textBox9.Text)/3600*Math.PI/180;
L=Convert.ToDouble(textBox10.Text)*Math.PI/180+Convert.ToDouble(textBox11.Text)/60*Math.PI/180+Convert.ToDouble(textBox12.Text)/3600*Math.PI/180;;
l=L-Convert.ToInt16((L-3.0)/6)*6-3.0;
l=l*Math.PI/180;
N=a/Math.Pow(1-E*Math.Sin(B)*Math.Sin(B),0.5);
m0=a*(1-E);
m2=1.5*E*m0;
m4=5/4*E*m2;
m6=7/6*E*m4;
m8=9/8*E*m6;
X=(m0+0.5*m2+3/8*m4+5/16*m6+35/128*m8)*B-(0.5*m2+0.5*m4+15/32*m6+7/16*m8)/2*Math.Sin(2*B)+(m4/8+3/16*m6+7/32*m8)/4*Math.Sin(4*B)-(m6/32+m8/16)/6*Math.Sin(6*B)+m8/128/8*Math.Sin(8*B);
t=Math.Tan(B);
n=Math.Cos(B)*Math.Cos(B)*E1;
m=Math.Cos(B)*l;
x=X+N/2*t*Math.Cos(B)*Math.Cos(B)*l*l+N/24*t*(5-t*t+9*n+4*n*n)*Math.Pow(Math.Cos(B)*l,4)+N/720*t*(61-58*t*t+t*t*t*t)*Math.Pow(Math.Cos(B)*l,6);
y=N*((1+(1/6*(1-t*t+n)+1/120*(5-18*t*t+t*t*t*t+14*n-58*n*t*t)*m*m)*m*m)*m);
textBox3.Text=Convert.ToString(x);
textBox4.Text=Convert.ToString(y);
}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
intdu,fen,miao;
if(a!
=6378245.00&&a!
=6378137&&a!
=6378137&&a!
=6378140)
{
textBox7.Text="请?
选?
择?
坐?
标括?
系μ";
textBox8.Text="请?
选?
择?
坐?
标括?
系μ";
}
else
{
doubleBf,bb,Vf,tf,xf,yf,nf,Nf,B0,l0;
xf=Convert.ToDouble(textBox5.Text);
yf=Convert.ToDouble(textBox6.Text);
bb=xf/bbb;
Bf=bb+(50221746+(293622+(2350+22*Math.Cos(bb)*Math.Cos(bb))*Math.Cos(bb)*Math.Cos(bb))*Math.Cos(bb)*Math.Cos(bb))*Math.Sin(bb)*Math.Cos(bb)*Math.Pow(10,-10);
tf=Math.Tan(Bf);
nf=Math.Cos(Bf)*Math.Cos(Bf)*E1;
Vf=Math.Pow(1+E1,0.5);
Nf=a/Math.Pow(1-E*Math.Sin(Bf)*Math.Sin(Bf),0.5);
B0=Bf*180/Math.PI-0.5*Vf*Vf*tf*(yf*yf/Nf/Nf-1/12.00*(5+3*tf*tf+nf-9*nf*tf*tf)*Math.Pow(yf/Nf,4)+1/360.00*(61+90*tf*tf+45*tf*tf)*Math.Pow(yf/Nf,6))*180/Math.PI;
l0=1/Math.Cos(Bf)*(yf/Nf-1/6*(1+2*tf*tf+nf)*Math.Pow(yf/Nf,3)+1/120*(5+28*tf*tf+24*tf*tf+6*nf+8*nf*tf*tf)*Math.Pow(yf/Nf,5))*180/Math.PI;
du=Convert.ToInt16(Math.Floor(B0));//du
fen=Convert.ToInt16(Math.Floor((B0-Math.Floor(B0))*60));//fen
miao=Convert.ToInt16(Convert.ToInt16(((B0-Math.Floor(B0))*60-Math.Floor((B0-Math.Floor(B0))*60))*60));//秒?
textBox7.Text=Convert.ToString(du)+"度è"+Convert.ToString(fen)+"分?
"+Convert.ToString(miao)+"秒?
";
du=Convert.ToInt16(Math.Floor(l0));//du
fen=Convert.ToInt16(Math.Floo