C# 大地测量高斯投影正反算公式计算程序
2018-09-16 10:54
323 查看
C# 大地测量高斯投影正反算公式程序
一、编程作业要求:
编写能够进行高斯投影正反算公式计算的程序。
二、实验效果:
三、部分代码实现
1.选择界面
[code]using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace GaussProjection { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void label1_Click(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { label1.BackColor = Color.Transparent; } private void button1_Click(object sender, EventArgs e) { Form2 F2 = new Form2(); F2.Show(); } private void button2_Click(object sender, EventArgs e) { Form3 F3 = new Form3(); F3.Show(); } } }
2.坐标正算
[code]private void Form2_Load(object sender, EventArgs e) { } double a, e2, e12, l, X, m0, m2, m4, m6, m8, a0, a2, a4, a6, a8; double d2r = 180 * 3600 / Math.PI; private void button1_Click(object sender, EventArgs e) { double B, L, W, N, t2, n2, n0, n, L0, x, y; int d1 = int.Parse(textBox1.Text); int f1 = int.Parse(textBox5.Text); double m1 = double.Parse(textBox6.Text); B = (d1 * 3600 + f1 * 60 + m1); d1 = int.Parse(textBox8.Text); f1 = int.Parse(textBox7.Text); m1 = double.Parse(textBox2.Text); L = (d1 * 3600 + f1 * 60 + m1); if (radioButton1.Checked) { a = 6378245.0; e2 = 0.006693421622966; e12 = 0.006738525414683; m0 = a * (1 - e2); m2 = (3 * e2 * m0) / 2; m4 = (5 * e2 * m2) / 4; m6 = (7 * e2 * m4) / 6; m8 = (9 * e2 * m6) / 8; a0 = (m0 + (m2 / 2) + ((3 * m4) / 8) + ((5 * m6) / 16) + ((35 * m8) / 128)); a2 = m2 / 2 + m4 / 2 + 15 * m6 / 32 + 7 * m8 / 16; a4 = m4 / 8 + 3 * m6 / 16 + 7 * m8 / 32; a6 = m6 / 32 + m8 / 16; a8 = m8 / 128; } else if (radioButton2.Checked) { a = 6378140.0; e2 = 0.006694384999588; e12 = 0.006739501819473; m0 = a * (1 - e2); m2 = 3 * e2 * m0 / 2; m4 = 5 * e2 * m2 / 4; m6 = 7 * e2 * m4 / 6; m8 = 9 * e2 * m6 / 8; a0 = m0 + m2 / 2 + 3 * m4 / 8 + 5 * m6 / 16 + 35 * m8 / 128; a2 = m2 / 2 + m4 / 2 + 15 * m6 / 32 + 7 * m8 / 16; a4 = m4 / 8 + 3 * m6 / 16 + 7 * m8 / 32; a6 = m6 / 32 + m8 / 16; a8 = m8 / 128; } else if (radioButton3.Checked) { a = 6378137.0; e2 = 0.0066943799013; e12 = 0.00673949674227; m0 = a * (1 - e2); m2 = 3 * e2 * m0 / 2; m4 = 5 * e2 * m2 / 4; m6 = 7 * e2 * m4 / 6; m8 = 9 * e2 * m6 / 8; a0 = m0 + m2 / 2 + 3 * m4 / 8 + 5 * m6 / 16 + 35 * m8 / 128; a2 = m2 / 2 + m4 / 2 + 15 * m6 / 32 + 7 * m8 / 16; a4 = m4 / 8 + 3 * m6 / 16 + 7 * m8 / 32; a6 = m6 / 32 + m8 / 16; a8 = m8 / 128; } if (radioButton4.Checked) { l = 0; n0 = (L / 3600) / 6.0; n = Math.Ceiling(n0); L0 = (6 * n - 3) * 3600; l = L - L0; } else if (radioButton5.Checked) { l = 0; n = (int)((L / 3600) / 3.0); L0 = 3 * n * 3600; l = L - L0; } else if (radioButton6.Checked) { l = 0; n = (int)((L / 3600) / 1.5); L0 = 1.5 * n * 3600; l = L - L0; } W = Math.Sqrt(1 - e2 * Math.Sin(B / d2r) * Math.Sin(B / d2r)); N = a / W; t2 = Math.Tan(B / d2r) * Math.Tan(B / d2r); n2 = e12 * Math.Cos(B / d2r) * Math.Cos(B / d2r); X = a0 * (B / d2r) - a2 * Math.Sin(2 * B / d2r) / 2 + a4 * Math.Sin(4 * B / d2r) / 4 - a6 * Math.Sin(6 * B / d2r) / 6 + a8 * Math.Sin(8 * B / d2r) / 8; x = X + N * Math.Sin(B / d2r) * Math.Cos(B / d2r) * l * l / (2 * Math.Pow(d2r, 2)) + N * Math.Sin(B / d2r) * Math.Pow(Math.Cos(B / d2r), 3) * (5 - t2 + 9 * n2 + 4 * n2 * n2) * Math.Pow(l, 4) / (24 * Math.Pow(d2r, 4)) + N * Math.Sin(B / d2r) * Math.Pow(Math.Cos(B / d2r), 5) * (61 - 58 * t2 + t2 * t2) * Math.Pow(l, 6) / (720 * Math.Pow(d2r, 6)); y = N * Math.Cos(B / d2r) * l / d2r + N * Math.Pow(Math.Cos(B / d2r), 3) * (1 - t2 + n2) * Math.Pow(l, 3) / (6 * Math.Pow(d2r, 3)) + N * Math.Pow(Math.Cos(B / d2r), 5) * (5 - 18 * t2 + t2 * t2 + 14 * n2 - 58 * n2 * t2) * Math.Pow(l, 5) / (120 * Math.Pow(d2r, 5)); x = Math.Round(x, 4); y = Math.Round(y, 4); textBox3.Text = x.ToString(); textBox4.Text = y.ToString(); }
四、程序文件及源代码
阅读更多相关文章推荐
- C#:程序控制--计算程序执行耗费的时间
- 例题:计算运费。c#语言基础,比较简单。看代码输入格式和方法。同样方法可以做一个 出租车打车的程序
- 三种计算c#程序运行时间的方法
- C# 字符串转换为计算公式
- C#程序中插入数学、物理公式,显示在页面上
- acmore|acmore.cc1006编写程序,显示计算的结果1007可以使用以下公式计算1008转换温度1009计算圆柱体的体积1010将英尺转换为米
- C#计算一段程序运行时间的三种方法
- 转: c# 字符串公式计算
- c#根据公式进行自动计算的实现
- c#第一个程序-计算平方根
- C#计算一段程序运行时间的三种方法
- c#根据公式进行自动计算的实现
- C# StringBuilder的介绍和使用、Stopwatch 计算程序运行的时间
- C# Mandelbrot和Julia分形图像生成程序更新到2010-9-14版 支持多线程计算 多核处理器
- C#计算程序的运行时间
- C#行列式计算程序
- C#8—写一个测试标准身高体重的程序、输入日期年月日, 计算这一天是一年中的第几天(考虑闰年)
- (转)c# math 计算两点之间的角度公式
- C# 计算程序用时
- c#根据公式进行自动计算的实现