?? fansuan.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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -