⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fansuan.cpp

📁 普通平差程序
💻 CPP
字号:
// fansuan.cpp : implementation file
//

#include "stdafx.h"
#include "celiang.h"
#include "fansuan.h"
#define PI 3.14159265357929
#include<math.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// fansuan dialog


fansuan::fansuan(CWnd* pParent /*=NULL*/)
	: CDialog(fansuan::IDD, pParent)
{
	//{{AFX_DATA_INIT(fansuan)
	m_af = 0.0;
	m_s = 0.0;
	m_x1 = 0.0;
	m_x2 = 0.0;
	m_y1 = 0.0;
	m_y2 = 0.0;
	//}}AFX_DATA_INIT
}


void fansuan::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(fansuan)
	DDX_Text(pDX, IDC_af_EDIT, m_af);
	DDX_Text(pDX, IDC_S_EDIT, m_s);
	DDX_Text(pDX, IDC_x1_EDIT, m_x1);
	DDX_Text(pDX, IDC_x2_EDIT, m_x2);
	DDX_Text(pDX, IDC_y1_EDIT, m_y1);
	DDX_Text(pDX, IDC_y2_EDIT, m_y2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(fansuan, CDialog)
	//{{AFX_MSG_MAP(fansuan)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// fansuan message handlers

void fansuan::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

void fansuan::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_af = 0.0;
	m_s = 0.0;
	m_x1 = 0.0;
	m_x2 = 0.0;
	m_y1 = 0.0;
	m_y2 = 0.0;
UpdateData(false);	
//	CDialog::OnCancel();
}
	double fansuan::dire(double x1,double y1,double x2,double y2)
{ //计算从点1到点2的方向(弧度制)

	double x,y;
	x=x2-x1;
	y=y2-y1;
	if(x!=0)
	{
		if(x>0 && y>=0)
		   return (atan(y/x));
	    if(x>0 && y<0)
		return (atan(y/x)+2*PI);
        if(x<0 && y<0)
			return (atan(y/x)+PI);
		if(x<0 && y>=0)
			return (atan(y/x)+PI);
	}
	if(x==0)
	{
		 if(y!=0) {if(y>0) return PI/2.0;
	        else return 3*PI/2.0;}
		 else {MessageBox("there must be a error in inputed data!");
		       return -10.0;}
	}
}
    double fansuan::disp360(double j)
	{  //用度制表示弧度
		double d;
		d=j*180/PI;
		return d;
	
	}
	double fansuan::fm_d(double x)
{
	double x4;
	double x3,x5;
	 double x1=floor(x*100.0);
    double x2=x*100-x1;
	 x3=x2/36.0;
	 x4=floor((x*100-x2)/100.0);
    x5=(x*100-x2)/100.0-x4;
    x5=x5*10/6.0;
	return(floor(x)+x3+x5);
}
	double fansuan::d_fm(double x)
{ //用度分秒表示dou
	double x4;
	double x3,x5;
	 double x1=floor(x);
    double x2=x-x1;
	 x3=floor(60.0*x2);//this is the fen value
	 x4=(x2*60.0-x3)*60.0;//this is the miao value
    x5=x4-60;if(x5<0) x5=-x5;
	 if(x5<0.00001){
	x4-=60.0;

	x3+=1;
	}
    x5=x3-60;if(x5<0) x5=-x5;
   
	 if(x5<0.00001){
	x3-=60;
	x1+=1;
	}
return x1+x3/100+x4/10000;
	//cout<<<x1<<"."<<x3<<"#"<<x4<<"#\n";
} 
	double fansuan::dist(double a,double b,double c,double d)
{
    double dist=(a-c)*(a-c)+(b-d)*(b-d);
	dist=sqrt(dist);
	return(dist);
}
	double fansuan::h_d(double x)
{
     double y=disp360(x);
   
ss:   if(y>=360.0) {
	   y-=360.0;
       goto ss;
   }
  return d_fm(y);
   //double y=disp360(x);
   //return d_fm(y);
}
	double fansuan::d_h(double x)
{
	double y=fm_d(x);
    return y*PI/180.0;
}

void fansuan::OnButton1() 
{
	// TODO: Add your control notification handler code here
 double x1,x2,y1,y2;x2;y2;
	UpdateData(true);
    x1=m_x1;
	y1=m_y1;
	x2=m_x2;
	y2=m_y2;
	  double angle=dire(x1,y1,x2,y2);if(angle==-10.0) goto ee;
    m_af=h_d(angle);
	if(fabs(m_af)<0.000000001) m_af=0.0;
	if(m_af*100000000-floor(m_af*100000000)>0.5) m_af=(floor(m_af*100000000)+1)/100000000.0;
	else m_af=floor(m_af*100000000)/100000000.0;
	m_s=dist(x1,y1,x2,y2);
	if(m_s*10000-floor(m_s*10000)>0.5) m_s=(floor(m_s*10000)+1)/10000.0;
	else m_s=floor(m_s*10000)/10000.0;
	if(fabs(m_s)<0.000000001) m_s=0.0;
ee:    UpdateData(false);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -