3986.net
小网站 大容量 大智慧
当前位置:首页 >> 天文/地理 >>

空间直角坐标系与大地坐标系转换程序


空间直角坐标系与大地坐标系转换程序 #include<iostream> #include<cmath> #include<iomanip> using namespace std; #define PI (2.0*asin(1.0)) void main() { double a,b,c,d1,d2,f1,f2,m1,m2,B,L,H,X,Y,Z,W,N,e; //cout<<"请分别输入椭球的长半轴、短半轴(国际单位)"<<endl; //cin>>a>>b; a=6378137; //以 WGS84 为例 b=6356752.3142; e=sqrt(a*a-b*b)/a; c=a*a/b; int x; cout<<"请输入 0 或 1,0:大地坐标系到空间直角坐标系;1:空间直角坐标系到大地坐 标系"<<endl; cin>>x; switch(x) { case 0: { cout<<"请分别输入该点大地纬度、经度、大地高(国际单位,纬度经度请按度分秒,分 别输入)"<<endl; cin>>d1>>f1>>m1>>d2>>f2>>m2>>H; B=PI*(d1+f1/60+m1/3600)/180; L=PI*(d2+f2/60+m2/3600)/180; W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*sin(L); Z=(N*(1-e*e)+H)*sin(B); cout<<" 空 间 直 角 坐 标 系 中 X,Y,Z , 坐 标 值 ( 国 际 单 位 ) 分 别 为 "<<fixed<<setprecision(6)<<X<<""<<fixed<<setprecision(6)<<Y<<""<<fixed<<setprecision(6)<<Z<< endl;break; } case 1: { cout<<"请分别输入空间直角坐标系中 X,Y,Z 的值(国际单位)"<<endl; cin>>X>>Y>>Z; double t,m,n, P,k,B0; m=Z/sqrt(X*X+Y*Y); //t0 B0=atan(m); //初值 n=Z/sqrt(X*X+Y*Y);

P=c*e*e/sqrt(X*X+Y*Y); k=1+(a*a-b*b)/(b*b); t=m+P*n/sqrt(k+n*n); //现在为 t1,之后代替 t2,t3... B=atan(t); W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; H=Z/sin(B) - N*(1-e*e); int i; for(i=1;fabs(B-B0)>10E-10;i++)//每一次新的 B 与上一次计算的 B 比较,误差小于 10E-10 rad {B0=B; n=t; t=m+P*n/sqrt(k+n*n);//迭代 B=atan(t); } W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; //if((X<0)&(Y>0)) //L=atan(Y/X)+PI; //if((X<0)&(Y<0)) // L=atan(Y/X)+PI; // if((X>0)&(Y<0)) //L=2*PI-atan(Y/X); L=atan2(Y,X); H=sqrt(X*X+Y*Y)/cos(B)-N; int Bd,Bf,Ld,Lf; double Bm,Lm; B=180*B/PI;//B 转化为度做单位 Bd=B; Bf=(B-Bd)*60; Bm=((B-Bd)*60-Bf)*60; L=180*L/PI;//L 转化为度做单位 Ld=L; Lf=(L-Ld)*60; Lm=((L-Ld)*60-Lf)*60; cout<<" 大 地 坐 标 系 中 纬 度 , 经 度 , 大 地 高 ( 国 际 单 位 ) 分 别 为 "<<Bd<<""<<Bf<<""<<fixed<<setprecision(6)<<Bm<<endl<<Ld<<""<<Lf<<""<<fixed<<setprecision( 6)<<Lm<<endl<<fixed<<setprecision(6)<<H<<endl; break; } } }

运行结果


推荐相关:

基于matlab的大地坐标与直角坐标间的转换

基于matlab的大地坐标与直角坐标间的转换 - 测量程序设计 实验报告 实验名称:大地坐标与空间直角坐标换算 实验四 大地坐标与空间直角坐标换算 一、实验目的 ...


大地坐标系和空间直角坐标系转换

大地坐标系和空间直角坐标系转换 - #include<math.h> #include<string.h> #include<iostream.h> #include<fstream.h> #d...


大地坐标与直角空间坐标转换计算公式

大地坐标与直角空间坐标转换计算公式一、参心大地坐标与参心空间直角坐标转换 1 名词解释: A:参心空间直角坐标系: a) b) c) d) e) 以参心 0 为坐标原点...


空间直角坐标转换大地坐标的直接解法新探

空间直角坐标转换大地坐标的直接解法新探_计算机软件及应用_IT/计算机_专业资料。空间直角坐标转换大地坐标的直接解法新探1 空间直角坐标转换大地坐标的直接解法新探1...


大地坐标与平面坐标之间的区别与转换

大地坐标系与平面 直角坐标系之间的转换是先将大地坐标转换空间直角坐标, 最后再转换到平面 直角坐标,可以参考下图。 对于第一种情况,只需要投影参数即可转换,...


已知经纬度转换为空间直角大地坐标系下坐标

已知经纬度转换空间直角大地坐标系坐标 - 已知经纬度转换空间直角大地坐标系坐标 X ? ( N ? H ) cos B cos L Y ? ( N ? H ) cos B sin ...


大地坐标与直角空间坐标转换计算公式

大地坐标与直角空间坐标转换计算公式 - 大地坐标与直角空间坐标转换计算公式 一、参心大地坐标与参心空间直角坐标转换 1 名词解释: A:参心空间直角坐标系: a) b...


空间大地坐标系与平面直角坐标系转换公式

空间大地坐标系与平面直角坐标系转换公式 - §2.3.1 坐标系的分类 2.3 2. 正如前面所提及的,所谓坐标系指的是描述空间位置的表达形式,即采用什么方法来表 ...


空间直角坐标系、大地坐标系、平面坐标系、高斯平面直...

空间直角坐标系大地坐标系、平面坐标系、高斯平面直角坐标系_天文/地理_自然科学...在使用原“1956 年黄海高程系”的高程成果时,应注意将其换算 为新的高程基准...


大地、地心空间直角和球面三种坐标的转换

大地、地心空间直角和球面三种坐标转换 - 第一章 大地坐标 第一节 大地坐标系统 科技名词定义 中文名称:大地坐标系 英文名称:geodetic coordinate system 定义:以...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com