資源簡介
高斯引數計算
大地測量學 坐標正反算 選擇不同的橢球體參數
代碼片段和文件信息
#include
#include
#define?PI?3.14159265358979323846
#define?P0?206265?
int?main?()
{int?z;
printf(“\t請選擇正算(1)或反算(2):“);
scanf(“%d“&z);
if(z==1)?ZS();
if(z==2)?FS();
}
double?ZH1?(double?dudouble?minutedouble?second)//由角度值轉換為弧度制?
{double?temp;
temp=du+minute/60.0+second/3600.0;
temp=temp*(PI/180.0);
return?(temp);
}
double?ZH2?(double?temp)
{double?secondx;
int?duminute;
x=temp*(180/PI);
du=(int)x;
x=x-du;
x=x*60;
minute=(int)x;
x=x-minute;
second=x*60;
printf(“%d°%d′%lf″\n“duminutesecond);
}
double?Abs?(double?a)?//double?的絕對值函數?
{if?(a>=0){a=a;}
else?a=0-a;
return?(a);
}
int?ZS(?)??//正算函數?
{???
int?x;
double?eacB1L1A1S;
double?e__t1t2NBMBdBdLdAdB0dL0dA0A2B2tL2;
double?BmLMAmqndb1db2xtxt1xt2dL1da1da2XdBXdLXdA;
double?duminutesecond;?
printf(“請輸入B1(度分秒之間用隔開):“);
scanf(“%lf%lf%lf“&du&minute&second);
B1=ZH1(duminutesecond);
printf(“請輸入L1(度分秒之間用隔開):“);
scanf(“%lf%lf%lf“&du&minute&second);
L1=ZH1(duminutesecond);
printf(“請輸入A1(度分秒之間用隔開):“);
scanf(“%lf%lf%lf“&du&minute&second);
A1=ZH1(duminutesecond);
printf(“請輸入S:“);
scanf(“%lf“&S);
printf(“請選擇橢球體參數:\n克拉索夫斯基橢球(1)\t1975年國際橢球(2)\nWGS-84橢球體(3)\tCGCS2000坐標系(4)\n“);
scanf(“%d“&x);?
switch(x)?
{
case?1:{c=6399698.9017827110;a=6378245;e=sqrt(0.006693421622966);printf(“已選擇克拉索夫斯基橢球體參數.\n“);}break;
case?2:{c=6399596.6519880102;a=6378140;e=sqrt(0.006694384999588);printf(“已選擇1975年國際橢球體參數.\n“);}break;
case?3:{c=6399593.6258;a=6378137;e=sqrt(0.00669437999013);printf(“已選擇WGS-84橢球體參數.\n“);}break;
case?4:{c=6399593.6259;a=6378137;e=sqrt(0.00638002290);printf(“已選擇CGCS2000橢球體參數.\n“);}break;
}
e__=pow(e2)/(1-pow(e2));
t1=sin(B1);
t2=cos(B1);
NB=a/pow((1-e*e*t1*t1)0.5);
MB=a*(1-e*e)/pow((1-e*e*t1*t1)1.5);
dB=S*cos(A1)/MB;
dL=S*sin(A1)/NB/cos(B1);
dA=dL*sin(B1);
do
{dB0=dB;dL0=dL;dA0=dA;
Bm=B1+dB0/2;
LM=L1+dL0/2;
Am=A1+dA0/2;
t1=sin(Am);
t2=cos(Am);
t=tan(Bm);
q=e__*cos(Bm)*cos(Bm);
n=a/sqrt(1-e*e*sin(Bm)*sin(Bm));
MB=a*(1-e*e)/pow((1-e*e*sin(Bm)*sin(Bm))1.5);
db1=t1*t1*(2+3*t*t+2*q);
db2=3*t2*t2*q*(t*t-1-(1+4*t*t)*q);
dB=S*t2*(1+S*S*(db1+db2)/n/n/24)/MB;
xt=t*t;xt1=t1*t1;xt2=t2*t2;
dL1=S*S*(xt*xt1-xt2*(1+(1-9*xt)*q))/n/n/24;
dL=S*t1*(1+dL1)/n/cos(
- 上一篇:全磊MPS3117電路搭配
- 下一篇:MVC4入門經典視頻2.5G60節課
評論
共有 條評論