2013-10-20 3 views
5

pArk Apple 샘플 코드 및 작동 방식을 연구 중입니다. 위도와 경도를 ECEF 좌표로 변환하는 방법을 알고있는 사람은 누구입니까? 및 지정된 위도를 중심으로하는 ENU 좌표로 은밀 ECEF가 작동합니까? 이 함수에서 무슨 일이 벌어지고 있는지 이해하고 싶습니다.위도 및 경도를 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 방법은 위키 페이지에 설명 된 알고리즘의 구현 :

Φ및 람다 위도

geodetic to ecef

; 경도이며,

n-latitude

마찬가지로 ecefToEnu 방법은 ECEF to ENU 알고리즘을 구현 한 것입니다 : 당신이 더 참조를해야하는 경우

ECEF to ENU

, 그들은 그 하단에서 찾을 수 있습니다은 위키피디아 페이지. World Geodetic System 1984 사양을 참조 할 수도 있습니다.

관련 문제