Lat、Lon、Alt 値から ECEF (Earth-Centered) のような 3D システムへの変換について疑問に思っています。
これは次のように実装できます ( https://gist.github.com/1536054 ):
/*
* WGS84 ellipsoid constants Radius
*/
private static final double a = 6378137;
/*
* eccentricity
*/
private static final double e = 8.1819190842622e-2;
private static final double asq = Math.pow(a, 2);
private static final double esq = Math.pow(e, 2);
void convert(latitude,longitude,altitude){
double lat = Math.toRadians(latitude);
double lon = Math.toRadians(longitude);
double alt = altitude;
double N = a / Math.sqrt(1 - esq * Math.pow(Math.sin(lat), 2));
x = (N + alt) * Math.cos(lat) * Math.cos(lon);
y = (N + alt) * Math.cos(lat) * Math.sin(lon);
z = ((1 - esq) * N + alt) * Math.sin(lat);
}
私の意見では非常に奇妙に思えるのは、高度のわずかな変化が x、y、z に影響を与えるという事実です。たとえば、緯度/経度の値が同じで高度の値が異なる 2 つの GPS ポイントがある場合、3 つの異なる x、y、z 座標が得られます。
誰かがこの背後にある「アイデア」を説明できますか? これは私には非常に興味深く見えます...高度の値を下げたり上げたりすると、値の1つだけが変化する他の3Dシステムはありますか?
どうもありがとう!