#C++/测绘附和导线测量源码

traverse_survey.h:
#pragma once
class traverse_survey
{private:const double pi = 3.1415926;
public:traverse_survey();  //导线测量的构造函数~traverse_survey(); // 导线测量的析构函数void h_d(double *d,double *m,double *s,int N,double *Decimal_degrees);//把观测的度分秒转化了弧度使用void transfrom_d_m_s(double Decimal_degrees); // 十进制的度转化为度分秒void position_angle(double x, double y);  //求方位角void start_end_position(double A_x, double A_y, double B_x, double B_y,  double &start_position);//求起始和末位的坐标方位角。void sum_distance(int N, double *distance, double &sum);//求导线的总长void Angle_position(double start_positon,  int N, double *Decimal_degrees,double *every_position);//求每一站的坐标方位角void Correct_Angle_position(int N, double *every_position, double end_position, double *correct_every_position);//改正后的每一站的坐标方位角void d_x_y(double N, double *distance, double *correct_every_position,double *d_x, double *d_y);//求d_x_y的值void f_x(double N, double *d_x, double A_x, double C_x, double &f_x);//求f_xvoid f_y(double N, double *d_y, double A_y, double C_y, double &f_y); //求f_yvoid f_s(double sum,double f_x, double f_y); //求全长闭合差和全长相对闭合差void Correct_d_x_y(int N, double *d_x, double *d_y, double *distance, double sum, double f_x, double f_y,double *correct_d_x, double *correct_d_y);//求改正之后的d_x_yvoid x_y(int N, double A_x, double A_y, double *correct_d_x, double *correct_d_y, long double *x, long double *y);//求x,y;};

traverse_survey.cpp:
#include "traverse_survey.h"
#include<math.h>
#include<iostream>
using namespace std;
traverse_survey::traverse_survey()
{}
traverse_survey::~traverse_survey()
{cout << "-----------------------结束---------------------------" << endl;
}
//------------------  把观测的度分秒转化了十进制的度使用------------------------//
//*d----------------输入的度
//*m----------------输入的分
//*s----------------输入的秒
//N-----------------站数
//*Decimal_degrees----------保存的每一站转化的观测角度的--十进制的度。
void traverse_survey::h_d(double *d, double *m, double*s,int N,double *Decimal_degrees)
{for (int i = 0; i < N; i++){Decimal_degrees[i] = d[i] + m[i] / 60 + s[i] / 3600;}
}
//------------------十进制度 转化为度分秒输出------------------------//
//Decimal_degrees--------------十进制的度
void traverse_survey::transfrom_d_m_s(double Decimal_degrees)
{double d = 0, m = 0, s = 0;d = int(Decimal_degrees);m = int((Decimal_degrees - d) * 60);s = (Decimal_degrees - d - m / 60) * 3600;cout << d << "°" << m << "′" << s << "″" << endl;
}
//------------------求每一站的坐标方位角-和角度闭合差--------------------------//
//start_positon--------------起始方位角
//N--------------------------站数
//*Decimal_degrees-----------每一站的观测角度
//*every_position------------保存每一站的方位角 (十进制的度)
void traverse_survey::Angle_position(double start_positon,int N, double *Decimal_degrees,double *every_position)
{for (int i = 0; i < N; i++){if (i == 0){every_position[0] = start_positon + Decimal_degrees[0] - 180;if (every_position[0] < 0){every_position[0] += 360;}else if (every_position[0] > 360){every_position[0] -= 360;}}else{every_position[i] = every_position[i - 1] + Decimal_degrees[i] - 180;if (every_position[i] < 0){every_position[i] += 360;}else if (every_position[i] > 360){every_position[i] -= 360;}}cout << "第" << i+1 << "个坐标方位角为:";transfrom_d_m_s(every_position[i]);cout<< endl;}
}
//------------------------------改正后的每一站的坐标方位角------------------------------//
//N------------------------------站数
//*every_position  --------------每一站的坐标方位角
//end_position-------------------最后一站的坐标方位角
// *correct_every_position-------改正后的每一站坐标方位角
void traverse_survey::Correct_Angle_position(int N, double *every_position, double end_position, double *correct_every_position)
{double temp = 0;cout << "该导线的角度闭合差为:";transfrom_d_m_s(every_position[N - 1] - end_position);cout << endl;temp = (every_position[N - 1] - end_position) / N;for (int i = 0; i < N; i++){correct_every_position[i] = every_position[i] - (i+1)*temp;cout << "第" << i + 1 << "个改正后的坐标方位角为:";transfrom_d_m_s(correct_every_position[i]);cout << endl;}
}
//---------------------求d_x_y的值----------------------------//
//N------------------------------------------站数
//*distance----------------------------------每一站的距离
//*correct_every_position--------------------每一站改正后的坐标方位角
//*d_x---------------------------------------存储每一站的d_x
//*d_y---------------------------------------存储每一站的d_y
void traverse_survey::d_x_y(double N, double *distance, double *correct_every_position, double *d_x, double *d_y)
{for (int i = 0; i < N - 1; i++){d_x[i] = distance[i] * cos(correct_every_position[i] * (pi / 180));d_y[i] = distance[i] * sin(correct_every_position[i] * (pi / 180));cout << "第" << i + 1 << "个的" << "d_x和d_y的值为:" << d_x[i] << "  ||  " << d_y[i] << endl;}
}
//-------------------------导线的总长--------------------------//
//N-----------------站数
//*distance---------每一站的距离
//sum --------------导线的总长
void traverse_survey::sum_distance(int N,double *distance, double &sum)
{for (int i = 0; i < N - 1; i++){sum += distance[i];}cout << "导线的总长:" << sum << endl;
}//---------------------------求f_x-----------------------------//
//N---------------------站数
//*d_x------------------每一站的d_x
//A_x-------------------起始点的x坐标
//C_x-------------------终止点的x坐标
//f_x-----------------f_x的值
void traverse_survey::f_x(double N, double *d_x, double B_x, double C_x, double &f_x)
{double sum = 0;double temp = B_x - C_x;for (int i = 0; i < N - 1; i++){sum += d_x[i];}f_x = temp + sum;cout << "f_x的值为:" << f_x << endl;
}
//---------------------------求f_y-----------------------------//
//N---------------------站数
//*d_y------------------每一站的d_y
//A_y-------------------起始点的y坐标
//C_x-------------------终止点的y坐标
//f_y-----------------f_y的值
void traverse_survey::f_y(double N, double *d_y, double B_y,double C_y, double &f_y)
{double sum = 0;double temp = B_y - C_y;for (int i = 0; i < N - 1; i++){sum += d_y[i];}f_y = temp + sum;cout << "f_x的值为:" << f_y << endl;
}
//---------------------求全长闭合差和全长相对闭合差---------------------//
//f_x-------------------------导线f_x的值
//f_y-------------------------导线f_y的值
void traverse_survey::f_s(double sum,double f_x, double f_y)
{double f_s = sqrt(pow(f_x, 2)+pow(f_y, 2));cout << "全长闭合差f_s的值为:  " << f_s << endl;double K = 1 / (sum / f_s);cout << "全长相对闭合差K为:" << K << endl;cout << "1/K = " << int(1 / K) << "  说明:";if (int(1 / K) > 4000){cout << "该导线没有超限!" << endl;}else{cout << "该导线超限!" << endl;}
}
//-------------------------求改正之后的d_x_y----------------------//
//N----------------------------站数
//*d_x-------------------------每一站的d_x的值
// *d_y------------------------每一站的d_y的值
//*distance--------------------每一站的距离
//sum--------------------------导线的总长
//f_x--------------------------f_x的值
//f_y--------------------------f_y的值
void traverse_survey::Correct_d_x_y(int N, double *d_x, double *d_y, double *distance, double sum, double f_x, double f_y, double *correct_d_x, double *correct_d_y )
{double *temp_x = new double[N - 1]{ 0 };        //动态的创建一个数组double *temp_y = new double[N - 1]{ 0 };for (int i = 0; i < N - 1; i++){temp_x[i] = f_x * (distance[i] / sum);temp_y[i] = f_y * (distance[i] / sum);cout << "-----------------------------------------------------------------" << endl;cout << "第" << i + 1 << "个的" << "改正数—----—d_x和d_y的值为:" << temp_x[i] << "  ||  " << temp_y[i] << endl;correct_d_x[i] = d_x[i] - temp_x[i];correct_d_y[i] = d_y[i] - temp_y[i];cout << "第" << i + 1 << "个的" << "改正之后的——d_x和d_y的值为:" << correct_d_x[i] << "  ||  " << correct_d_y[i] << endl;}
}
//-------------------------------------求x,y--------------------------------//;
//N---------------------------站数
//A_x-------------------------起始的x坐标
//A_y-------------------------起始的y坐标
//*correct_d_x----------------改正后的d_x
//*correct_d_y----------------改正后的d_y
//*x--------------------------储存每一站x的坐标
//*y--------------------------储存每一站y的坐标
void traverse_survey::x_y(int N, double A_x, double A_y, double *correct_d_x, double *correct_d_y,  long double *x, long double *y)//求x,y;
{for (int i = 0; i < N - 1; i++){if (i == 0){x[0] = correct_d_x[0] + A_x;y[0] = correct_d_y[0] + A_y;}else{x[i] = x[i - 1] +correct_d_x[i];y[i] = y[i - 1] +correct_d_y[i];}printf("第%d站坐标%.4lf  ||   %.4lf\n", i + 1, x[i], y[i]);}
}
//求起始和末位的坐标方位角。
//A_x,A_y,B_x, B_y  起始边
//C_x,C_y,D_x, D_y  终止边
//start_position, 起始坐标方位角
//end_position)   终止坐标方位角
void traverse_survey::start_end_position(double A_x, double A_y, double B_x, double B_y, double &start_position)
{double start_x = B_x - A_x;double start_y = B_y - A_y;double temp = atan2(start_y, start_x)*(180/pi);if (start_y> 0){start_position = fabs(temp);}if (start_y < 0){start_position = 360 - fabs(temp);}transfrom_d_m_s(start_position);
}

C++/测绘附和导线测量源码相关推荐

  1. 基于YOLOv7的室内场景智能识别系统(源码&教程)

    1.项目背景: 近年来,随着移动互联网与定位技术的发展,基于位置服务越来越多地出现在人们的日常生活中.虽然智能手机都包含很多基于位置服务的应用,但是传统的基于位置服务常常将服务范围划分为室内与室外两种 ...

  2. (附源码)ssm小程序 实验室安全管理系统 毕业设计 031527

    基于SSM微信小程序的实验室安全管理系统 摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微 ...

  3. (附源码 )SSM+mysql+微信小程序网易云音乐设计与实现 毕业设计261620

    基于SSM微信小程序的网易云音乐 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序的 ...

  4. (附源码)springboot停车场车辆定位管理可视化分析系统的设计与实现 毕业设计101702

    Springboot停车场车辆定位管理可视化分析系统 摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于停车场车辆定位管理也是十分常见的.过去使用手工的管理方式,造成了管理 ...

  5. 20款前端特效动画及源码

    最近优化项目时看到一些实用的特效 感觉还不错 下面就分享给大家 代码量过长的我就不展示了 可以去在这里资源站源码部分预览下载 1.Loading加载动画 在canvas画布上,我们动态绘制许多多边形, ...

  6. spring boot小型仪器公司生产管理系统 毕业设计源码031853

    Springboot小型仪器公司生产管理系统 摘要 本论文主要论述了如何使用java语言开发一个Springboot小型仪器公司生产管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S ...

  7. ssm 公交车辆管理系统 计算机专业毕设源码16356

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代. ...

  8. 免费下载430套大型商业源码

    推荐免费下载430套大型商业源码 下载地址:http://www.hur.cn/tg/linkin.asp?linkid=102157 下载地址:[URL=http://www.hur.cn/tg/l ...

  9. 推荐免费下载430套大型商业源码 ERP源码 企业信息化管理咨询

    推荐免费下载430套大型商业源码 ERP源码 企业信息化管理咨询 下载地址:http://www.hur.cn/tg/linkin.asp?linkid=165337 PB-商业源码   金科信进销存 ...

  10. 又是一波冲击! | 自动驾驶再次被苏醒(提供部分源码)

    计算机视觉研究院专栏 作者:Edison_G 今天早上自动驾驶直播,有轰动了出租车领域,成熟的技术支撑该领域的进步,不就相比在一线大城市会陆续体现自动驾驶的优势,今天我们也是和大家来分享自动驾驶的乐趣 ...

最新文章

  1. SQL Cursor(游标)
  2. 终于当了回up主,来白嫖我历时半年总结的Java思维导图吧!!!
  3. String Split 和 Join
  4. 使用VS Code 开发.NET CORE 程序指南
  5. c语言int 转bool_C++代码实现逆波兰式_C 语言
  6. 高中python公开课怎么上好_如何上好高中英语公开课
  7. amd插帧技术如何开启_联想ThinkPad笔记本电脑如何开启CPU的虚拟化技术图文教程...
  8. lua 给userdata设置元表_UE4热更新:基于UnLua的Lua编程指南
  9. mysql mvcc gap lock_为什么说 MVCC 和 Gap Lock 解决了 MySQL 的幻读问题
  10. 如何增加人机数量及平衡_如何识别自己身体类型,针对三种不同身体类型的改变策略...
  11. Code First 约定
  12. 深度学习中的激活函数导引
  13. wordpress专属线报网主题模板
  14. xpath无法定位tbody
  15. 《Python与硬件项目案例》— 基于Python与指纹模块AS608的指纹识别签到考勤系统(上篇)(期末大作业、课程设计、毕业设计、结课项目)
  16. 无法导入某些项目,因为它们已经存在于Eclipse中的工作区错误中
  17. 每日一生信--blast2go本地化(终极版)
  18. Java实现身份证号合法性校验(包含港澳台地区)
  19. day9-字符串和集合作业
  20. python中怎么撤回_python如何查看微信消息撤回

热门文章

  1. 动易自定义标签HTML输出,动易标签【ArticleList】
  2. pp助手苹果版本_腾讯桌球安卓和苹果系统如何进28以及怎么解决没有金币时的烦恼...
  3. 德尔福和Mobileye强强联手,将展示双方共同开发的CSLP系统
  4. 无线路由器破解教程-CDlinux(by 星空武哥)
  5. su vary注册机_vray for sketchup2018下载
  6. 36.windbg-!peb(手工分析PEB结构)
  7. 【操作系统】为什么需要内核
  8. 强悍修改WIN7的文件夹背景(修改DLL)
  9. 知行之桥EDI系统中那些你忽略的功能
  10. 2022山东理工大学pta程序设计---实验四1---13题解