[测量程序设计]实验报告编写参考案例
测量程序设计
实验报告
(2012—2013学年第 2 学期)
实验名称: 《常用测量函数编写》实验
实验时间: 2013年3月15日
实验地点:
指导教师:专业班级: 测绘工程1005
姓 名: 刁田田
学 号: 1010020502
西安科技大学测绘学院测绘系(教研室)
二〇一一年二月
一、实验目的
通过本次试验,复习C 语言的基本语法和函数的编写技能,掌握测量常用函
数编写技巧及其需要注意的问题,通过编码调试进一步加深和理解测量常用计算函数的数学模型和使用过程,并能编制的函数正确、实用。
二、实验内容
1. 编写角度变弧度的函数
2. 编写弧度变角度的函数
3. 编写坐标正算函数
4. 设计并编制对话框程序,实现简单的坐标正算。
三、实验平台
实验在测绘学院实验中心GIS 实验室进行,使用GIS 实验室的计算机,Microsoft Visual C++ 6.0软件平台进行编程调试。
四、实验成果
1. 编写角度变弧度的函数
double CADlg::ang2hd(double ang)
{
double arc = ( du + fen/60. + miao/3600. )*TOPI; return -arc;
if(ang>0) { int du = int(ang); int fen = int( (ang-du)*100 ); double miao = ((ang - du)*100 - fen)*100; } return ( du + fen/60. + miao/3600. )*TOPI; if( ang
} return 0;
2. 编写弧度变角度的函数
void CADlg::hudu2dfm(const double hudu, int *du, int *fen, double *miao)
{
}
CString CADlg::hd2ang(double hd)
{
double arc = 0.0; if (hudu
} double miao; hudu2dfm( hd, &du, &fen, &miao); CString str; if (hd
3. 编写坐标正算函数
static double HDist(double x1,double y1,double x2,double y2) {
}
static double Azimuth(double x1,double y1,double x2,double y2) {
double dx = x2 - x1; double dy = y2 - y1; return sqrt( dx * dx + dy * dy ); double dx = x2 - x1; double dy = y2 - y1 + EPSILON; //
}
{ } return PI - Sign(dy)* PI/2. - atan(dx/dy); if( dy==0 && dx
static double Azimuth(double dx, double dy)
{
}
4. 设计并编制对话框程序,实现简单的坐标正算。
在对话框中放置4个编辑框,用于数据的输入和结果输出,由坐标正算按钮实现坐标正算,其代码如下
void CZhensuanDlg::OnButton1()
{
double xa, ya, xb, yb; sscanf( this->m_strXandY, "%lf %lf", &xa, &ya); if( fabs(xa)>1000000.0 || fabs(ya)>1000000.0 ) { AfxMessageBox("Athis->UpdateData(); if( dy==0) { } return PI - Sign(dy)* PI/2. - atan(dx/dy); if( dy==0 && dx
double alpha = ang2hd( atof(m_alpha) ); if( alphaTWO_PI) { AfxMessageBox("方位角输入有误");
return; }
if( m_dist
}
程序运行通过后,其界面及计算结果如下所示:
this->m_strBXandBY.Format( "%lf %lf", xb, yb); this->UpdateData(FALSE); xb = xa + dx; yb = ya + dy; double dx = m_dist * cos(alpha); double dy = m_dist * sin(alpha);