Distanza tra due punti sapendo latitudine, longitudine e altitudine

enrico96l
Ciao a tutti,
come calcolo la distanza tra due punti conoscendo la loro latitudine, longitudine e altitudine?
In rete ho trovato svariate formule che considerano o meno il raggio della Terra, ma non tengono conto però dell'altitudine (che a me invece interesserebbe).
Grazie a chi mi aiuterà!

Risposte
professorkappa
Dipende da che distanza percorri sulla terra.
Tieni conto che un primo di latitudine sul meridiano e' pari a un miglio marino (1852m circa).
Lo stesso vale per l'equatore piu' o meno , quindi un primo di longitudine a una data longitudine sara' circa pari a un miglio, moltiplicato per il coseno della latitudine.
Se la distanza fra i due punti e' confrontabile con l'altitudine applchi Pitagora. Altrimenti, se i 2 punti sono lontani, la puoi trascurare.

Almeno cosi, di primo acchito

enrico96l
lat1Radians = lat1 * pi / 180;
lng1Radians = lng1 * pi / 180;
lat2Radians = lat2 * pi / 180;
lng2Radians = lng2 * pi / 180;

r = 6376.5 * 1000; //raggio della terra in metri
x1 = r *cos(lat1Radians) * cos(lng1Radians);
y1 = r * cos(lat1Radians) * sin(lng1Radians);
z1 = r * sin(lat1Radians);
x2 = r * cos(lat2Radians) * cos(lng2Radians);
y2 = r * cos(lat2Radians) * sin(lng2Radians);
z2 = r * sin(lat2Radians);

distanza = sqrt((x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2);

Quindi se non ho capito male tu indendi calcolare la distanza come sopra e poi usare Pitagora nuovamente considerando come cateti la distanza di sopra e la differenza tra le due altitudini?
Esiste un calcolo più accurato? Nella mia applicazione avrei bisogno di calcoli non troppo approssimativi...

professorkappa
Non si capisce nulla.
Poi non si capisce la distanza (se lineare o lungo la circonferenza.

Esempio stupido:

Punto di partenza: Latitudine 0 0'0" Longitudine 0 0' 0"
Punto di arrivo: Latitudine 1 0' 0" Longitudine 0 0' 0"

In pratica il punto si muove di un grado a Nord. La distanza percorsa (sulla terra) e' esattamente 60 miglia nautiche (108km circa).
Ora, se l'oggetto sta a 20m di altezza o anche a 200m, ha senso considerare questo dato?

enrico96l
Chiarisco: parto da due punti di coordinate (lat1, lng1, alt1), (lat2, lng2, alt2).
L'obbiettivo è calcolare la distanza (lineare) percorsa da un velivolo.
In quanto ho scritto sopra converto latitudine e longitudine da gradi in radianti. A questo punto passo da coordinate polari a cartesiane e calcolo la distanza.

Successivamente (essendo interessato alla distanza lineare) dovrei usare nuovamente pitagora:
alt = alt1 - alt2;
distanza_tot = sqrt(alt^2 + distanza^2);

Le distanze iniziali tra i due punti sono piccole (dell'ordine dei metri) quindi il contributo dell'altritudine non sarebbe trascurabile.

professorkappa
Ma il problema e' banale allora.
Se $phi$ e' la longitudine e $theta$ la latitudine in gradi e h l'altezza rispetto al suolo

$x=(R+h)costhetacosphi$
$y=(R+h)costheta sinphi$
$z=(R+h)sinphi$

E la distanza lineare e' $d=sqrt((x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2)$

enrico96l
Ti ringrazio, mi stavo solo complicando la vita con calcoli senza senso.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.