ecef转换经纬度坐标 c语言代码,如何计算大地坐标(ECEF)与本地参考(ENU)之间的直接和反向转换...

我正在开发一个地理空间AR应用程序,并且刚刚在Objective-C/iOS(来自Apple的this example code提供了相当多的帮助)中解决了这个问题。

将从lat lon转换为ecef到ENU并返回的三个C函数如下所示。数学公式来自this维基百科的文章。

#define RADIANS_TO_DEGREES(radians) ((radians) * (180.0/M_PI))

#define DEGREES_TO_RADIANS(degrees)((M_PI * degrees)/180)

#define WGS84_A (6378137.0) // WGS 84 semi-major axis constant in meters

#define WGS84_E (8.1819190842622e-2) // WGS 84 eccentricity

// Converts latitude, longitude to ECEF coordinate system

void latLonToEcef(double lat, double lon, double alt, double *x, double *y, double *z)

{

double clat = cos(DEGREES_TO_RADIANS(lat));

double slat = sin(DEGREES_TO_RADIANS(lat));

double clon = cos(DEGREES_TO_RADIANS(lon));

double slon = sin(DEGREES_TO_RADIANS(lon));

double N = WGS84_A/sqrt(1.0 - WGS84_E * WGS84_E * slat * slat);

*x = (N + alt) * c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
地心地固(ECEF坐标系与东北天(ENU坐标系是两种常用的地理坐标系,用于描述物体的位置和方向。它们之间可以进行坐标转换。 地心地固坐标系是以地球中心为原点,以地球自转轴为Z轴建立的坐标系。它的X轴指向经度为0度的子午线,Y轴指向经度为90度的子午线,Z轴垂直于地球表面向上。地心地固坐标系可以直接通过地球球面坐标(经度、纬度、高度)与直角坐标系(X轴、Y轴、Z轴)进行转换。 东北天坐标系是与特定位置相关的本地坐标系,它的X轴指向东方,Y轴指向北方,Z轴垂直于地表向上。在东北天坐标系中,物体的位置和方向是相对于参考点而言的。 坐标系的转换可以通过旋转、平移和缩放等变换来实现。具体做法是先将地心地固坐标系中的点转换为地球上某一特定点的局部东北天坐标系中的点,再通过旋转将该点转换为目标位置的本地东北天坐标系中的点。 转换的具体步骤是先确定参考点的经纬度坐标以及在地心地固坐标系中的坐标,然后计算出地心地固坐标系中参考点到目标点的旋转角度和缩放比例,最后将地心地固坐标系中的点进行旋转平移与缩放变换,得到目标位置的东北天坐标系中的点坐标。 通过地心地固坐标系和东北天坐标系的转换,我们可以方便地描述物体在空间中的位置和方向,应用于导航、航空、航天等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值