2013-10-20 54 views
5

私はpArkアップルのサンプルコードとそれがどのように動作しているか調べています。 緯度と経度をECEF座標に変換する方法は誰でも知ることができます。 と指定されたlatを中心とするENU座標に変換することはできません。 私はこの機能で何が起こっているのか理解したいだけです!緯度と経度をECEF座標系に変換する

ありがとうございました。

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; 
} 

答えて

8

latLonToEcef方法は Wikipediaのページで概説したアルゴリズムの実装である:

Φは、&ラムダ緯度ある

geodetic to ecef

が経度である、と

n-latitude

同様にecefToEnu方法はECEF to ENUアルゴリズムの実装です:

ECEF to ENU

あなたがさらに参照が必要な場合、彼らはそれの下で見つけることができますウィキペディアのページ。 World Geodetic System 1984仕様を参照することもできます。

関連する問題