namespace 大地测量学1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){double L1 = 130 + (10 * 60 + 12.2676) / 3600.0, B1 = 41 + (1 * 60 + 35.6874) / 3600.0, A12 = 1 + (49 * 60 + 43) / 3600.0, S = 80000.0;double ρ = 206264.806247096355,a = 6378245, b = 6356863.0187730473, c = 6399698.9017827110, α = 1 / 298.3, e2 = 0.006693421622966, eΒ = 0.006738525414683;//先BLA是角度,BmLmAm是弧度直接进行运算,可以直接进行三角函数运算,感觉在最上边声明MATH后就不用再一个一个的代用;L1 = L1 /180.0 * Math.PI;B1 = B1 /180.0 * Math.PI;A12 = (A12 / 180.0) * Math.PI;//转化为弧度double Wm = Math.Sqrt((1 - e2 * (Math.Sin(B1)) * (Math.Sin(B1))));//在此处e2为平方double Nm = a / Wm;double Mm = a * (1 - e2) / (Wm * Wm * Wm);double B02 = ρ / Mm * S * Math.Cos(A12);double L02 = ρ / Nm * S * Math.Sin(A12) * (Math.Cos(B1) / Math.Sin(B1));double A02 = L02 * Math.Sin(B1);L1 = 130 + (10 * 60 + 12.2676) / 3600.0;B1 = 41 + (1 * 60 + 35.6874) / 3600.0;A12 = 1 + (49 * 60 + 43) / 3600.0;double Bm = B1 + 1 / 2.0 * B02 / 3600;double Am = A12 + 1 / 2.0 * A02 / 3600;//此时为角度Bm = Bm/180*Math.PI;Am = Am/180*Math.PI;//此时为弧度double L2 = ρ / Nm * S * Math.Sin(Am) * (Math.Cos(Bm) / Math.Sin(Bm)) * (1 + A02 * A02 / (24 * ρ * ρ) - B02 * B02 / (24 * ρ * ρ));double B2 = ρ / Mm * S * Math.Cos(Am) * (1 + L02 * L02 / 12 / (ρ * ρ) + A02 * A02 / 24 / (ρ * ρ))/*我用了一个连续相除*/;double A2 = ρ / Nm * S * Math.Sin(Am) * Math.Tan(Bm) * (1 + B02 * B02 / 12 / ρ / ρ + L02 * L02 / 12 / ρ / ρ * Math.Cos(Bm) * Math.Cos(Bm) + A02 * A02 / 24 / ρ / ρ);double i = 1;for (i = 1; (Math.Abs(B2 - B02) > 0.0001); i++){Bm = B1 + 1 / 2.0 * B2 / 3600;Am = A12 + 1 / 2.0 * A2 / 3600;//此时为角度Bm = Bm / 180 * Math.PI;Am = Am / 180 * Math.PI;//此时为弧度B02 = B2;L02 = L2;A02 = A2;L2 = ρ / Nm * S * Math.Sin(Am) * (Math.Cos(Bm) / Math.Sin(Bm)) * (1 + A02 * A02 / (24 * ρ * ρ) - B02 * B02 / (24 * ρ * ρ));B2 = ρ / Mm * S * Math.Cos(Am) * (1 + L02 * L02 / 12 / (ρ * ρ) + A02 * A02 / 24 / (ρ * ρ))/*我用了一个连续相除*/;A2 = ρ / Nm * S * Math.Sin(Am) * Math.Tan(Bm) * (1 + B02 * B02 / 12 / ρ / ρ + L02 * L02 / 12 / ρ / ρ * Math.Cos(Bm) * Math.Cos(Bm) + A02 * A02 / 24 / ρ / ρ);}double B = B1 + B2/3600;//角度double L = L1 + L2 / 3600;double A21 = A12 + A2/3600+180;Console.WriteLine("{0} {1}", i , B);textBox1.Text = Convert.ToString(B);textBox3.Text = Convert.ToString(L);textBox5.Text = Convert.ToString(A21); }private void Form1_Load(object sender, EventArgs e){}private void button2_Click(object sender, EventArgs e){double L1 = 130 + (10 * 60 + 12.2676) / 3600.0, B1 = 41 + (1 * 60 + 35.6874) / 3600.0;double ρ = 206264.806247096355,a = 6378245, b = 6356863.0187730473, c = 6399698.9017827110,  e2 = 0.006693421622966, eΒ = 0.006738525414683;//先BLA是角度,BmLmAm是弧度直接进行运算,可以直接进行三角函数运算,感觉在最上边声明MATH后就不用再一个一个的代用;double L2 = 130.196203938625;double B2 = 41.7465640175246;double L = L2 - L1;L= L / 180.0 * Math.PI;double Bm = (B1 + B2) / 2.0;double Lm = (L1 + L2) / 2.0;//此时为角度L1 = L1 / 180.0 * Math.PI;B1 = B1 / 180.0 * Math.PI;//转化为弧度L2 = L2 / 180.0 * Math.PI;B2 = B2/ 180.0 * Math.PI;double W1 = Math.Sqrt(1 - e2 * Math.Sin(B1) * Math.Sin(B1));double W2 = Math.Sqrt(1 - e2 * Math.Sin(B2));double u1, u2;//Math.Sin(u1) = Math.Sin(B1) * Math.Sqrt(1 - e2) / W1;//Math.Sin(u2) = Math.Sin(B2) * Math.Sqrt(1 - e2) / W2;//Math.Cos(u1) = Math.Cos(B1) / W1;//Math.Cos(u2) = Math.Cos(B2) / W2;double a1 = Math.Sin(B1) * Math.Sqrt(1 - e2) / W1 * Math.Sin(B2) * Math.Sqrt(1 - e2) / W2;double a2 = Math.Cos(B1) / W1 * Math.Cos(B2) / W2;double b1 = Math.Cos(B1) / W1 * Math.Sin(B2) * Math.Sqrt(1 - e2) / W2;double b2 = Math.Sin(B1) * Math.Sqrt(1 - e2) / W1 * Math.Cos(B2) / W2;double δ = 0.0;double λ=L+δ;//这时候sitar为弧度double p=Math.Cos(B2)/W2*Math.Sin(λ);double q = b1 - b2 * Math.Cos(λ);double A1 = Math.Atan(p / q);A1 = A1 / Math.PI * 180;//此时为角度if (p > 0){if (q > 0){A1 = Math.Abs(A1);}else{A1 = 180 - Math.Abs(A1);}}else{if (q < 0){A1 = 180 + Math.Abs(A1);}else{A1 = 360 - Math.Abs(A1);}}//Math.Sin(δ) = p * Math.Sin(A1) + q * Math.Cos(A1);//Math.Cos(δ) = a1 + a2 * Math.Cos(λ);double o = Math.Atan(p * Math.Sin(A1) + q * Math.Cos(A1) / a1 + a2 * Math.Cos(λ));//此时为弧度o = o / Math.PI * 180;//此时为角度if ((a1 + a2 * Math.Cos(λ)) > 0){o = Math.Abs(o);}else{o = 180 - Math.Abs(o);}//Math.Cos(A0)//把A1化为弧度A1=A1/Math.PI*180;double zy=Math.Cos(B1) / W1*Math.Sin(A1);o=o/180*Math.PI;//化弧//Math .Sqrt(1-zy*zy);//sin a0=cos u1*sin A1;double α = (33523299 - (28189 - 70 *(1-zy*zy)) *(1-zy*zy)) * 0.0000000001;double Β1 = (28189 - 94 * (1-zy*zy)) * 0.0000000001;double x=2*a1-(1-zy*zy)*Math.Cos(δ);double δ1 = (α * o - Β1 * x * Math.Sin(o)) * (Math.Cos(B1) / W1 * Math.Sin(A1));/////////double i=1;for(i=1;Math.Abs(δ1-δ)>0.000001;i++){δ = δ1;λ = L + δ;p = Math.Cos(B2) / W2 * Math.Sin(λ);q = b1 - b2 * Math.Cos(λ);A1 = Math.Atan(p / q);A1 = A1 / Math.PI * 180;//此时为角度if (p > 0){if (q > 0){A1 = Math.Abs(A1);}else{A1 = 180 - Math.Abs(A1);}}else{if (q < 0){A1 = 180 + Math.Abs(A1);}else{A1 = 360 - Math.Abs(A1);}}//Math.Sin(δ) = p * Math.Sin(A1) + q * Math.Cos(A1);//Math.Cos(δ) = a1 + a2 * Math.Cos(λ);o = Math.Atan(p * Math.Sin(A1) + q * Math.Cos(A1) / a1 + a2 * Math.Cos(λ));//此时为弧度o = o / Math.PI * 180;//此时为角度if ((a1 + a2 * Math.Cos(λ)) > 0){o = Math.Abs(o);}else{o = 180 - Math.Abs(o);}//Math.Cos(A0)//把A1化为弧度A1 = A1 /180*Math.PI;zy = Math.Cos(B1) / W1 * Math.Sin(A1);o = o / 180 * Math.PI;//化弧//Math .Sqrt(1-zy*zy); zy=sin A0 平方  cos  (1 - zy * zy)//sin a0=cos u1*sin A1;α = (33523299 - (28189 - 70 * (1 - zy * zy)) * (1 - zy * zy)) * 0.0000000001;Β1 = (28189 - 94 * (1 - zy * zy)) * 0.0000000001;x = 2 * a1 - (1 - zy * zy) * Math.Cos(δ);δ1 = (α * o - Β1 * x * Math.Sin(o)) * (Math.Cos(B1) / W1 * Math.Sin(A1));}double y = ((1 - zy * zy)*(1 - zy * zy) - 2 * x * x) * Math.Cos(o);double A = 6356863.020 + (10708.949 - 13.474 * (1 - zy * zy)) * (1 - zy * zy);double B22 = 10708.938 - 17.956 * (1 - zy * zy);double C22 = 4.487;double S = A * o + (B22 * x + C22 * y) * Math.Sin(o);double A2 = Math.Atan(Math.Cos(B1) / W1 * Math.Sin(λ) / (b1 * Math.Cos(λ) - b2));textBox2.Text = Convert.ToString(S);textBox4.Text = Convert.ToString(A2);textBox6.Text = Convert.ToString(y); }}
}

这个实验运用了两次迭代感觉自己已经基本掌握了迭代的用法,但是不知道反算哪里出了问题,伤心。。。不过逐渐搞懂了大一学习C语言时老师教的基础课,需要程序的苦逼测绘人可以联系我,学长帮人到底。
谢谢阅读

大地测量学白塞尔大地主题解算相关推荐

  1. matlab大地主题正算代码,大地主题解算正算

    其关键问题是找出椭球 面上的大地元素与球面上相应元素之间的关系式,同时解决在球面上进行大地主题解算的方 法. 正算流程: 1.计算起点的归化纬度 2.计算辅助...... 其关键问题是找出椭球 面上的 ...

  2. 【测绘程序设计】——大地主题解算

      大地主题解算--大地极坐标(S,A)与大地坐标(B,L)的相互换算,它包括①大地主题正算 ( B 1 , L 1 ) + S + A 12 → ( B 2 , L 2 ) + A

  3. 白塞尔公式_如何设计像乌塞尔这样的800人的婚礼

    白塞尔公式 As a design enthusiast, I've always dreamed about designing my "Yes I do" scene. Fin ...

  4. 算白塞尔公式matlab,中误差计算公式

    与<中误差计算公式>相关的范文 内江师范学院 数 值 分 析 实 验 报 告 册 编制 张莉 审定 牟廉明 专业: 班级:级 学号: 姓名: 数学与信息科学学院 2013年9月 说 明 一 ...

  5. 英特尔架构助力大数据 • 智算一体机方案释放“数智”潜能

    在数据爆发式增长的今天,越来越多的组织开始构建大数据与人工智能 (AI) 平台,以期在强化海量数据处理能力的同时,赋能创新技术应用,推动数字化转型战略实施. 然而在构建大数据与 AI 平台的同时,复杂 ...

  6. 塞尔达风之杖技术分析-角色渲染和面部表情

    塞尔达风之杖技术分析-角色渲染和面部表情. https://zhuanlan.zhihu.com/p/26140321 首发于游戏开发启示录 塞尔达风之杖技术分析-角色渲染和面部表情 拳四郎 ​ 游戏 ...

  7. 塞尔之光的树心旋转机关_塞尔之光攻略心得_塞尔之光怎么创建人物 塞尔之光角色创建方法详解-公共游戏资源网...

    死后这个剑鞘是父亲留给我的,他说这个剑鞘是看护着国际和平的钥匙,尽管不知道是什么意思,但 个树心图纹使命,现已对好了便是过不了塞尔之光梦魇城堡怎样过 梦魇城堡攻略流程介绍答:塞尔之光梦魇城堡攻略流程 ...

  8. 素数计数公式全面拉丁化改写-小有改进-Meissel公式-梅塞尔-Lehmer公式-莱梅=勒梅尔-筛法三种形式-孟庆余公式(转载)...

    何冬州的百度空间Blog   本文的另一版本:  http://hi.baidu.com/wsktuuytyh/blog/item/396a934ac679680208f7ef2c.html    信 ...

  9. 7句话让Codex给我做了个小游戏,还是极简版塞尔达,一玩简直停不下来

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 梦晨 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 什么,7 ...

  10. 塞尔达amiibo_塞尔达荒野之息pC版(附带全Amiibo)安装教程,最无敌的游戏

    点击上方「蓝字」关注我们 给你最好的 <塞尔达传说:荒野之息(The Legend of Zelda: Breath of the Wild)>是任天堂旗下经典角色扮演游戏系列<塞尔 ...

最新文章

  1. Linux学习(十二)---RPM和YUM
  2. 周志华:“数据、算法、算力”人工智能三要素,在未来要加上“知识”| CCF-GAIR 2020...
  3. 鼠标在linux下如何工作,Linux操作系统下的鼠标操作
  4. Hadoop教程(五):Flume、Sqoop、Pig、Hive、OOZIE
  5. tcc读写文本txt文件
  6. php通知websocket,php实现websocket实时消息推送
  7. 华三交换机mode是什么意思_POE交换机150米、长距离250米传输是什么意思?
  8. app每秒并发数_性能测试连载 (38) jmeter 线程数与性能测试的负载模式
  9. php里的header,PHP中常用的header头部定义有哪些
  10. LeetCode简单题目(#118 #119 #121 #122 #125 #136 #141 #155)-8道
  11. Learun.framework快速开发框架-功能特点与手机app
  12. 51单片机开发板介绍
  13. 凯立德地图导航2022年懒人包 安卓版
  14. HCIE-RS的学习过程考证心得(面试过渡新版本)
  15. Golang中的并发:如何使用Goroutines?详细指南
  16. 二进制部署Kubernetes v1.13.4 HA可选 1
  17. Pixelmator for Mac v3.9.9 功能强大的图像编辑软件
  18. Springboot自动装配源码分析
  19. JNI NDK入门详解
  20. java字符串取反_Java探索之string字符串的应用代码示例

热门文章

  1. ubuntu18.04下载显卡驱动+CUDA+CUDNN
  2. chrome拓展 --截屏文字识别
  3. html中table分页显示,html中table表格分页
  4. MAC OS系统如何使用动态远程桌面
  5. Python爬虫 - 01.实现贴吧一键签到
  6. SDN技术的十个关键因素
  7. java生成10000人随机姓名及手机号的excel
  8. (Cisco模拟)链路聚合 Eth-trunk
  9. Java常量池详解:字符串常量池、Class常量池、运行时常量池 三者关系
  10. 铺管家教育:拼多多如何提升星级