📄 blxy54.cpp
字号:
#include "stdafx.h"
#include "stdlib.h"
#include <math.h>
#include "string.h"
#include "blxy54.h"
void definite_ellipsolid_parameter()
{
double aa,e4,e6,e8,ea,ec;
a=A;
e2=E2;
e22=e2/(1.0-e2);
a2=a*a;
b2=a2*(1-e2);
e4=e2*e2;
e6=e4*e2;
e8=e6*e2;
ea=e8*e2;
ec=ea*e2;
aa=a*(1-e2);
c1=aa*(e2*3/4+e4*45/64+e6*175/256+e8*11025/16384+ea*43659/65536
+ec*693693/1048576);
c2=aa*(e4*15/32+e6*175/384+e8*3675/8192+ea*14553/32768
+ec*231231/524288);
c3=aa*(e6*35/96+e8*735/2048+ea*14553/40960+ec*231231/655360);
c4=aa*(e8*315/1024+ea*6237/20480+ec*99099/327680);
c0=(c1+aa);
}
void bltoxy(double b, double l, double* x,double* y)
{
double X,t,t2,cosb,cosb2,sinb,sinb2,eta2,n,m,m2,m4;
sinb=sin(b);
sinb2=sinb*sinb;
cosb=cos(b);
cosb2=cosb*cosb;
X=c0*b-sinb*cosb*(c1+sinb2*(c2+sinb2*(c3+sinb2*c4)));
eta2=e22*cosb2;
t=sinb/cosb;
t2=t*t;
n=a2/sqrt(a2*cosb2+b2*sinb2);
m=cosb*l;
m2=m*m;
m4=m2*m2;
*y=n*m*(1.0+m2*(eta2+1.0-t2)/6.0+m4*(t2*(t2-18.0)
+5.0+eta2*(14.0-58.0*t2))/120.0)+500000;
*x=X+0.5*n*t*(m2+(5-t2+eta2*(9+4*eta2))*m4/12+
(61-t2*(t2-58))*m4*m2/360);
}
void trbltoxy(int width, int zone,double b,double l,double* x, double* y)
{
l=(l-(zone-1)*width-3)/RO;
b/=RO;
bltoxy(b,l,x,y);
/* *y +=zone*1000000;*/
}
/*
main()
{int i,j,num,d=0;
int width,zone;
double *b,*l,*x,*y,meanx,meany;
char fname1[50],fname2[50],fname3[50];
FILE *rfp,*wfp,*mfp;
do{
printf("Enter input file name:");
scanf("%s",fname1);
printf("\n");
printf("Enter width and zone:");
scanf("%d %d",&width,&zone);
printf("\n");
sprintf(fname2,"%s.54",fname1);
sprintf(fname3,"%s.m",fname1);
if(!(rfp=fopen(fname1,"r")))
{printf("Cann't open input file %s\n",fname1);
exit(1);
}
if(!(wfp=fopen(fname2,"w")))
{printf("Cann't open output file %s\n",fname2);
exit(1);
}
if(!(mfp=fopen(fname3,"w")))
{printf("Cann't open output file %s\n",fname2);
exit(1);
}
// fscanf(rfp,"%d",&num);
// fprintf(wfp,"%d\n",num);
// printf("%d\n",num);
num=0;
do{
do{
}while(fgetc(rfp) != '\n');
num++;
}while(fgetc(rfp) != 'E');
printf("num = %d\n",num);
// fprintf(wfp,"%d\n",num);
fprintf(wfp,"1\n");
if(!(b=malloc(sizeof(double)*num)))
{printf("No more space for b\n");
exit(1);
}
if(!(l=malloc(sizeof(double)*num)))
{printf("No more space for l\n");
exit(1);
}
rewind(rfp);
for(i=0;i<num;i++)
fscanf(rfp,"%d,%lf,%lf",&j,&b[i],&l[i]);
printf("%d %lf %lf\n",j,b[1],l[1]);
if(j == 0)
{printf("Read fail!\n");
exit(1);
}
if(!(x=malloc(sizeof(double)*num)))
{printf("No more space for xx\n");
exit(1);
}
if(!(y=malloc(sizeof(double)*num)))
{printf("No more space for yy\n");
exit(1);
}meanx=0;meany=0;
definite_ellipsolid_parameter();
for(i=0;i<num;i++)
{trbltoxy(width,zone,l[i],b[i],&x[i],&y[i]);
meanx+=x[i];meany+=y[i];
}
meanx=meanx/num;meany=meany/num;
printf("bl to xy :%lf %lf %lf %lf meanx=%lf meany=%lf\n",b[2],l[2],x[2],y[2],meanx,meany);
fprintf(mfp,"meanx=%lf meany=%lf\n",meanx,meany);
for(i=0;i<num;i++)
{j=i+1;
fprintf(wfp,"%11.2lf,%11.2lf\n",x[i],y[i]);
}
fprintf(wfp,"END\n");
fprintf(wfp,"END");
fclose(rfp);fclose(wfp);fclose(mfp);free(b);free(l);free(x);free(y);
printf("output file name is %s,\ndo you want to trans the other?(0=no,1=yes):",fname2);
scanf("%d",&d);
printf("\n");
}while(d != 0);
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -