网站大量收购独家精品文档,联系QQ:2885784924

C++高斯正反算.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C高斯正反算

测绘程序设计基础实验七 实验报告 班 级:测绘0903班 姓 名: 学 号: 指导老师: 实验 7 常用测量程序设计 实验目的 1、巩固类的创建与使用 2、掌握数组参数的传递 3、掌握常用测绘程序设计的技巧 二、实验内容 要清楚计算步骤和公式,还有各个参数计算的前后顺序。编写高斯正反算公式。 界面设计 实验步骤 combox。 我为了实现椭球参数的选择使用了combox控件。 添加每行的显示信息 添加combox函数,定义一个全局变量type获得选择的参数 添加一个C++类,编写关于高斯正反算的各个函数 在头文件中定义 在CPP中写函数 定义参数 角度转换 改变参数 调用函数 实验结果 正算: 反算: #include stdafx.h #include Gauss.h #include math.h const double PI=3.1415926535897932384626433832795; double a=6378245; double b=6356863.0187730473; double e2=sqr(a*a-b*b)/a; double e2=sqr(a*a-b*b)/b; double dms2deg(double dms)//度分秒转换度 { double deg; int idegree imin; double dsec; idegree=int(dms); imin=int((dms-idegree)*100); dsec=((dms-idegree)*100-imin)*100; deg=ideree+double(imin/60)+double(dsec/3600); return deg; } double deg2dms(double deg)//度转换度分秒 { double dms; int idegree imin; double dsec; double dtmp; idegree=int(dms); dtmp=(deg=idegree)*60; immin=int(dtmp); dsec=(dtmp-imin)*60; return dms; } //椭球参数 void ellipd(int type) { if (type==0) { a=6378245; b=6356863.0187730473; e2=0.006693421622965949; e2=0.00673852541468397; }; if (type==1) { a=6378140; b=6356755.2881575287; e2=0.006694384999587952; e2=0.006739501819472927; }; } //正算 double ComptX(double B) { double a0=1+3/4*e2+45/64*pow(e2,2)+350/512*pow(e2,3)+11025/16384*pow(e2,4); double a2=-1/2*(3/4*e2+60/64*pow(e2,2)+525/512*pow(e2,3)+17640/16384*pow(e2,4)); double a4=1/4*(15/64*pow(e2,2)+210/512*pow(e2,3)+8820/16384*pow(e2,4)); double a6=-1/6*(35/512*pow(e2,3)+2520/16384*pow(e2,4)); double a8=1/8*(315/16384*pow(e2,4)); double X=a*(1-e2)*(a0*B+a2*sin(2*B)+a4*sin(4*B)+a6*sin(6*B)+a8*sin(8*B)); return X; } double ComptForward(double B,double L,double cmd,int type,double x,double y) { L=dms2deg(L); cmd=dms2deg(cmd); double l=(L-cmd)*3600/206265; double b=dms2deg(B)*PI/180; ellipd(type) double N=a/sqr(1-e2*sin(b)*s

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档