Roma: 41 53' 24"N, 12 30'E;  New York: 40 39' 51"N, 73 56' 19"W.  La terra è approssimabile con una sfera di diametro (127.5±0.5)·1e5 m.  Qual è la distanza, lungo la superficie terrestre, di Roma da New York?  L'esercizio non è facile (conviene rappresentare i punti vettorialmente e fare il loro prodotto scalare). Se non ci riesci prova a fare una stima. Controlla la risposta con WolframAlpha (distance from Rome to New York).

Primo metodo

 

    Ricordiamo che i punti dello spazio sono descrivibili anche mediante coordinate sferiche: si prende l'asse z come asse polare, si considera come ρ la distanza dall'origine e si prendono come altre due coordinate la longitudine (o azimut), in figura indicata con θ, e la colatitudine (ossia il complementare della latitudine), indicata con φ:  x = ρ·sin(φ)·cos(θ), y = ρ·sin(φ)·sin(θ), z = ρ·cos(φ).  Siano
P = (ρ·sin(φ)·cos(θ),  ρ·sin(φ)·sin(θ),  ρ·cos(φ)),
P' = (ρ·sin(φ')·cos(θ'), ρ·sin(φ')·sin(θ'), ρ·cos(φ')).
    Il prodotto interno tra OP e OP' pensati come vettori deve essere uguale a ρ²cos(α) dove α è l'angolo tra i due vettori.  Eguagliando questo valore a quello che ottendo facendo il prototto interno ottengo la formuletta per il calcolo. La distanza di P da P' sulla sfera è:
ρ·arccos(cos(θ−θ')·sin(φ)·sin(φ') + cos(φ)·cos(φ')).
Nel nostro caso:

f <- (90-(41+53/60+24/3600))*pi/180
t <- (12+30/60)*pi/180
f1 <- (90-(40+39/60+51/3600))*pi/180
t1 <- -(73+56/60+19/3600)*pi/180
# esprimendoci in 10^5 m ed indicando con (R1,R2) l'intervallo
# di indeterminazione per il raggio
R1 <- 127/2; R2 <- 128/2
d1 <- ( acos(cos(t-t1)*sin(f)*sin(f1) + cos(f)*cos(f1)) )*R1
d2 <- ( acos(cos(t-t1)*sin(f)*sin(f1) + cos(f)*cos(f1)) )*R2
c(d1,d2)
# 68.66352 69.20418
# Possiamo assumere come distanza 69·10^5 m = 69·100 km
Con WolframAlpha ottengo 6907 km.
Con una stima grossolana, tenendo conto che le due longitudini differiscono di circa 85°, che le latitudini sono quasi uguali e che il raggio a quella latitudine è circa i 3/4 del raggio terrestre, posso fare:
circ <- 127*3/4/100*pi; dist <- circ*85/360; dist
# 70.65311

OK

Secondo metodo ( lo spazio tridimensionale neGli Oggetti Matematici)

So che la distanza tra due punti P e Q sulla sfera unitaria è data dall'arcocoseno del prodotto scalare tra P e Q.

Vediamo come trasformare le coordinate geografiche nelle coordinate cartesiane, ovvero come passare, riferendosi al punto rosso della figura a lato, da α e β ad x, y e z.

s = cos(β), z = sin(β), x = s*cos(α), y = s*sin(α)

Ecco i calcoli, fatti con R.

 

X <- function(B,A) cos(B/180*pi)*cos(A/180*pi)
Y <- function(B,A) cos(B/180*pi)*sin(A/180*pi)
Z <- function(B) sin(B/180*pi)
B1 <- 41+53/60+24/3600; A1 <- -(12+30/60)
P <- c(X(B1,A1),Y(B1,A1),Z(B1))
B2 <- 40+39/60+51/3600; A2 <- 73+56/60+19/3600
Q <- c(X(B2,A2),Y(B2,A2),Z(B2))
R <- 12750/2
acos(drop(P %*% Q))*R
# 6893.385
## Tenendo conto dell'approssimazione del raggio terrestre, concludo che
## la distanza è di 6895 km, con una precisione di una quindicina di km.

Terzo metodo

In alternativa si può ricorrere a questo semplice script:



Arrotondo a 6890 km, tenendo conto che sarebbe meglio prendere l'arrotondamento 6900 km, tenendo conto del modo approssimato con cui sono valutate le grandezze in gioco.