Cra*_*azy 7 gps objective-c augmented-reality earthdistance
我正在研究pArk Apple示例代码,以及它是如何工作的.谁知道如何将纬度和经度转换为ECEF坐标,并将Covert ECEF转换为以给定lat为中心的ENU坐标,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;
}
Run Code Online (Sandbox Code Playgroud)
Rob*_*Rob 10
该latLonToEcef方法是地理坐标转换中概述的算法的实现- 从大地测量到ECEF坐标维基百科页面:

哪里
Φ是纬度,λ是经度,和

同样,该ecefToEnu方法是ECEF到ENU算法的实现:

如果您需要进一步的参考,可以在维基百科页面的底部找到它们.您也可以参考世界大地测量系统1984规范.
| 归档时间: |
|
| 查看次数: |
11479 次 |
| 最近记录: |