📄 dialog3.cpp
字号:
// DIALOG3.cpp : implementation file
//
#include "stdafx.h"
#include "Projection.h"
#include "DIALOG3.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define p0 57.29577951308232
/////////////////////////////////////////////////////////////////////////////
// CDIALOG3 dialog
CDIALOG3::CDIALOG3(CWnd* pParent /*=NULL*/)
: CDialog(CDIALOG3::IDD, pParent)
{
//{{AFX_DATA_INIT(CDIALOG3)
m_B1d = 0.0;
m_B1m = 0.0;
m_B1s = 0.0;
m_B2d = 0.0;
m_L0d = 0.0;
m_L0m = 0.0;
m_L0s = 0.0;
m_L1d = 0.0;
m_L1m = 0.0;
m_L1s = 0.0;
m_L2d = 0.0;
m_L2m = 0.0;
m_L2s = 0.0;
m_X1 = 0.0;
m_X2 = 0.0;
m_Y1 = 0.0;
m_Y2 = 0.0;
m_Type = -1;
m_B2s = 0.0;
m_B2m = 0.0;
m_Coordinate = -1;
m_fh1 = 0.0;
m_fh2 = 0.0;
m_zH1 = 0.0;
m_zh2 = 0.0;
//}}AFX_DATA_INIT
}
void CDIALOG3::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDIALOG3)
DDX_Control(pDX, IDC_EDIT_zh2, m_zh2_C);
DDX_Control(pDX, IDC_EDIT_zH1, m_zH1_C);
DDX_Control(pDX, IDC_EDIT_fh2, m_fh2_C);
DDX_Control(pDX, IDC_EDIT_fh1, m_fh1_C);
DDX_Control(pDX, IDC_EDIT_B2m, m_B2m_C);
DDX_Control(pDX, IDC_EDIT_Y2, m_Y2_C);
DDX_Control(pDX, IDC_EDIT_Y1, m_Y1_C);
DDX_Control(pDX, IDC_EDIT_X2, m_X2_C);
DDX_Control(pDX, IDC_EDIT_X1, m_X1_C);
DDX_Control(pDX, IDC_EDIT_L2s, m_L2s_C);
DDX_Control(pDX, IDC_EDIT_L2m, m_L2m_C);
DDX_Control(pDX, IDC_EDIT_L2d, m_L2d_C);
DDX_Control(pDX, IDC_EDIT_L1s, m_L1s_C);
DDX_Control(pDX, IDC_EDIT_L1m, m_L1m_C);
DDX_Control(pDX, IDC_EDIT_L1d, m_L1d_C);
DDX_Control(pDX, IDC_EDIT_B2s, m_B2s_C);
DDX_Control(pDX, IDC_EDIT_B2d, m_B2d_C);
DDX_Control(pDX, IDC_EDIT_B1s, m_B1s_C);
DDX_Control(pDX, IDC_EDIT_B1m, m_B1m_C);
DDX_Control(pDX, IDC_EDIT_B1d, m_B1d_C);
DDX_Text(pDX, IDC_EDIT_B1d, m_B1d);
DDX_Text(pDX, IDC_EDIT_B1m, m_B1m);
DDX_Text(pDX, IDC_EDIT_B1s, m_B1s);
DDX_Text(pDX, IDC_EDIT_B2d, m_B2d);
DDX_Text(pDX, IDC_EDIT_L0d, m_L0d);
DDX_Text(pDX, IDC_EDIT_L0m, m_L0m);
DDX_Text(pDX, IDC_EDIT_L0s, m_L0s);
DDX_Text(pDX, IDC_EDIT_L1d, m_L1d);
DDX_Text(pDX, IDC_EDIT_L1m, m_L1m);
DDX_Text(pDX, IDC_EDIT_L1s, m_L1s);
DDX_Text(pDX, IDC_EDIT_L2d, m_L2d);
DDX_Text(pDX, IDC_EDIT_L2m, m_L2m);
DDX_Text(pDX, IDC_EDIT_L2s, m_L2s);
DDX_Text(pDX, IDC_EDIT_X1, m_X1);
DDX_Text(pDX, IDC_EDIT_X2, m_X2);
DDX_Text(pDX, IDC_EDIT_Y1, m_Y1);
DDX_Text(pDX, IDC_EDIT_Y2, m_Y2);
DDX_Radio(pDX, IDC_RADIO4, m_Type);
DDX_Text(pDX, IDC_EDIT_B2s, m_B2s);
DDX_Text(pDX, IDC_EDIT_B2m, m_B2m);
DDX_Radio(pDX, IDC_RADIO1, m_Coordinate);
DDX_Text(pDX, IDC_EDIT_fh1, m_fh1);
DDX_Text(pDX, IDC_EDIT_fh2, m_fh2);
DDX_Text(pDX, IDC_EDIT_zH1, m_zH1);
DDX_Text(pDX, IDC_EDIT_zh2, m_zh2);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDIALOG3, CDialog)
//{{AFX_MSG_MAP(CDIALOG3)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
ON_BN_CLICKED(IDC_RADIO5, OnRadio5)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDIALOG3 message handlers
void CDIALOG3::OnButton1() //正算
{
// TODO: Add your control notification handler code here
UpdateData();
//高斯正算公式
double pi=3.1415926/180;
double t,N,v,l0,k,B1,L1,L0,X;
B1=m_B1d+m_B1m/60+m_B1s/3600;
L1=m_L1d+m_L1m/60+m_L1s/3600;
L0=m_L0d+m_L0m/60+m_L0s/3600;
a0=a*(1-E)*(1+3/4.0*E+45/64.0*pow(E,2)+350/512.0*pow(E,3)+11025/16384.0*pow(E,4));
a2=-1/2.0*a*(1-E)*(3/4.0*E+60/64.0*pow(E,2)+525/512.0*pow(E,3)+17640/16384.0*pow(E,4));
a4=1/4.0*a*(1-E)*(15/64.0*pow(E,2)+210/512.0*pow(E,3)+8820/16384.0*pow(E,4));
a6=-1*1/6.0*a*(1-E)*(35/512.0*pow(E,3)+2520/16384.0*pow(E,4));
a8=1/8.0*a*(1-E)*(315/16384.0*pow(E,4));
B1=B1*pi;
t=tan( B1);
k=E1*cos( B1)*cos( B1);
v=1+k;
N=c/sqrt(v);
l0=L1-L0;
p=cos( B1)*l0/p0;
X=a0*B1+a2*sin(2*B1)+a4*sin(4*B1)+a6*sin(6*B1)+a8*sin(8*B1);
m_X1=X+N*t*(1+((5-t*t+(9+4*k)*k)+((61+(t*t-58)*t*t+(9-11*t*t)*30*k)+(1385+(-3111+(543-t*t)*t*t)*t*t)*p*p/56)*p*p/30)*p*p/12)*p*p/2;
m_Y1=500000+N*(1+((1-t*t+k)+((5+t*t*(t*t-18-58*k)+14*k)+(61+(-479+(179-t*t)*t*t)*t*t)*p*p/42)*p*p/20)*p*p/6)*p;
m_zh2=m_zH1;
UpdateData(false);
}
void CDIALOG3::OnButton2() //反算
{
// TODO: Add your control notification handler code here
double tf,Nf,vf,Y,q,Bf,k,B0,l0,B,L,L0;
double pi=3.1415926/180;
UpdateData();
q0=1.0/a0;
q2=1.0/2*(3.0/4*pow(E,1)+45.0/64*pow(E,2)+350.0/512*pow(E,3)+11025.0/16384*pow(E,4));
q4=-1.0/3*(63.0/64*pow(E,2)+1108.0/512*pow(E,3)+58239.0/16384*pow(E,4));
q6=1.0/3*(604.0/512*pow(E,3)+68484.0/16384*pow(E,4));
q8=-1.0/3*(26328.0/16384*pow(E,4));
L0=m_L0d+m_L0m/60+m_L0s/3600;
B0=m_X2*q0;
Bf=B0+sin(2*B0)*(q2+sin(B0)*sin(B0)*(q4+sin(B0)*sin(B0)*(q6+q8*sin(B0)*sin(B0))));
Y=m_Y2-500000;
tf=tan(Bf);
k=E1*cos(Bf)*cos(Bf);
vf=1+k;
Nf=c/sqrt(vf);
q=Y/Nf;
B=Bf/pi+p0*tf*(-vf+((5+3*tf*tf*(1+(-2-3*k)*k)+3*k*(2-k))+(-(61+45*tf*tf*(2+tf*tf)+(107+(-162-45*tf*tf)*tf*tf)*k)+(1385+(3633+(4095+1575*tf*tf)*tf*tf)*tf*tf)*q*q/56)*q*q/30)*q*q/12)*q*q/2;
m_B2d=int (B);
m_B2m=int( (B-int(B))*60);
m_B2s=int (((B-int(B))*60-m_B2m)*60);
l0=p0*q/cos(Bf)*(1+(-(1+2*tf*tf+k)+((5+4*tf*tf*(7+6*tf*tf)+2*k*(3+4*tf*tf))-(61+(662+(1320+720*tf*tf)*tf*tf)*tf*tf)*q*q/42)*q*q/20)*q*q/6);
L=L0+l0;
m_L2d=int(L);
m_L2m=int( (L-int(L))*60);
m_L2s=int (((L-int(L))*60-m_L2m)*60);
m_fh2=m_fh1;
UpdateData(false);
}
void CDIALOG3::OnRadio1()
{
// TODO: Add your control notification handler code here
m_Coordinate=1;
a=6378245;
E=0.006693427491;
E1=6.738525414683E-03;
c=6399698.901782711;
}
void CDIALOG3::OnRadio2()
{
// TODO: Add your control notification handler code here
m_Coordinate=2;
a=6378140;
E=6.694384999588E-03;
c=6399596.6519880105;
E1=6.739501819473E-03;
}
void CDIALOG3::OnRadio3()
{
// TODO: Add your control notification handler code here
m_Coordinate=3;
a=6378137;
E=6.6943799013E-03;
c=6399593.6258;
E1=6.73949674227E-03;
}
void CDIALOG3::OnRadio4() //正算
{
// TODO: Add your control notification handler code here
m_B1d=m_B1m=m_B1s=0;
m_L1d=m_L1m=m_L1s=0;
m_B2d=m_B2m=m_B2s=0;
m_L2d=m_L2m=m_L2s=0;
m_zH1=m_zh2=0;
m_L1d_C.EnableWindow(true);
m_L1m_C.EnableWindow(true);
m_L1s_C.EnableWindow(true);
m_B1d_C.EnableWindow(true);
m_B1m_C.EnableWindow(true);
m_B1s_C.EnableWindow(true);
m_zH1_C.EnableWindow(true);
m_zh2_C.EnableWindow(true);
m_X1_C.EnableWindow(true);
m_Y1_C.EnableWindow(true);
m_L2d_C.EnableWindow(false);
m_L2m_C.EnableWindow(false);
m_L2s_C.EnableWindow(false);
m_B2d_C.EnableWindow(false);
m_B2m_C.EnableWindow(false);
m_B2s_C.EnableWindow(false);
m_X2_C.EnableWindow(false);
m_Y2_C.EnableWindow(false);
m_fh1_C.EnableWindow(false);
m_fh2_C.EnableWindow(false);
}
void CDIALOG3::OnRadio5()
{
// TODO: Add your control notification handler code here
m_B1d=m_B1m=m_B1s=0;
m_L1d=m_L1m=m_L1s=0;
m_B2d=m_B2m=m_B2s=0;
m_L2d=m_L2m=m_L2s=0;
m_fh1=m_fh2=0;
m_L2d_C.EnableWindow(true);
m_L2m_C.EnableWindow(true);
m_L2s_C.EnableWindow(true);
m_B2d_C.EnableWindow(true);
m_B2m_C.EnableWindow(true);
m_B2s_C.EnableWindow(true);
m_X2_C.EnableWindow(true);
m_Y2_C.EnableWindow(true);
m_fh1_C.EnableWindow(true);
m_fh2_C.EnableWindow(true);
m_L1d_C.EnableWindow(false);
m_L1m_C.EnableWindow(false);
m_L1s_C.EnableWindow(false);
m_B1d_C.EnableWindow(false);
m_B1m_C.EnableWindow(false);
m_B1s_C.EnableWindow(false);
m_zH1_C.EnableWindow(false);
m_zh2_C.EnableWindow(false);
m_X1_C.EnableWindow(false);
m_Y1_C.EnableWindow(false);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -