📄 zbzhform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "zbzhform.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//void jdhs(int);
double jdhs_0(int,int,double);
dpbh(int kz,double a,double f,double be[],double xyg[]);
double f;
double a=6.37814e6;
//------坐标转换---------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
RadioGroup1->ItemIndex==0;
RadioGroup1->ItemIndex==1;
f=298.257;
}
//---------------------------------------------------------------------------
//==============================
void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
if( RadioGroup1->ItemIndex==0)
{
GroupBox1->Top=96;
GroupBox1->Visible=true;
GroupBox2->Visible=false;
BitBtn1->Visible=true;
BitBtn2->Visible=false;
}
if( RadioGroup1->ItemIndex==1)
{
GroupBox2->Top=96;
GroupBox2->Visible=true;
GroupBox1->Visible=false;
BitBtn2->Visible=true;
BitBtn1->Visible=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
double PI=4.0*atan(1.0);
double sec=0,d=0;
int ideg=0,min=0;
double xyg[3]={0,0,0}; //x,y,gama
double be[2]={0,0}; //b,e
//======================
try
{
ideg=StrToInt(Edit1->Text) ;
min=StrToInt(Edit2->Text) ;
sec=StrToFloat(Edit3->Text);
be[0]=jdhs_0(ideg,min,sec);
ideg=StrToInt(Edit4->Text);
min=StrToInt(Edit5->Text) ;
sec=StrToFloat(Edit6->Text);
be[1]=jdhs_0(ideg,min,sec);
dpbh(0,a,f,be,xyg);
Edit7->Text=FloatToStr(xyg[0]);
Edit8->Text=FloatToStr(xyg[1]);
//==================
d=xyg[2]*180/PI;
ideg=int(d);
d=(d-ideg)*60.0;
min=int (d);
sec=(d-min)*60;
///================
Edit9->Text=IntToStr(ideg);
Edit10->Text=IntToStr(min);
Edit11->Text=FloatToStr(sec);
GroupBox2->Top=288;
GroupBox1->Top=96;
GroupBox2->Visible=true;
GroupBox1->Visible=true;
}
catch(...)
{
ShowMessage("有错误发生!");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
double PI=4.0*atan(1.0);
double sec=0,d=0;
double xyg[3]={0,0,0};
double be[2]={0,0};
int ideg=0,min=0;
try{
xyg[0]=StrToFloat(Edit7->Text);
xyg[1]=StrToFloat(Edit8->Text);
dpbh(1,a,f,be,xyg);
//======
d=be[0]*180/PI;
ideg=int(d);
d=(d-ideg)*60.0;
min=int (d);
sec=(d-min)*60;
//=====
Edit1->Text=IntToStr(ideg);
Edit2->Text=IntToStr(min);
Edit3->Text=FloatToStr(sec);
//======
d=be[1]*180/PI;
ideg=int(d);
d=(d-ideg)*60.0;
min=int (d);
sec=(d-min)*60;
//=====
Edit4->Text=IntToStr(ideg);
Edit5->Text=IntToStr(min);
Edit6->Text=FloatToStr(sec);
//==========================
//======
d=xyg[2]*180/PI;
ideg=int(d);
d=(d-ideg)*60.0;
min=int (d);
sec=(d-min)*60;
//=====
Edit12->Text=IntToStr(ideg);
Edit13->Text=IntToStr(min);
Edit14->Text=FloatToStr(sec);
GroupBox1->Top=288;
GroupBox2->Top=96;
GroupBox1->Visible=true;
GroupBox2->Visible=true;
}
catch(...)
{
ShowMessage("有错误发生!");
}
}
//---------------------------------------------------------------------------
dpbh(int kz,double a,double f,double be[],double xyg[])
{
double PI=4.0*atan(1.0);
double bb=a*(1.0-1.0/f);
double e1=(a+bb)/bb*(a-bb)/bb;
double e2=(a+bb)/a*(a-bb)/a;
double a0=1.0+0.75 *e2+45.0*e2*e2/64.0+175.0*pow(e2,3)/256.0;
double b0= 0.75 *e2+15.0*e2*e2/16.0+525.0*pow(e2,3)/512.0;
double c0=15.0*e2*e2/64.0+105.0*pow(e2,3)/256.0;
double d0=35.0*pow(e2,3)/512.0;
int n0;
double e0,cb,sb,t,ad2,d,x1,de,a1,a2,dx,b1,b2,dy,c1,c2,dr;
double y0,dm,yd,ym,dl,db;
//=====================
if (kz==0)
{
n0=int(be[1]*180.0/(6.0*PI))+1;
e0=(6.0*(n0-1)+3)*PI/180.0;
cb=cos(be[0]);
sb=sin(be[0]);
t=tan(be[0]);
ad2=e1*cb*cb;
d=a/sqrt(1.0-e2*sb*sb);
x1=a0*be[0]-b0*sin(2.0*be[0])/2.0+c0*sin(4.0*be[0])/4.0;
x1=a*(1.0-e2)*(x1-d0*sin(6.0*be[0])/6.0);
de=be[1]-e0;
a1=d*sb*cb/2.0;
a2=d*sb*pow(cb,3)*(5.0-t*t+9.0*ad2+4.0*ad2)/24.0;
dx=d*sb*pow(cb,5)*pow(de,6)*(61.0-58.0*t*t+pow(t,4))/720.0;
xyg[0]=x1+de*de*(a1+a2*de*de)+dx;
b1=d*cb;
b2=d*pow(cb,3)*(1.0-t*t+ad2)/6.0;
dy=d*pow(cb,5)*(5.0-18.0*t*t+pow(t,4)+14.0*ad2-58.0*ad2*t*t)*pow(de,5)/120.0;
xyg[1]=de*(b1+b2*de*de)+dy;
xyg[1]=(n0+0.5)*1e6+xyg[1];
}
//========================
if(kz==1)
{
n0=int(xyg[1]*1e-6);
e0=(6*(n0-1)+3)*PI/180.0;
y0=xyg[1]-(n0+0.5)*1e6;
dx=1.0;
be[0]=xyg[0]/(a0*a*(1.0-e2));
do
{
x1=a0*be[0]-b0*sin(2.0*be[0])/2.0+c0*sin(4.0*be[0])/4.0;
x1=a*(1.0-e2)*(x1-d0*sin(6.0*be[0])/6.0);
dx=xyg[0]-x1;
db=dx/(a0*a*(1-e2));
be[0]=be[0]+db;
}while (abs(dx>0.0001)) ;
cb=cos(be[0]);
sb=sin(be[0]);
t=tan(be[0]);
ad2=e1*cb*cb;
d=a/sqrt(1-e2*sb*sb);
dm=d/(1.0+ad2);
yd=y0/d;
ym=y0/dm;
a1=t/2.0;
a2=t*(5.0+3.0*t*t+ad2-9.0*t*t*ad2)/24.0;
db=t*(61.0+90.0*t*t+45*pow(t,4))*pow(yd,4)/720.0;
be[0]=be[0]-yd*ym*(a1-a2*yd*yd+db);
b1=cb;
b2=(1.0+2.0*t*t+ad2)*cb/6.0;
dl=(5.0+44.0*t*t+32.0*pow(t,4)-2.0*ad2-16.0*t*t*ad2)*pow(yd,5)/(cb*360.0);
de=yd/(b1+b2*yd*yd)+dl;
be[1]=e0+de ;
}
//================================================
cb=cos(be[0]);
sb=sin(be[0]);
t=tan(be[0]);
ad2=e1*cb*cb;
c1=sb;
c2=sb*cb*cb*(1.0+3.0*ad2+2.0*ad2*ad2)/3.0;
dr=sb*pow(cb,4)*(2.0-t*t)*pow(de,5)/15.0;
xyg[2]=de*(c1+c2*de*de)+dr;
return 0;
}
//======================
double jdhs_0(int ideg,int min,double sec)
{
double rad;
double PI=4.0*atan(1.0);
rad=sec/60.0;
rad=(rad+min)/60.0;
rad=rad+ideg;
rad=rad*PI/180.0;
return rad;
}
//=======================
void __fastcall TForm1::RadioGroup2Click(TObject *Sender)
{
if( RadioGroup2->ItemIndex==0)
{
f=298.3;
}
if( RadioGroup2->ItemIndex==1)
{
f=298.257;
}
}
//---------------------------------------------------------------------------
#include <registry.hpp>
#include "cpuid.h"
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AnsiString serials;
unsigned __int64 n;
int* CPUID;
char* S;
int I;
bool ff;
AnsiString r1,r2,r3,r4;
CPUID = new int[4];
//以下取得软件序列号
S = new char[13];
S[13]='\0';
for ( I = 0; I < 4; I ++ ) CPUID[I] = -1;
if ( IsCPUID_Available() )//如果可以区的序列号
{
GetCPUID( CPUID);
r1=IntToHex(CPUID[0],8);
r2=IntToHex(CPUID[1],8);
r3=IntToHex(CPUID[2],8);
r4=IntToHex(CPUID[3],8);
serials=r1+r2+r3+r4;
}
else
{
Application->Terminate();
}
TRegistry *Reg = new TRegistry;
Reg->RootKey = HKEY_USERS;
serials=".DEFAULT\\Software\\Microsoft\\Windows\\CurrentVersion\\"+AnsiString(serials);
ff=Reg->KeyExists(AnsiString(serials));
if(!ff)
{
Application->Terminate();
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -