Mi chiedo sulla trasformazione da Lat, Lon, Alt Values a 3D-Systems come ECEF (Earth-Centered).Longitudine, latitudine, altitudine a 3D-Sistema di coordinate cartesiane
Ciò può essere implementato come segue (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);
}
Che a mio parere sembra molto strano è il fatto, che un piccolo cambiamento di altitudine, colpisce x, y, z, dove avrei aspettati che incida solo su un asse. Ad esempio, se ho due punti GPS, che hanno gli stessi valori lat/lon ma diversi valori di altitudine, otterrò 3 diverse coordinate x, y, z.
Qualcuno può spiegare l'idea dietro questo? Questo mi sembra molto curioso ... Esiste un altro sistema 3D, in cui solo uno dei valori sta cambiando, quando ho più o meno alto il mio valore di altitudine?
Grazie mille!
ah, questo è esattamente quello che stavo cercando;) – Frame91