一、软件说明
这是一款可以用来进行闭合或者附和导线计算、三角高程计算以及高差平赋以及绘制导线缩略图的多功能软件。该软件可以自主选择二等、三等等级标准以及闭合或者附和导线模式,通过TXT文件导入已经观测好的数据结果,自动计算相应各点的坐标增量以及坐标值,并计算出闭合差以及K值等关键值,求算出各点坐标后,根据其值再进行改正求值计算,最后,根据已经计算出的坐标值,在相应界面上画出导线图。

二.程序架构
1、主窗体:
①导线计算界面:
该界面为程序的主界面,在该界面中,您可以选择导线计算等级以及导线模式,导入相关数据,手动输入已知的起始坐标值以及起始方位角,程序则自动计算出各点坐标值并相应误差值,此外,在该界面中还可以实现对最终结果的评定。该界面使用的主要控件有:menustrip控件、tabcontrol控件、dataGridview控件、button控件、text控件、radio button控件、group box控件、label控件、picture box控件

②高差计算界面:
该界面为三角高程计算界面,根据已导入的数据,求算出各点相应的高差值,并求出观测误差。该界面使用的主要控件有:dataGridview控件、button控件、text控件、radio button控件、label控件。

③导线绘制界面
该界面根据主界面计算出的各点的坐标值在picture box中绘制出基本的点位位置图。该界面使用的主要控件有:button控件、picture box控件。

2、设计思想:
设计的多功能导线计算检核绘图仪根据目前测绘工作人员在进行内业计算遇到的的种种问题,实现了高程,坐标值,点位图的电脑自动求算数据,并对数据实现检验改正,节省了测绘工人的工作量,同时提高了结果的正确性与精准性。同时该多功能软件实现了对观测结果的评定功能,测量人员可以根据评定结果选择是否重新测量或者其他措施。

三.关键技术
1.角度类
本程序中,先定义了一个庞大的角度类的算法,然后在该算法中,我组规定了标准角,即其相应的角度值、分度值、秒度值皆为正值或者皆为负值,在此基础上,设计了读取文件数据,将字符串转化为角度,并自动判断该角度是否为标准化角度,如果不是则自动转化为标准角度,并设计了根据已知角度求算其余值的求值函数和重载函数。具体即为角度标准化算法,角度弧度转换算法,运算符重载算法,to string函数重载算法,字符串转换成为角度算法,最后将此角度作为动态链接库引用到主程序中。

(1)角度标准化算法
(该算法的设计解决了观测结果中出现负角的情况,有效地实现角度的标准化)


2.点类
在本程序中,我们还设计了一个点类,在该类中不仅继承了角度类,还添加了新的函数,而该类作为本程序的核心,主要实现的目标是存储观测出的水平角、仪器高、前视垂直角、本测站前视棱镜高、本测站后视棱镜高、本测站到前视站距离(斜距离)、本测站到后视站距离(斜距离),此外,设计求解两点间距离的算法、根据已知两点高程求高差算法、三角高程求高差的算法、求坐标增量算法
、方位角的计算的算法,在最后一个算法中又包括.由坐标反算 p1到p2的方位角算法、导线左角、导线右角的算法。最后,将该点类作为动态链接库引用到主程序中。在以下算法中,主要展示本组核心算法:即方位角计算算法、坐标计算算法、三角高程计算算法。
(1)求两点间距离算法

(2)三角高程求高差的算法

(3)方位角的计算的算法
1.由坐标反算 p1到p2的方位角

2.导线左角

3.主窗体程序
在窗体程序设计中,本组设计了庞大的运行算法,主要运用list控件对程序进行操作,在改程序中,主要包含的基本变量为角度改正数、改正后水平观测角、方位角、x的改正数、y的改正数、x的增量、y的增量、平距、往测高差、反测高差、高差、改正数等。
(1)本程序中,通过运用类似于C语言中全局变量的列表List来对数据进行动态存储,下图为列表。

(2)本程序的文件读写功能较为别致,它设计了两种读文件的方式,其一是通过读文件的方式,另一种是读表格的方式,再经过对导线点的个数判断实现文件读取功能。在该算法中,我们手动输入观测点数,则自动生成表格,读取数据核心代码如下:
Point b11 = new Point();
degree a11 = new degree();
b11.Name = (string)this.dataGridView1.Rows[j12].Cells[0].Value;
b11.H_angle = a11.par((string)this.dataGridView1.Rows[j12].Cells[1].Value);
leadlist.Add(b11);
s.Add(Convert.ToDouble(this.dataGridView1.Rows[j12].Cells[4].Value));
(3)导线计算表格自助生成、三角高程计算表格自助生成算法:在该算法中,程序实现了时时、动态地根据导线点的个数生产表格的功能)

(4)导线的计算算法
在该算法中,我们主要进行了导线符合点坐标的计算、闭合导线的计算、角度闭合差的计算、方位角的计算、改正后的观测角的计算、差量平赋分配、坐标的计算、三角高程的计算、各段高差的计算并赋值。

(5)导线计算最终成果的评定,在该算法中,我们实现了根据事先选择好的计算等级对程序得出的结果的评定功能,标识错误的核心算法如下:

(6) 绘图算法
在该算法中,程序实现了导线的绘图功能,在绘图过程中,其核心算法是根据先求算好的坐标值,即世界坐标系下的坐标值,转换为NDC(规格化坐标系)、再转换为DC(设备坐标系),进而在Picture box 中绘制图像。其核心算法具体如下:


四.功能演示
1.首先我们用记事本随机写好一组数据

2.手动输入导线的定向点坐标以及起算点坐标,并输入第一条边与定向边的夹角,点击计算按钮自动计算出相应待求量,

3.接下来,再点击成果评定按钮,可以该组数据的角度闭合差、坐标闭合差、相对误差等值。


4.再选择三角高程计算模式,手动输入起算点坐标与附和点坐标,点击左下方的计算按钮,则计算出相应的值。

5.点击三角高程模式中的成果评定按钮,则程序中,显示蓝色与红色交互的地方则提示改组数据有错误,并在下方的Picture box 中提示给使用者。

若上图所示中,我们将第一组数据的棱镜高更改为6m,则程序计算出结果后,指出错误所在位置处,并在下方的Picture box 中给出以下提示。

6.切换到导线路线图绘制模式,点击绘图按钮,在自动生成相应的点的路线,并在点的所在位置处标注出它的横坐标值、纵坐标值以及角度。

ps:第一次发文,求轻喷.

C#编写三维自主导线高级计算器相关推荐

  1. 编译原理-如何使用flex和yacc工具构造一个高级计算器

    Flex工具的使用方法 Lex 是一种生成扫描器的工具. Lex是Unix环境下非常著名的工具,主要功能是生成一个扫描器(Scanner)的C源码. 扫描器是一种识别文本中的词汇模式的程序. 这些词汇 ...

  2. java高级计算器_高级计算器[Java版]

    import java.util.Scanner; /* * time:       2012年11月17日 11:34:10 * content:     高级计算器 * author:    覃唐 ...

  3. PHP高级计算器的过程,PHP基于堆栈实现的高级计算器功能示例

    PHP基于堆栈实现的高级计算器功能示例 发布于 2017-10-14 13:38:26 | 108 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  4. php利用堆栈 实现高级计算器

    当我们得到一个字符串运算式该如何去得出它的运算结果呢? 这时候我们就能使用堆栈的算法很巧妙的解决这个问题. 思路是这样的:(我们利用php函数substr循环去截取这个字符串运算式,依次取出这个字符串 ...

  5. 【基本办公软件】万彩办公大师教程丨高级计算器的应用

    横屏显示高级计算器,含加减乘除.百分比.数值记忆储存.清除等标准计算,支持三角函数,反三角函数,指数,对数函数,幂函数,求余函数,阶乘等科学计算,实现逻辑移位指令.逻辑运算.十六进制.十进制.二进制快 ...

  6. 基于JavaSwing的高级计算器

    开发环境 eclipse+jdk1.8 系统简介 本系统是一个Java开发的高级计算器,可以实现工程计算类,以及平方根,开根号,加括号运算等等功能,具体可看演示视频,本系统无数据库! 演示视频 基于J ...

  7. Eclipse中用Swing编写简单的黄金分割比率计算器

      前段时间翻译<(翻译)布局和矩形中应用黄金分割比率>时在网上找了个在线计算黄金分割比率的网站(网址为 http://www.thismanslife.co.uk/projects/ph ...

  8. 如何实现实景三维自主可控,在这里得到答案

    实景三维作为国家重要的新型基础设施,可赋能全行业数字化建设.当下,实景三维中国建设全面开局,为保障国家时空数据安全,实现实景三维软硬件国产化替代势在必行. 依托多年深厚的技术底蕴与实践经验,大势智慧以 ...

  9. 使用python的while语句,编写简单门票与年龄计算器

    假设游乐园或不同的景点会根据年龄收取不同的票价: 1.不到3岁的小孩免门票: 2.3岁到12岁的小孩需买儿童票,每张10元: 3.超过12岁的小孩及成人则需买成人票,每张20元: 4.大于60岁的老人 ...

最新文章

  1. WiFiDemon – iOS WiFi RCE 0-Day漏洞利用
  2. mysql 查询语句_MySQL相关(一)- 一条查询语句是如何执行的
  3. javascript 强制类型转换
  4. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板
  5. arthas 排查内存溢出_Java 应用线上问题排查思路、常用工具小结
  6. Silverlight实用窍门系列:74.Silverlight使用Perst数据库Demo
  7. 语音支持英语_语音识别英语_英语语音评分 - 云+社区 - 腾讯云
  8. 广数系统加工中心编程_数控铣和加工中心编程
  9. Sobel边缘检测算子数学原理再学习
  10. HTML之meta属性大全
  11. 调试LLVM如何生成SSA
  12. Google pixel 原生安卓出现 WiFi 网络受限、优化网速、网络无法连接问题
  13. ES term terms 查询
  14. 王小波 — 有趣的灵魂实难寻觅
  15. iOS OC语言(二) 类
  16. (笔记整理)VUE初识
  17. 面试笔记@Java基础
  18. vs中/EHa、/EHs、/EHsc的区别
  19. Windows Phone灵魂诠释:Metro UI界面完全解析
  20. 市场涌动,但也乱象丛生!是谁在过度包装“智能”

热门文章

  1. html5 3d音乐相册模板,CSS 3D音乐相册(带悬停打开动画)
  2. 红外遥控基础 小模块设计
  3. 凸透镜成像实验软件_凸透镜成像实验,你玩的远远不够!
  4. 80行代码实现简易版摩斯码编译器
  5. matlab tril a 1,matlab习题
  6. from math import *
  7. java操作mysql导表_Java实现批量导入excel表格数据到数据库中的方法
  8. php手机访问地址吗,如何用php判断电脑访问还是手机访问
  9. java爬虫(jsoup)实现搜狗图片一键下载
  10. 武汉华师驾校学车笔记_纪实