欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.docx

    • 资源ID:1259568       资源大小:121.60KB        全文页数:10页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.docx

    1、空间直角坐标系与空间大地坐标系的相互转换及其C+源程序空间直角坐标系与空间大地坐标系的相互转换 1.空间直角坐标系/笛卡尔坐标系坐标轴相互正交的坐标系被称作笛卡尔坐标系。三维笛卡尔坐标系也被称为空间直角坐标系。在空间直角坐标系下,点的坐标可以用该点所对应的矢径在三个坐标轴上的投影长度来表示,只有确定了原地、三个坐标轴的指向和尺度,就定义了一个在三维空间描述点的位置的空间直角坐标系。以椭球体中心O为原点,起始子午面与赤道面交线为X轴,在赤道面上与X轴正交的方向为Y轴,椭球体的旋转轴为Z轴构成右手坐标系O.XYZ,在该坐标系中,P点的位置用X,Y,Z表示。 在测量应用中,常将地球空间直角坐标系的坐

    2、标原点选在地球质心(地心坐标系)或参考椭球中心(参心坐标系),z轴指向地球北极,x轴指向起始子午面与地球赤道的交点,y轴垂直于XOZ面并构成右手坐标系。空间直角坐标系2.空间大地坐标系由于空间直角坐标无法明确反映出点与地球之间的空间关系,为了解决这一问题,在测量中引入了大地基准,并据此定义了大地坐标系。大地基准指的是用于定义地球参考椭球的一系列参数,包括如下常量:2.1椭球的大小和形状2.2椭球的短半轴的指向:通常与地球的平自转轴平息。2.3椭球中心的位置:根据需要确定。若为地心椭球,则其中心位于地球质心。2.4本初子午线:通过固定平极和经度原点的天文子午线,通常为格林尼治子午线。以大地基准为

    3、基础建立的坐标系被称为大地坐标系。由于大地基准又以参考椭球为基准,因此,大地坐标系又被称为椭球坐标系。大地坐标系是参心坐标系,其坐标原点位于参考椭球中心,以参考椭球面为基准面,用大地经度L、纬度B和大地高H表示地面点位置。过地面点P的子午面与起始子午面间的夹角叫P点的大地经度。由起始子午面起算,向东为正,叫东经(0180),向西为负,叫西经(0-180)。过P点的椭球法线与赤道面的夹角叫P点的大地纬度。由赤道面起算,向北为正,叫北纬(090),向南为负,叫南纬(0-90)。从地面点P沿椭球法线到椭球面的距离叫大地高。大地坐标坐标系中,P点的位置用L,B表示。如果点不在椭球面上,表示点的位置除L

    4、,B外,还要附加另一参数大地高H。空间大地坐标系3.空间直角坐标与大地坐标间的转换3.1大地坐标转换为空间直角坐标将同一坐标系下的大地坐标(B、L、H)转换成空间直角坐标(X、Y、Z)的转换公式为:式中N为卯酉圈的半径,a为参考椭球的长半轴;b为参考椭球的短半轴;e为参考椭球的第一偏心率;并且有若点在椭球面上,则大地高H=0,上式可简化为:3.2空间直角坐标转换为空间大地坐标将同一坐标系下的空间直角坐标(X、Y、Z)转换为空间大地坐标(B、L、H)的公式为:在使用上式进行空间直角坐标到大地坐标的转换过程中,由于计算大地纬度口时用到大地高,而计算大地高时又需要用到大地纬度口因此不能直接由空间直角

    5、坐标计算出大地坐标,而需要采用迭代计算的方法。具体计算时,可先根据下式求出大地纬度口的初值:然后利用该初值来求出H、N的初值,再利用所求出的H和N初值再次求出B值如此反复,直至求出的及日、收敛为止。4.算例本文根据以上公式在Microsoft VC+6.0环境下编写了一段程序(见附录)。算例中的坐标采用的是武汉大学信息学部友谊广场上的某点的大地坐标作为已知值,然后经过转换函数CRDGEODETICtoCRDCARTESEAN(pcg, pcc, dSemiMajorAxis,dFlatning)把大地坐标转换为空间直角坐标得到坐标X、Y、Z。由得到的空间直角坐标X、Y、Z,经过转换函数 CRD

    6、CARTESIANtoCRDGEODETIC(pcc,pcg,dSemiMajorAxis,dFlatning)把空间直角坐标还原成空间大地坐标,计算结果如下图所示:计算结果从上图可以看出结果比较满意,高程和精度基本能完全还原,而纬度还原后有较大的误差,在测量中这种误差不允许的,需要修改算法,完善结果。可能引起的原因有可能是由于纬度计算公式并不完善,还有可能是由于计算机的截断误差引起的,还要找时间继续修改、完善。5.心得体会这次编程自认为很简单,但真动手自己亲自编写,还是或多或少遇到了一些问题,并分析问题,最终解决问题。虽然这次作业很简单,但经过自己这样一步一步的编写出来,还是有很多收获,加强

    7、了运用VC+编写程序的能力,也充分认识到了学习VC+的重要性,更找到了自己的一些缺点与不足。6.附录(程序源代码)#include#includeusing namespace std;#define M_PI 3.1415926typedef struct tagCRDCARTESIAN double x; double y; double z;CRDCARTESIAN;typedef CRDCARTESIAN *PCRDCARTESIAN;typedef struct tagCRDGEODETIC double longitude; double latitude; double heig

    8、ht;CRDGEODETIC;typedef CRDGEODETIC *PCRDGEODETIC;void DMS_RAD(double DMS,double *Rad) int Deg,Min; double Sec; Deg=(int)DMS; Min=(int)(DMS-Deg)*100); Sec=(DMS-Deg)*100-Min)*100; *Rad=(Deg+Min/60.0+Sec/3600.0)/180.0*M_PI; return;void RAD_DMS(double Rad,double *DMS) int Deg,Min; double Sec; double AR,

    9、AM; AR=Rad; if (Rad0) AR=-Rad; AR=AR+1.0e-10; AR=AR*180.0/M_PI; Deg=(int)AR; AM=(AR-Deg)*60.0; Min=(int)AM; Sec=(AM-Min)*60; *DMS=Deg+Min/100.0+Sec/10000.0; if(Radx; double Y=pcc-y; double Z=pcc-z; R=sqrt(X*X+Y*Y); B0=atan2(Z,R); while (1) N=dSemiMajorAxis/sqrt(1.0-dFlattening*(2-dFlattening)*sin(B0

    10、)*sin(B0); B_=atan2(Z+N*dFlattening*(2-dFlattening)*sin(B0),R); if(fabs(B_-B0)height=R/cos(B_)-N; RAD_DMS(B_,&pcg-latitude); RAD_DMS(L_,&pcg-longitude); return true;bool CRDGEODETICtoCRDCARTESEAN(PCRDGEODETIC pcg,PCRDCARTESIAN pcc,double dSemiMajorAxis,double dFlattening) double N; double B_,L_; dou

    11、ble B=pcg-latitude; double L=pcg-longitude; double H=pcg-height; DMS_RAD(B,&B_); DMS_RAD(L,&L_); N=dSemiMajorAxis/sqrt(1.0-dFlattening*(2-dFlattening)*sin(B_)*sin(B_); pcc-x=(N+H)*cos(B_)*cos(L_); pcc-y=(N+H)*cos(B_)*sin(L_); pcc-z=(N*(1.0-dFlattening*(2-dFlattening)+H)*sin(B_); return true;void mai

    12、n() PCRDCARTESIAN pcc=new CRDCARTESIAN; PCRDGEODETIC pcg=new CRDGEODETIC; /B=30.31.40.23 L=114.21.20.51 h=41 double rad; rad=(30*3600+31*60+40.23)/3600; pcg-latitude=rad; rad=(114*3600+21*60+20.51)/3600; pcg-height=41; pcg-longitude=rad; double dSemiMajorAxis=6378137; double dFlatning=1/298.25722356

    13、3; coutstd:fixed; cout转换前已知的大地坐标:endl; coutH(高度)=height L(经度)=longitude B(纬度)=latitudeendl; CRDGEODETICtoCRDCARTESEAN(pcg, pcc, dSemiMajorAxis,dFlatning); coutendl; cout转换后的空间直角坐标:; coutx=x y=y z=z endl; CRDCARTESIANtoCRDGEODETIC(pcc,pcg,dSemiMajorAxis,dFlatning); coutendl; cout由转换后的空间直角坐标x,y,z还原成大地坐标:endl; coutH(高度)=height L(经度)=longitude B(纬度)=latitudeendl; coutendl;


    注意事项

    本文(空间直角坐标系与空间大地坐标系的相互转换及其C++源程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开