测绘程序实验报告Word文件下载.docx

上传人:b****4 文档编号:7080165 上传时间:2023-05-07 格式:DOCX 页数:76 大小:484.29KB
下载 相关 举报
测绘程序实验报告Word文件下载.docx_第1页
第1页 / 共76页
测绘程序实验报告Word文件下载.docx_第2页
第2页 / 共76页
测绘程序实验报告Word文件下载.docx_第3页
第3页 / 共76页
测绘程序实验报告Word文件下载.docx_第4页
第4页 / 共76页
测绘程序实验报告Word文件下载.docx_第5页
第5页 / 共76页
测绘程序实验报告Word文件下载.docx_第6页
第6页 / 共76页
测绘程序实验报告Word文件下载.docx_第7页
第7页 / 共76页
测绘程序实验报告Word文件下载.docx_第8页
第8页 / 共76页
测绘程序实验报告Word文件下载.docx_第9页
第9页 / 共76页
测绘程序实验报告Word文件下载.docx_第10页
第10页 / 共76页
测绘程序实验报告Word文件下载.docx_第11页
第11页 / 共76页
测绘程序实验报告Word文件下载.docx_第12页
第12页 / 共76页
测绘程序实验报告Word文件下载.docx_第13页
第13页 / 共76页
测绘程序实验报告Word文件下载.docx_第14页
第14页 / 共76页
测绘程序实验报告Word文件下载.docx_第15页
第15页 / 共76页
测绘程序实验报告Word文件下载.docx_第16页
第16页 / 共76页
测绘程序实验报告Word文件下载.docx_第17页
第17页 / 共76页
测绘程序实验报告Word文件下载.docx_第18页
第18页 / 共76页
测绘程序实验报告Word文件下载.docx_第19页
第19页 / 共76页
测绘程序实验报告Word文件下载.docx_第20页
第20页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

测绘程序实验报告Word文件下载.docx

《测绘程序实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《测绘程序实验报告Word文件下载.docx(76页珍藏版)》请在冰点文库上搜索。

测绘程序实验报告Word文件下载.docx

doubleQ;

afx_msgvoidOnBnClickedOk();

afx_msgvoidOnBnClickedCancel();

afx_msgvoidOnBnClickedButton1();

doubleA;

};

//0145110615ymh2.1Dlg.cpp:

实现文件

#include"

stdafx.h"

0145110615ymh2.1.h"

0145110615ymh2.1Dlg.h"

#include<

math.h>

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

voidCMy0145110615ymh21Dlg:

:

OnBnClickedOk()//计算

{

//TODO:

在此添加控件通知处理程序代码

UpdateData(TRUE);

if(x>

0)

{if(y>

{Q=1;

A=atan(y/x);

}//x大于y大于在第一象限

else{Q=4;

A=atan(y/x)+270;

}//x大于y小于在第四象限

}

elseif(y>

{Q=2;

A=atan(y/x)+90;

}//x大于y小于在第二象限

else{Q=3;

A=atan(y/x)+180;

}//x小于y小于在第三象限

UpdateData(FALSE);

//OnOK();

}

OnBnClickedCancel()//清除

//TODO:

UpdateData(true);

x=0;

y=0;

Q=0;

A=0;

UpdateData(false);

OnBnClickedButton1()//退出

OnCancel();

运行结果:

总结

第一次做这个实验的时候真的觉得挺难得可是当我经过更难的实验的洗礼之后在返回来看它真是顿时亲切了许多,其实当时是对这个软件不了解简单的东西把它想得很复杂绕来绕去都不知道该怎么实现一些很简单的东西了。

实验2.2.设计同一参考椭球下的三维地心坐标(笛卡儿坐标系)与大地坐标系转换的程

序。

(提示:

用do…while迭代,B、H初始为0进行迭代,直到H的精度达到0.00001

米)

注意:

东经0~180(Y>

0),西经:

0~-180(Y<

式中,B、L、H为椭球面上的大地纬度、大地经度、大地高;

X、Y、Z为空间直

角坐标;

N为卯酉圈曲率半径,e为椭球的偏心率,a为椭球的长半径,b为椭球

的短半径。

(WGS84椭球参数:

长半径a=6378137m,扁率α=1/298.257223563)

在按钮下面设置主程序,按照指导书给的思路编辑公式

//0145110615ymh2.2Dlg.h:

doubleB;

doubleL;

doubleH;

doubleX;

doubleY;

doubleZ;

//0145110615ymh2.2Dlg.cpp:

0145110615ymh2.2.h"

0145110615ymh2.2Dlg.h"

voidCMy0145110615ymh22Dlg:

OnBnClickedOk()//大地坐标转换为空间直角坐标

doubler=1/298.257223563;

doublee=sqrt((2*r)-(r*r));

inta=6378137;

doubleW=sqrt(1-e*e*sin(B)*sin(B));

doubleN=a/W;

X=(N+H)*cos(B)*cos(L);

Y=(N+H)*cos(B)*cos(L);

Z=(N*(1-e*e)+H)*sin(B);

UpdateData(false);

//OnOK();

实验2.3.编写一个后方交会计算程序。

3.1基本原理及计算公式

若将Pa、Pb、Pc看成权,则P点的坐标即为三个已知点的加权平均值

3.2计算程序设计步骤

(1)设计界面,用于输入3个已知点的坐标和三个观测角、和,以及用

于输出待定点坐标的文本框(12个)、静态标签框和Button按钮;

(2)定义文本框控件变量(Value);

(3)根据已知点计算三个内角A、B、C;

(4)计算Tan(α)、Tan(β)、Tan(γ)、Tan(A)、Tan(B)、Tan(C);

(5)计算Pa、Pb、Pc;

(6)计算待定点坐标Xp、Yp。

界面要求:

三个坐标输入框,两个角度输入框

一个坐标结果输出框

一个计算按钮,一个清除按钮,一个退出按钮。

2.由三角形三个边长求内角函数

计算公式:

设计思路:

通过示例编辑框添加变量,在按钮下面添加程序。

先将α、β、的度分秒之转换成度利用三角形内角和等于180算出γ并将γ转换成弧度。

接着计算三角形的内角,判断P点是否在危险圆上若不在则计算P点坐标若在则弹出“该点在危险圆上”。

afx_msgvoidOnEnChangeEdit5();

doubleXA;

doubleYA;

doubleXB;

doubleYB;

doubleXC;

doubleYC;

doublealfa;

doublebet;

doubleXp;

doubleYp;

dss2-3.h"

dss2-3Dlg.h"

constdoublePI=3.1415926535897932;

voidCdss23Dlg:

OnBnClickedButton1()

doubleafAB,afAC,afBC,afBA,afCA,afCB,A,B,C,Pa,Pb,Pc;

intD1,M1,D2,M2;

doubleS1,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=((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=afBC-afBA;

C=afCA-afCB;

//判断点是否在危险圆上若不在则计算P点坐标

if(alfa+bet+C<

170||alfa+bet+C>

190)

{

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("

该点位于危险圆上"

));

//OnCancel();

OnBnClickedOk()

XA=0;

YA=0;

XB=0;

YB=0;

XC=0;

YC=0;

alfa=0;

bet=0;

Xp=0;

Yp=0;

};

本次实验刚开始还是遇到了很多问题的比如说根本不就不知道该如何用程序来实现后方交会这个过程,后来经过问同学、上网查资料等大概弄懂了实现步骤可是写完程序后我发现他根本计算不了点计算按按钮一点反应都没有。

又开始找问题才发现是UpdateData(FALSE)和UpdateData(TRUE)忘写了,还发现程序中没有进行度分秒到度的转换,就顺便把这个实现也加进去了。

这个程序也就算完成了。

实验三数组、指针与函数

一、实验目的

掌握数组的定义、引用及应用方法。

掌握指针与动态数组。

掌握函数的定义、引用及应用方法。

二、实验内容

1.编写一个求任意多边形面积的程序。

通过界面输入数据,并把数据保存

在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。

求计算部分写成函数的形式,使计算程序与界面无关。

动态数组

创建动态数组

结构体的定义

多边形面积计算原理及算法

计算原理:

面积计算的算法:

显示框用Cedit控件变量

对每个输入的坐标用CStringstr临时变量格式化,然后用CEdit的控件变量插入

将实现写在按钮在下面。

添加顶点下面实现创建动态数组,确认按钮实现返回数组大小值并将添加的数据显示到显示框中去,通过计算按钮实现多边形面积的计算,清除按钮实现清除输入的数据,退出按钮退出程序。

//实现

doubleresult;

CEditedit;

afx_msgvoidOnBnClickedButton4();

afx_msgvoidOnBnClickedButton3();

afx_msgvoidOnBnClickedButton2();

afx_msgvoidOnBnClickedButton5();

intn;

double*px;

double*py;

CEditm_strdis;

0145110615(3).h"

0145110615(3)Dlg.h"

//用于应用程序“关于”菜单项的CAboutDlg对话框

doublecalarea(doublex[],doubley[],intn)

doubles=0;

inti;

for(i=0;

i<

n;

i++)

s+=0.5*(x[i]+x[i+1])*(y[i+1]-y[i]);

returns;

voidCMy01451105173Dlg:

OnBnClickedButton4()

result=calarea(px,py,n);

OnBnClickedButton3()

UpdateData(TRUE);

px=newdouble[n];

py=newdouble[n];

OnBnClickedButton2()

delete[]px;

delete[]py;

px=NULL;

py=NULL;

n=0;

result=0;

m_strdis.SetWindowTextW(_T("

"

intt=0;

CStringstr;

t+=1;

if(t>

n)

Warning!

};

str.Format(_T("

No.%d%lf%lf\r\n"

),t,x,y);

m_strdis.ReplaceSel(str);

px[t-1]=x;

py[t-1]=y;

OnBnClickedButton5()

exit(0);

总结:

这个实验相比前面几个实验感觉难了好多。

首先是不知道怎么实现动态数组也不知道怎样将输入的内容显示到示例编辑框里。

总之在眼前的都是一堆问题,但面临的问题总得解决所以就只能看书、上网查资料、问同学等各种方法来解决问题,最终把问题解决。

实验四类的创建

1.掌握面向对象编程基本思想

2.掌握VC++.net中创建类

3.掌握建立和使用对象

4.掌握运算符号重载

5.理解类的继承和多态性

1.设计一个角度类。

要求该类具有度分秒至度的换算、度至度分秒的换算、度与

弧度的换算等功能。

设置一个角度大小属性,并设定该属性为缺省属性;

另设一个状态属性,表示当前设置的角度大小的形式;

度分秒、度、弧度间的相

互转换的方法;

定义运算符号(加、减)方法,使得角度类能够像一种普通的数

据类型样的方便使用。

设计一个角度类在类的头文件里申明度到度分秒的转换、度分秒到度的转换、度到弧度的转换、运算符的重载,在类的.cpp文件中写出具体的函数实现,在按钮下面调用类的各个函数来实现角度的转换。

doubledmstodgree(doubledmg);

//声明度分秒到度的转换函数

doubledgreetodms(doubledrgree);

//声明度到度分秒的转换函数

doubledgreetohd(doubledgree);

//声明度到弧度的转换函数

doubledgree;

doubledms;

doublehd;

voidCymh4Dlg:

OnBnClickedCancel()

voidCymh4Dlg:

Anglesf;

sf.dgreetodms(dgree);

sf.dmstodgree(dms);

sf.dgreetohd(dgree);

dgree=0;

dms=0;

hd=0;

运行结果:

这个实验调试最终没有通过所以没有结果

这个实验给我的最大的感受是细节决定成败,实践总会比想象的困难,虽然我非常清除实验原理可是但我按照我的思路去写的时候各种调试改还是有错,我不清楚为什么

Anglesf;

这样的语句在程序七中调试能通过而这个程序中却死活不行。

实验五文件

掌握文件对话框的使用方法。

掌握C++文件操作的一般步骤及实现方法。

了解MFC文件操作的特点及使用方法。

1.编制简单的Cass数据文件进行数据整理的程序。

整理后的数据文件中要求无

重复点数据,且数据按点号大小的升序进行排序。

要求整理后的数据按与原始数

据文件同样的格式保存为另外一个文件

示例数据“民用园燃气.dat”文件数据格式:

总点数

点号,编码,X,Y,H

例如:

要求:

a.用SaveFileDialog和OpenFileDialog控件获取文件打开或保存的文件

名。

b.自定义一个测量点数据结构体,其元素包括:

c.用文本框显示原始数据

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2