白塞尔大地主题解算

上传人:mg****85 文档编号:34191532 上传时间:2018-02-21 格式:DOCX 页数:7 大小:129.89KB
返回 下载 相关 举报
白塞尔大地主题解算_第1页
第1页 / 共7页
白塞尔大地主题解算_第2页
第2页 / 共7页
白塞尔大地主题解算_第3页
第3页 / 共7页
白塞尔大地主题解算_第4页
第4页 / 共7页
白塞尔大地主题解算_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《白塞尔大地主题解算》由会员分享,可在线阅读,更多相关《白塞尔大地主题解算(7页珍藏版)》请在金锄头文库上搜索。

1、白塞尔大地主题解算班级 测绘 1112 学号 1120115230 姓名 陈晓旭一、 正算代码:#include#include#define ee 0.006693421622966#define I 3.141592653double F(double,double,double);void main(void)double A1,B1,L1,S,A2,B2,L2;double x1,x2,x3,y1,y2,y3,z1,z2,z3;double W1,sinu1,sinu2,cosu1,sinA0;double cota1,cos2a1,sin2a1,cosA0A0;double A,B,

2、C,d,e,a0,a1,m;double n,a,Q,R;printf(请输入数据 B1= );scanf(%lf %lf %lf,B1=F(x1,x2,x3);printf(请输入数据 L1= );scanf(%lf %lf %lf,L1=F(y1,y2,y3);printf(请输入 A1= );scanf(%lf %lf %lf,A1=F(z1,z2,z3);printf(请输入 S= );scanf(%lf,printf(B1=%.9fn,B1);printf(L1=%.9fn,L1);printf(A1=%.9fn,A1);printf(S=%fn,S);/*计算起点的规划纬度*/W1

3、=sqrt(1-ee*sin(B1)*sin(B1); sinu1=sin(B1)*sqrt(1-ee)/W1;cosu1=cos(B1)/W1;printf(W1=%.9fn,W1);printf(sinu1=%.9fn,sinu1);printf(cosu1=%.9fn,cosu1);/*计算辅助函数值*/sinA0=cosu1*sin(A1); cota1=cosu1*cos(A1)/sinu1;sin2a1=2*cota1/(cota1*cota1+1);cos2a1=(cota1*cota1-1)/(cota1*cota1+1);printf(sinA0=%.9fn,sinA0);p

4、rintf(cota1=%.9fn,cota1);printf(sin2a1=%.9fn,sin2a1);printf(cos2a1=%.9fn,cos2a1);/*计算系数 ABC 及 de*/cosA0A0=1-sinA0*sinA0; A=6356755.288+(10710.341-(13.534*cosA0A0)*cosA0A0;B=(5355.171-9.023*cosA0A0)*cosA0A0;C=(2.256*(cosA0A0)*cosA0A0+0.006;d=691.46768-(0.58143-0.00144*cosA0A0)*cosA0A0;e=(0.2907-cosA0

5、A0*0.0010)*cosA0A0;printf(cosA0A0=%.9fn,cosA0A0);printf(A=%.3fn,A);printf(B=%.6fn,B);printf(C=%.9fn,C);printf(d=%.7fn,d);printf(e=%.9fn,e);/*计算球面长度*/a0=(S-(B+C*cos2a1)*sin2a1)/A; m=sin2a1*cos(2*a0)+cos2a1*sin(2*a0);n=(cos2a1)*(cos(2*a0)-(sin2a1)*(sin(2*a0);a=a0+(B+5*C*n)*m/A;printf(a0=%.9fn,a0);prin

6、tf(m=%.9fn,m);printf(n=%.9fn,n);printf(a=%.9fn,a);/*计算经度差改正数*/Q=(d*a+(e*(m-sin2a1)/3600/180*I)*sinA0;printf(Q=%.7fn,Q);/*计算终点大地坐标及大地方位角*/sinu2=sinu1*cos(a)+cosu1*cos(A1)*sin(a);B2=180*atan(sinu2/(sqrt(1-ee)*(sqrt(1-sinu2*sinu2)/I;R=180*atan(sin(A1)*sin(a)/(cosu1*cos(a)-sinu1*sin(a)*cos(A1)/I;printf(

7、sinu2=%.9fn,sinu2);printf(B2=%fn,B2);printf(R=%fn,R*180/I);/*确定 R 的值*/if(sin(A1)0 & tan(R)0)R=abs(R);else if(sin(A1)0 & tan(R)0)A2=(fabs(A2)*180/I;else if(sin(A1)0&tan(A2)0)A2=(I+fabs(A2)*180/I;elseA2=(2*I-fabs(A2)*180/I;printf(A2=%3fn B2=%3fn L2=%3fn,A2,B2,L2);double F(double a2,double b2,double c2

8、)double d2;d2=(double)(a2+1.0*b2/60+1.0*c2/3600);d2=(d2/180)*I;return (d2);运行结果:二、 反算代码:#include#include#define ee 0.006693421622966#define I 3.141592653double F(double,double,double);void main(void)double B1,B2,L1,L2,A1,A2,S,Y;double W1,W2,L,Q,R,A,B,C;double x,y,z,p,q;double x1,x2,x3,y1,y2,y3,z1,z2

9、,z3,w1,w2,w3;double a1,a2,b1,b2,m,n;double sinp,cosp,sinu1,sinu2,cosu1,cosu2,sinA0,cosA0;Q=0;q=0;printf(请输入起始数据 B1= );scanf(%lf %lf %lf,B1=F(x1,x2,x3);printf(请输入起始数据 L1= );scanf(%lf %lf %lf,L1=F(y1,y2,y3);printf(请输入起始数 B2= );scanf(%lf %lf %lf,B2=F(z1,z2,z3);printf(请输入起始数据 L2= );scanf(%lf %lf %lf,L2=

10、F(w1,w2,w3);printf(B1=%fn,B1);printf(L1=%.9fn,L1);printf(B2=%.9fn,B2);printf(L2=%.9fn,L2);/*辅助计算*/W1=sqrt(1-ee*sin(B1)*sin(B1);W2=sqrt(1-ee*sin(B2)*sin(B2);sinu1=sin(B1)*sqrt(1-ee)/W1;sinu2=sin(B2)*(sqrt(1-ee)/W2;cosu1=cos(B1)/W1;cosu2=cos(B2)/W2;L=L2-L1;a1=sinu1*sinu2;a2=cosu1*cosu2;b1=cosu1*sinu2;

11、b2=sinu1*cosu2;printf(W1=%.9fn,W1);printf(W2=%.9fn,W2);printf(sinu1=%.9fn,sinu1);printf(sinu2=%.9fn,sinu2);printf(cosu1=%.9fn,cosu2);printf(L=%.9fn,L);printf(a1=%.9fn,a1);printf(a2=%.9fn,a2);printf(b1=%.9fn,b1);printf(b2=%.9fn,b2);/*用逐次趋近法同时计算起点大地方位角、球面长度及经差 R*/doR=L+Q;x=cosu2*sin(R);y=b1-b2*cos(R);

12、A1=atan(x/y);if(x0&y0)A1=fabs(A1);else if(x0&y0)p=fabs(p);sinA0=cosu1*sin(A1);cosA0=sqrt(1-sinA0*sinA0);p=I-fabs(p);z=2*a1-cosA0*cosA0*cos(p);m=(33523299-(28189-70*cosA0*cosA0)*(1e-10);n=(28189-94*cosA0*cosA0)*(1e-10);Q=q;q=(m*p-m*z*sin(p)*sinA0;while(fabs(206265*(q-Q)(1e-4);printf(Q=%fn,Q);/*计算系数 A

13、BC 及大地线长度*/A=6356863.020+(10708.949-13.474*cosA0*cosA0)*cosA0*cosA0;B=10708.938-17.956*cosA0*cosA0;C=4.487;Y=(cosA0*cosA0*cosA0*cosA0-2*z*z)*cos(p);S=A*p+(B*z+C*Y)*sinp;/*计算反方位角*/A2=atan(cosu1*sin(R)/(b1*cos(R)-b2);A2=A2*180/I;A1=A1*180/I;if(A10)A2=abs(A2);else A2=-abs(A2);printf(A1=%3fn A2=%3fn S=%3fn,A1,A2,S);double F(double a,double b,double c)double d;if(a0)d=(double)(a-1.0*b/60-1.0*c/3600);else d=(double)(a+1.0*b/60+1.0*c/3600);d=(d/180)*I;return d; 运行结果:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号