文档详情

大地测量上机实习报告.doc

发布:2017-08-16约6.47千字共13页下载文档
文本预览下载声明
题目: 大地测量学上机实习 学 号: 姓 名: 班 级: 专 业: 测绘工程 课程名称: 大地测量学基础 课程老师: 大地测量上机实习报告、实习步骤:1、先了解书本上关于大地主题解算的步骤;式中,,为椭球的长半轴,为椭球的卯酉圈曲率半径=6378.137km ,,为椭球的第一偏心率,为椭球的短半轴 =6356.7523141km。 2)程序代码 #include stdio.h #include math.h #define PI 3.1415926535897932384626433832795 double rad(double a,double b,double c) {b=b+c/60; a=a+b/60; a=a/180*PI; return a;} void deg(double d,int *d1,int *d2,double *d3) {d=d/PI; *d1=(int)d; *d2=(int)((d-*d1)*60); *d3=((d-*d1)*60-*d2)*60;} void X1(double a1,double e) {double l,b,h,x,y,z,a,b1,c,n,w; printf(please input L:\n); scanf(%lf%lf%lf,a,b1,c); l=rad(a,b1,c); printf(please input B:\n); scanf(%lf%lf%lf,a,b1,c); b=rad(a,b1,c); printf(please input H:\n); scanf(%lf,h); w=sqrt((1-e*e*sin(b)*sin(b))); n=a1/w; x=(n+h)*cos(b)*cos(l); y=(n+h)*cos(b)*sin(l); z=(n*(1-e*e)+h)*sin(b); printf(X=%f\nY=%f\nZ=%f\n,x,y,z);} void X2(double a1,double e) {double l,b,h,x,y,z,n,w,m,g,m1,g1,l3,b3;int l1,l2,b1,b2; printf(please input X:\n); scanf(%lf,x); printf(please input Y:\n); scanf(%lf,y); printf(please input Z:\n); scanf(%lf,z); l=atan2(y,x); do{m=(z+a1*e*e*g/sqrt(1+g*g-e*e*g*g))/sqrt(x*x+y*y); m1=atan(m); g1=atan(g); m1=m1/PI*180*3600; g1=g1/PI*180*3600; g=m;} while(sqrt((m1-g1)*(m1-g1))0.0001); b=atan(m); w=sqrt(1-e*e*sin(b)*sin(b)); n=a1/w; h=sqrt(x*x+y*y)/cos(b)-n; deg(l,l1,l2,l3); deg(b,b1,b2,b3); printf(L=%d°%d%2.6f\nB=%d°%d%2.6f\nH=%5.6fm\n,l1,l2,l3,b1,b2,b3,h);} void f(int a) {double a1,e,e2;int b,c; printf(please input L,B,H→X,Y,Z:请输入1 或 X,Y,Z→L,B,H:请输入2\n); scanf(%d,b); printf(请选择参考椭球面:\n克拉索夫斯基椭球(请输入1) \n或 IUGG 1975椭球(请输入2) \n或 CGCS 2000椭球(请输入3)\n或WGS-84椭球体(请输入4)); scanf(%d,c); if (c==1){a1=6378245.0000,e2=0.00669342162297;} else if (c==2){a1=6378140.0000,e2=0.00669438499959;} else if (c==3){a1=6378137.0000,e2=0.00669438002290;} else if (c==4){a1=6378137.0000,e2=0.00669437999013;}; e=sqrt(e2); if (b==1)X1(
显示全部
相似文档