大地主题解算-C#
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大地主题解算-正算-C#
大地主题解算-正算-程序
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
int n,du,fen,miao;
double B1, L1, A1, S, dS, dB1, dL1, M1, N1, W1;
double E = 0.006694384999588, a = 6378140, C;
B1 =( Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox9.Text)/60 + Convert.ToDouble(textBox10.Text)/3600 )* Math.PI / 180;
L1 = (Convert.ToDouble(textBox2.Text) + Convert.ToDouble(textBox11.Text)/60 + Convert.ToDouble(textBox12.Text)/3600) * Math.PI / 180; ;
A1 = (Convert.ToDouble(textBox3.Text) + Convert.ToDouble(textBox13.Text)/60 + Convert.ToDouble(textBox14.Text)/3600) * Math.PI / 180; ;
S = Convert.ToDouble(textBox5.Text);
n = Convert.ToInt16(textBox4.Text);
double[] L = new double[100000];
double[] B = new double[100000];
double[] dL = new double[100000];
double[] dB = new double[100000];
double[] A = new double[100000];
double[] W = new double[100000];
double[] N = new double[100000];
double[] M = new double[100000];
W1 = Math.Pow(1 - E * Math.Pow(Math.Sin(B1), 2), 0.5);
N1 = a / W1;
M1 = a * (1 - E) / (W1 * W1 * W1);
C = N1 * Math.Sin(A1) * Math.Cos(B1);
dS = S / n;
dB1 = dS * Math.Cos(A1) / M1;
dL1 = dS * Math.Sin(A1) / N1 / Math.Cos(B1);
B[0] = B1;
L[0] = L1;
dB[0] = dB1;
dL[0] = dL1;
A[0] = A1;
M[0] = M1;
N[0] = N1;
W[0] = W1;
int i;
for (i = 1; i < n; i++)
{
dB[i - 1] = dS * Math.Cos(A[i - 1]) / M[i - 1];
B[i] = B[i - 1] + dB[i - 1];
W[i] = Math.Pow(1 - E * Math.Pow(Math.Sin(B[i]), 2), 0.5);
N[i] = a / W[i];
M[i] = a * (1 - E) / (W[i] * W[i] * W[i]);
dL[i - 1] = dS * Math.Sin(A[i - 1]) / (N[i - 1] * Math.Cos(B[i - 1])); L[i] = L[i - 1] + dL[i - 1];
A[i] = Math.Asin(C / (Math.Cos(B[i]) * N[i]));
}
du = Convert.ToInt16(Math.Floor(B[i - 1] * 180 / Math.PI));//du
fen = Convert.ToInt16(Math.Floor((B[i - 1] * 180 / Math.PI - Math.Floor(B[i - 1] * 180 / Math.PI)) * 60)); //fen
miao = Convert.ToInt16(Convert.ToInt16(((B[i - 1] * 180 / Math.PI - Math.Floor(B[i - 1] * 180 / Math.PI)) * 60 - Math.Floor((B[i - 1] * 180 / Math.PI - Math.Floor(B[i - 1] * 180 / Math.PI)) * 60)) * 60));//秒?
textBox6.Text = Convert.ToString(du) + "度è" + Convert.ToString(fen) + "分?" + Convert.ToString(miao) + "秒?";
du = Convert.ToInt16(Math.Floor(L[i - 1] * 180 / Math.PI));//du
fen = Convert.ToInt16(Math.Floor((L[i - 1] * 180 / Math.PI - Math.Floor(L[i - 1] * 180 / Math.PI)) * 60)); //fen
miao = Convert.ToInt16(Convert.ToInt16(((L[i - 1] * 180 / Math.PI - Math.Floor(L[i - 1] * 180 / Math.PI)) * 60 - Math.Floor((L[i - 1] * 180 / Math.PI - Math.Floor(L[i - 1] * 180 / Math.PI)) * 60)) * 60));//秒?
textBox7.Text = Convert.ToString(du) + "度è" + Convert.ToString(fen) + "分?" + Convert.ToString(miao) + "秒?";
du = Convert.ToInt16(Math.Floor((180 + A[i - 1] * 180 / Math.PI)));//du
fen = Convert.ToInt16(Math.Floor(((180 + A[i - 1] * 180 / Math.PI) - Math.Floor((180 + A[i - 1] * 180 / Math.PI))) * 60)); //fen
miao = Convert.ToInt16(Convert.ToInt16((((180 + A[i - 1] * 180 / Math.PI) - Math.Floor((180 + A[i - 1] * 180 / Math.PI))) * 60 - Math.Floor(((180 + A[i - 1] * 180 / Math.PI) - Math.Floor((180 + A[i - 1] * 180 / Math.PI))) * 60)) * 60));//秒?
textBox8.Text = Convert.ToString(du) + "度è" + Convert.ToString(fen) + "分?" + Convert.ToString(miao) + "秒?";
}
private void Form1_Load(object sender, EventArgs e)
{