gpt4 book ai didi

objective-c - 将经纬度转换为ECEF坐标系

转载 作者:太空狗 更新时间:2023-10-30 03:36:39 27 4
gpt4 key购买 nike

我在学习pArk Apple 示例代码及其工作原理。任何人都知道如何将纬度和经度转换为 ECEF 坐标,和 Covert ECEF to ENU coordinates centered at given lat, lon 函数是否有效?我只是想了解这个函数是怎么回事!

谢谢。

void latLonToEcef(double lat, double lon, double alt, double *x, double *y, double *z)
{
double clat = cos(lat * DEGREES_TO_RADIANS);
double slat = sin(lat * DEGREES_TO_RADIANS);
double clon = cos(lon * DEGREES_TO_RADIANS);
double slon = sin(lon * DEGREES_TO_RADIANS);

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

*x = (N + alt) * clat * clon;
*y = (N + alt) * clat * slon;
*z = (N * (1.0 - WGS84_E * WGS84_E) + alt) * slat;
}
// Coverts ECEF to ENU coordinates centered at given lat, lon
void ecefToEnu(double lat, double lon, double x, double y, double z, double xr, double yr, double zr, double *e, double *n, double *u)
{
double clat = cos(lat * DEGREES_TO_RADIANS);
double slat = sin(lat * DEGREES_TO_RADIANS);
double clon = cos(lon * DEGREES_TO_RADIANS);
double slon = sin(lon * DEGREES_TO_RADIANS);
double dx = x - xr;
double dy = y - yr;
double dz = z - zr;

*e = -slon*dx + clon*dy;
*n = -slat*clon*dx - slat*slon*dy + clat*dz;
*u = clat*clon*dx + clat*slon*dy + slat*dz;
}

最佳答案

latLonToEcef 方法是 Geographic coordinate conversion - From geodetic to ECEF coordinates 中概述的算法的实现。维基百科页面:

geodetic to ecef

在哪里

Φ 是纬度,λ 是经度,

n-latitude

同样,ecefToEnu 方法是 ECEF to ENU 的一个实现算法:

ECEF to ENU

如果您需要进一步的引用资料,可以在该维基百科页面的底部找到它们。您也可以引用 World Geodetic System 1984规范。

关于objective-c - 将经纬度转换为ECEF坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478200/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com