allora... una volta feci un programmino matlab per il calcolo della distanza di due punti sul globo, purtroppo andato perso con una formattazione

.
Ero partito da queste considerazioni teoriche:
la terra è approssimata ad una sfera perfetta e i punti su di essa possono essere identificati con la terna di coordinate polari (raggio, angolo Θ, angolo φ) come in figura 1:
Θ e φ non sono direttamente latitudine e longitudine terrestri, ma possono essere ricavati facilmente da queste convertendo i gradi in radianti e passando al complementare per la latitudine e ricordandosi di mettere +/- per longitudine Est/Ovest.
A e B sono i punti fra cui vogliamo calcolare la distanza, qui sono espressi in coordinate polari, convertiamole in cartesiane:
ora A e B rappresentano due vettori in uno spazio cartesiano, come da figura 2:

noi vogliamo calcolare d che è l'arco di raggio R sotteso dall'angolo α (alpha) compreso tra i due vettori, infatti d è proprio la distanza tra i punti A e B su una superfice sferica. Come fare? dalla geometria so che
d/R=α cioè dividendo l'arco per il raggio ottengo l'angolo (in radianti) che lo sottende, d è l'incognita, R è noto, alpha lo devo trovare, come?
Usiamo il prodotto scalare di due vettori, esso è definito sia come prodotto dei moduli dei vettori (nel nostro caso R) per il coseno dell'angolo fra essi compreso, sia come somma dei prodotti delle componenti omologhe dei dei due vettori:

unendo le due definizioni, trovo alpha e finalmente d:
questa più o meno la teoria (descritta barbaramente) poi i calcoli meglio farli fare ad un calcolatore

.
P.s. perdonate la grafia

.