ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:333.62KB ,
资源ID:18710748      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18710748.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(测绘程序设计实验报告一二参考模板Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

测绘程序设计实验报告一二参考模板Word格式.docx

1、四、主要代码如下:#include void CMy006Dlg:OnBnClickedButton1() / TODO: 在此添加控件通知处理程序代码 /判断输入是否有误并计算 UpdateData(TRUE); if(a+bc&a+cb&b+ca) double t; t=(a+b+c)/2; s=sqrt(t*(t-a)*(t-b)*(t-c); else CMy006Dlg:OnBnClickedButton2();/输入的三边不能构成三角形时则清零 UpdateData(FALSE);OnBnClickedButton2() /清除功能 a=0; b=0; c=0; s=0;OnBn

2、ClickedButton3() exit(0);/退出功能五、运行结果如下:六、实验总结本次实验比较简单,主要是熟悉一下Virsual Studio 2008的MFC编程环境,了解编译MFC项目的整个流程。总的来说问题不大,只是有时候因为搞错顺序而导致程序无法运行,如先添加了代码才发现没有绑定变量尔后才绑定,或者变量属性搞错等等,都会是程序运行出错,还好有老师指点迷津。另外一点就是,在实现了上述内容以后,如何去优化、美化界面的问题,还有程序的完美性问题也是值得考虑的。因为是面向对象的程序,所以程序运行中可能会出现的问题都要考虑周全了,如题中,如果输入的三边不能构成一个三角形要如何等等。总的来

3、说实验比较成功,收获很大。实验二 控制结构程序设计(方位角计算、坐标转换、后方交会)1、编写一个方位角计算程序;2、设计同一参考椭球下的三维地心坐标(笛卡尔坐标系)与大地坐标系转换的程序;式中,B,L,H为椭球面上的大地维度,大地经度,大地高;X、Y、Z为空间直角坐标;N为卯酉圈曲率半径,e为椭球的偏心率,a为椭球的长半径,b为椭球的短半径。(WGS84椭球参数:长半径a-6378137m,扁率=1、298.257223563)3、编写一个后方交会计算程序:基本原理及计算公式:若将Pa,Pb,Pc看成权,则P点的坐标即为三个已知点的加权平均值1、方位角计算:A、窗体上应有四个静态框加文本框用于

4、输入已知点的坐标,还要一个静态框加文本框用于输出方位角,还要三个命令按钮用于计算、清除和退出;B、已知两点坐标,求所在线段的方位角,可以用正弦、余弦和正切公式,在这里我选择用正切公式;C、求出dx和dy之后,求可以求出角度,但是在不同的象限里的方位角有可能得到相同的正切值,所以要加以判断,用if 语句,然后就可以求出确切的方位角了。2、坐标转换:A、窗体上要有六个静态框加文本框用于输入或输出大地坐标或者空间坐标,还有三个命令按钮用于计算、清除和退出,可以加两个静态提示框;B、笛卡尔坐标转换成大地坐标,用到的是一个迭代公式,当精度达到要求时跳出循环,所以用do while循环,将H的初始值设为0

5、;大地坐标转化笛卡尔坐标比较简单,将公式写成代码就可以了;两个转换须注意度分秒和弧度的转换;3、后方交会:A、窗体上应有六个静态框加文本框用以输入已知点坐标,三个静态框加文本框用以输入测得的角度,两个静态框加文本框用以输出待定点坐标,三个按钮用于计算、清除和退出;B、已知三点坐标求待定点坐标,根据赫尔默特公式,要知道三角形三个内角,内角可以根据方位角来求,方位角可用正切公式求得。故分为三步,第一先求各边方位角,第二步根据方位角和内角的关系求三个内角,第三步根据内角和测量得到的,求权,接下来就可以根据公式求出待定点坐标了;要注意三个已知点是否位于危险圆上;须注意度分秒和弧度的转换;C、在文本框中

6、绑定相应的变量,在按钮中输入相应的代码,调试并运行。方位角计算界面:坐标转换界面:后方交会界面:#define PI 3.14159265358979323846void CMy007Dlg: double dx,dy,A; dx=x2-x1; dy=y2-y1; A=atan(dy/dx); if(dx0) if(dy fang=A; else if(dy fang=2*PI+A; else fang=0; else if(dx=1e-5) L=atan(y/x)*180/PI; else L=0; if(x L=L; else if(x0) /计算经度 L=L+180; else L=L-

7、180; if(fabs(x)=(1e-5)|(fabs(y)=(1e-5) B=atan(z/sqrt(x*x+y*y); H=0; do N=a/sqrt(1-e*e*sin(B)*sin(B); H0=sqrt(x*x+y*y)/cos(B)-N; B=atan(z/(sqrt(x*x+y*y)*(1-e*e*N/(N+H); /迭代运算得到H,B dH=H0-H; H=H0; while(fabs(dH)=(1e-5); /当H的精度达到.00001时跳出循环 B=0; N=a/sqrt(1-e*e*sin(B)*sin(B); H=sqrt(x*x+y*y)/cos(B)-N; B=

8、B*180/PI; B=B+(1e-10); L=L+(1e-10); D=int(B); D1=int(L); B2=(B-D)*60; /弧度转换成度分秒格式 L2=(L-D1)*60; M=int(B2); M1=int(L2); S=(B2-M)*60; S1=(L2-M1)*60; B=D+M/100+S/(1e4); L=D1+M1/100+S1/(1e4); double b,l,b1,l1; double S,S1; D= int(B); D1 = int(L); M = int(B - D) * 100); M1= int(L - D1) * 100); S = (B-D)

9、* 100 - M) * 100; S1 = (L-D1) * 100 - M1) * 100; b1= D+ M / 60 + S / 3600; /度分秒转化为弧度 l1= D1 + M/ 60 + S1 / 3600; b=(b1/180)*PI; l=(l1/180)*PI; N=a/sqrt(1-e*e*sin(b)*sin(b); x=(N+H)*cos(b)*cos(l); /大地测量坐标转化为笛卡尔坐标 y=(N+H)*cos(b)*sin(l); z=(N*(1-e*e)+H)*sin(b);OnBnClickedButton4() x=0; y=0; z=0; L=0; B

10、=0; H=0;后方交会:void CMy23Dlg: XA=0; YA=0; XB=0; YB=0; XC=0; YC=0; be=0; ga=0; XP=0; YP=0; /后方交会 int D, M; double dS; double a1,be1,ga1; double a2,be2,ga2; double aAB,aAC,aBC,aBA,aCA,aCB,A,B,C,PA,PB,PC; D = int(a); M = int(a-D)*100); dS = (a-D)*100-M)*100; a1 = D+M/60+dS/3600; a2=a1*PI/180; D = int(be)

11、; M= int(be - D)*100); dS = (be- D) * 100 -M) * 100; be1= D+M/ 60 + dS / 3600; be2=be1*PI/180; D = int(ga); M= int(ga - D) * 100); dS= (ga- D) * 100 - M) * 100; ga1=D+ M/ 60 + dS/ 3600; ga2=ga*PI/180; aAB=atan(YB-YA)/(XB-XA); aAC=atan(YC-YA)/(XC-XA); /计算各边方位角 aBC=atan(YC-YB)/(XC-XB); aBA=(aAB180?aAB

12、-180:aAB+180); aCA=(aACaAC-180:aAC+180); aCB=(aBCaBC-180:aBC+180); A=aAB-aAC; B=aBC-aBA; /计算各内角 C=aCA-aCB; if(a+be+C)190) /判断是否危险园,否则进行计算 PA=(tan(a2)*tan(A)/(tan(a2)-tan(A); PB=(tan(be2)*tan(B)/(tan(be2)-tan(B); PC=(tan(ga2)*tan(C)/(tan(ga2)-tan(C); XP=(PA*XA+PB*XB+PC*XC)/(PA+PB+PC); YP=(PA*YA+PB*YB

13、+PC*YC)/(PA+PB+PC); else MessageBox(_T(该点位于危险圆上);五、运行结果本次实验有三个小实验,现在做完了,也不觉得是很难的事。有了上一次实验的经验,MFC制作流程是很熟悉了。主要是计算按钮里的代码。写代码也不是难事,把公式写出来就是了,注意一下该注意的,比如不同象限里的方位角会有一样的正切值,度分秒与弧度的相互转换,危险圆等等,也不是很困难。难就难在将代码码进去调试。我算是比较粗心的一个人,总有一些小问题没有被发现,跌跌撞撞调试到现在才算完成。可能装的软件有些问题,0错误0警告的时候还是要运行第二遍才成功,第一遍可是直接停止工作了。实验中用得比较多的语句是if 语句,这次用了一次do while循环,对于我这种基础不甚牢靠的人来说,又是一个挑战。再请教了各路高手之后,我终于还是完成了,有种柳暗花明的感觉。 友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1