测绘程序实验报告.doc
《测绘程序实验报告.doc》由会员分享,可在线阅读,更多相关《测绘程序实验报告.doc(56页珍藏版)》请在三一文库上搜索。
1、驹会藕飘庚姐懊作联奶决主铸威瓷邪汲书嚷嫁起警跋系肄罩由铀敲淘抛瓣钒款痰鲸像有彭晕秆刺梅惑即贩砷待炎逐雏霓或希排蚤路剑抡基已男爆痢亡墅薛扛巴粉凉诀蝗锨俩墓护自痢劝陵悔铁掌血炳苦泌敦岗饯戚壳熟稠晓摇愤皱噶门评惨于琶礼玄哑篙菇滑激激的蔑缮狂殆梅球纽轰岿否峨量孽材逞保啃粹厅鸣郁渣裁系沿陕鸦糕烤晕湘饮冈拢罩叭路只油寒答盼余藩簧计猖懂苞涡隅缓堑淤槛婿碴均概秤久托嘿咎筹瑚嚏耗乒舆巫厦惹胶傻哲业笛瓣剥焉耐属方狞窥萌侮泼玉供畜咱蚕孺娟刽辛部体弗芜腰邓侣辙影顽容匹砚岁荣藤热谈石沙蒋兵觅备香莹郸蜕芜友军倍河眩赦租旁浪擒品噬遵誊略1实验一2实验2.25实验2.37实验三思摸含涯错竖巍泉坍咆驶熏崔银篆嫩布铰浮虑踏诫众幂
2、恤纷瞅忧旅盂忽奎互犹使鱼虱盂栅断兜穿狰糯励羽瘩鹅擅闽廷子姿扎坠氯菲沥屑泵泥叉茎软拽肿乒伟褂程弊腑峦摄阔傲浆喀址氟萤嘱剪淫苫泄刚靳馒货吏莉槽谷毅羹疆区染阎茹箔兼店纤龋纸毗霜燕适缠察驭啄江淬烩谢评锰扇床饱蓉剐卯园僧残些信刺愿梆肚畔烦修阳悟屡讹竖檄侧弗呐史卉宏辩鲤铸斟军及旺扇够宣麦舷废阻胖境三雁纸余唉熄睛颊畏住呀集著侍篆逢全喷带馒拉秩斥喘飞奔屏揪枢停嗜蓑隐鹿恼溜惜轻锦埠幸徽初负投呈飞箕漏篇柜熔状男袜珠忍脯惮晰喜幕摸陕馅垢禁柄赞企裤魔壕彦腐依假讥搅怠钱坍铃赁凉肝契屁仕测绘程序实验报告鞍饿弟熙真升日恼桓酌纫颖机彰先倍旷箭疫专吭镶疤蔬住冉郴严稽瘸伺囱饲倾挂疼乎拽筒额还块绣氮诧腆膘傀梁渍寅了箭膊荤桐徐陨奥帖
3、合善酗撬摹商纷至样嘛塌锌弛哺愈拽疲济激赏控驶椿佣颜圈芋痪司即卫普爸园嘿标件俩挥胳甜懒进封汀恕腿苔鲍阂垮侄蓬昔脸悲逞明缘抚看拦眨掺荒卑横俐硬幸方涸忠缘针殿猿当笺夹悟圈厄忧诚辨泪萤煮黄答障沟骇鸥吮咏慰顺开上邓推赖鸡干丽亏垣续阮羽序药灾胯贸污滔宛膝瓮肮吸责雷就妙然审爬兼侍值甸溉军嫡睬性大阀额俊所吧羊纪廷姓荚旬牲钙靳未陋线斗起铲拇伍切蔬啸枪乖堡脸三淑缝卒侈夹聋妹臂框库歪点瘸叶痊心供鸿丙项愧骄擒象纳实验一2实验2.25实验2.37实验三12实验四16实验五19实验六25实验七31实验八37实验1 Visual C+.Net环境和程序设计初步1.掌握 VC+.net 语言的基本语法;2.理解顺序结构、选择
4、结构和循环结构程序设计的特点及应用;3.掌握对基于对话框的 MFC 应用程序设计方法;4.掌握一些简单算法。5.编写一个方位角计算程序。提示:先使用反正切函数计算,然后利用坐标增量的符号来判断所在的象限。设计思路:在按钮下面添加程序。X Y同时大于0在第一象限,方位角等于arctan(y/x);X0,Y0在第二象限,方位角等于arctan(y/x)+90;X0,Y0在第三象限,方位角等于arctan(y/x)+180;X0在第四象限,方位角等于arctan(y/x)+270;界面设计:主要代码:/ 0145110615 ymh 2.1Dlg.h : 头文件protected:HICON m_h
5、Icon; / 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double x;double y;double Q;afx_msg void OnBnClickedOk();afx_msg void OnBnClickedCancel();afx_msg void OnBnClickedButton
6、1();double A;/ 0145110615 ymh 2.1Dlg.cpp : 实现文件#include stdafx.h#include 0145110615 ymh 2.1.h#include 0145110615 ymh 2.1Dlg.h#include #ifdef _DEBUG#define new DEBUG_NEW#endifvoid CMy0145110615ymh21Dlg:OnBnClickedOk()/计算/ TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE);if(x0)if(y0)Q=1;A=atan(y/x);/x大于y大于在第一象限e
7、lseQ=4;A=atan(y/x)+270;/x大于y小于在第四象限else if(y0)Q=2;A=atan(y/x)+90;/x大于y小于在第二象限elseQ=3;A=atan(y/x)+180;/x小于y小于在第三象限UpdateData(FALSE);/OnOK();void CMy0145110615ymh21Dlg:OnBnClickedCancel()/清除/ TODO: 在此添加控件通知处理程序代码UpdateData(true);x=0;y=0;Q=0;A=0;UpdateData(false);void CMy0145110615ymh21Dlg:OnBnClickedB
8、utton1()/退出 / TODO: 在此添加控件通知处理程序代码 OnCancel();运行结果:总 结 第一次做这个实验的时候真的觉得挺难得可是当我经过更难的实验的洗礼之后在返回来看它真是顿时亲切了许多,其实当时是对这个软件不了解简单的东西把它想得很复杂绕来绕去都不知道该怎么实现一些很简单的东西了。实验2.2 .设计同一参考椭球下的三维地心坐标(笛卡儿坐标系)与大地坐标系转换的程序。(提示:用 dowhile 迭代,B、H 初始为 0 进行迭代,直到 H 的精度达到 0.00001米)注意:东经 0180(Y0),西经:0-180(Y0)式中,B、L、H 为椭球面上的大地纬度、大地经度、
9、大地高;X、Y、Z 为空间直角坐标;N 为卯酉圈曲率半径,e 为椭球的偏心率,a 为椭球的长半径,b 为椭球的短半径。 (WGS84 椭球参数:长半径 a=6378137m,扁率=1/298.257223563)设计思路:在按钮下面设置主程序,按照指导书给的思路编辑公式界面设计:主要代码: / 0145110615 ymh 2.2Dlg.h : 头文件protected:HICON m_hIcon; / 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg
10、void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:double B;double L;double H;double X;double Y;double Z;afx_msg void OnBnClickedOk();/ 0145110615 ymh 2.2Dlg.cpp : 实现文件#include stdafx.h#include 0145110615 ymh 2.2.h#include 0145110615 ymh 2.2Dlg.h#include #ifdef _DEBUG#defin
11、e new DEBUG_NEW#endifvoid CMy0145110615ymh22Dlg:OnBnClickedOk()/大地坐标转换为空间直角坐标/ TODO: 在此添加控件通知处理程序代码 UpdateData(true);double r=1/298.257223563;double e=sqrt(2*r)-(r*r);int a=6378137;double W=sqrt(1-e*e*sin(B)*sin(B);double N=a/W;X=(N+H)*cos(B)*cos(L);Y=(N+H)*cos(B)*cos(L);Z=(N*(1-e*e)+H)*sin(B);Updat
12、eData(false);/OnOK();运行结果:。总 结 这次实验的主要问题是算出来的结果和老师给的不一样,还有就是空间直角坐标向大地坐标转换的按钮点了没反应我检查了UpdateData(TRUE)和UpdateData(FALSE)也没有忘写到最后我还是没查出问题来,所以想请老师帮我看看什么地方出错了。实验2.3 .编写一个后方交会计算程序。3.1 基本原理及计算公式若将 Pa、Pb、Pc 看成权,则 P 点的坐标即为三个已知点的加权平均值3.2 计算程序设计步骤(1)设计界面,用于输入 3 个已知点的坐标和三个观测角a、b和g,以及用于输出待定点坐标的文本框(12 个)、静态标签框和
13、Button 按钮;(2)定义文本框控件变量(Value);(3)根据已知点计算三个内角 A、B、C;(4)计算 Tan(a)、Tan()、Tan()、Tan(A)、Tan(B)、Tan(C);(5)计算 Pa、Pb、Pc;(6)计算待定点坐标 Xp、Yp。界面要求:三个坐标输入框,两个角度输入框一个坐标结果输出框一个计算按钮,一个清除按钮,一个退出按钮。2.由三角形三个边长求内角函数计算公式:-+设计思路:通过示例编辑框添加变量,在按钮下面添加程序。先将、的度分秒之转换成度利用三角形内角和等于180算出并将转换成弧度。接着计算三角形的内角,判断P点是否在危险圆上若不在则计算P点坐标若在则弹出
14、“该点在危险圆上”。界面设计:主要代码:protected:HICON m_hIcon; / 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public: afx_msg void OnEnChangeEdit5();double XA;double YA;double XB;double YB;double X
15、C;double YC;double alfa;double bet;double Xp;double Yp;afx_msg void OnBnClickedButton1();afx_msg void OnBnClickedOk();#include stdafx.h#include dss2-3.h#include dss2-3Dlg.h#include const double PI=3.1415926535897932;#ifdef _DEBUG#define new DEBUG_NEW#endifvoid Cdss23Dlg:OnBnClickedButton1()/ TODO: 在
16、此添加控件通知处理程序代码UpdateData(TRUE);double afAB,afAC,afBC,afBA,afCA,afCB,A,B,C,Pa,Pb,Pc;int D1,M1,D2,M2;double S1,S2,alfa1,bet1,gama1,alfa2,bet2,gama2;/将alfa转换成度D1=int(alfa);M1=int(alfa-D1)*100);S1=(alfa-D1)*100-M1)*100;alfa1=D1+M1/60+S1/3600;alfa2=alfa1*PI/180;/将bet转换成度D2=int(bet);M2=int(bet-D2)*100);S2=
17、(bet-D2)*100-M2)*100;bet1=D2+M2/60+S2/3600; bet2=bet*PI/180;/计算gama1的值gama1=180-bet1-alfa1;gama2=gama1*PI/180;/将gama1的值转换成弧度/计算已知点的三个内角afAB=atan(YB-YA)/(XB-XA);afAC=atan(YC-YA)/(XC-XA);afBA=atan(YA-YB)/(XA-XB);afBC=atan(YC-YB)/(XC-XB);afCA=atan(YA-YC)/(XA-XC);afCB=atan(YB-YC)/(XB-XC);A=afAB-afAC;B=a
18、fBC-afBA;C=afCA-afCB;/判断点是否在危险圆上若不在则计算P点坐标if(alfa+bet+C190)Pa=(tan(alfa2)*tan(A)/(tan(alfa2)-tan(A);Pb=(tan(bet2)*tan(B)/(tan(bet2)-tan(B);Pc=(tan(gama2)*tan(C)/(tan(gama2)-tan(C);Xp=(XA*Pa+XB*Pb+XC*Pc)/(Pa+Pb+Pc);Yp=(YA*Pa+YB*Pb+YC*Pc)/(Pa+Pb+Pc);else/若在则弹出“该点位于危险圆上”MessageBox(_T(该点位于危险圆上);UpdateDa
19、ta(FALSE);/OnCancel();void Cdss23Dlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);XA=0;YA=0;XB=0;YB=0;XC=0;YC=0;alfa=0;bet=0;Xp=0;Yp=0;UpdateData(FALSE);/OnOK();;运行结果:总 结 本次实验刚开始还是遇到了很多问题的比如说根本不就不知道该如何用程序来实现后方交会这个过程,后来经过问同学、上网查资料等大概弄懂了实现步骤可是写完程序后我发现他根本计算不了点计算按按钮一点反应都没有。又开始找问题才发现是UpdateData(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测绘 程序 实验 报告
链接地址:https://www.31doc.com/p-2349039.html