Sapendo che la distanza tra due punti P e Q sulla sfera unitaria è data dall'arcocoseno del prodotto scalare tra P e Q, calcola la distanza tra Adelaide (34° 56'S, 138° 36'E) e Washington (38° 55'N, 77° 00'W), tenendo conto che il raggio terrestre è di 6370±10 km.

Facciamo i calcoli del prodotto scalare (dot product) tra P e Q con R, in cui è indicato drop(P %*% Q). Un esempio:

P <- c(1,0,0); Q <- c(0,1,0); acos(drop(P %*% Q))
# 1.570796

Questa è la distanza tra i punti (1,0,0) e (0,1,0) della sfera unitaria, pari ad 1/4 della lunghezza del cerchio di raggio 1.

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 <- -(34+56/60); A1 <- 138+36/60
P <- c(X(B1,A1),Y(B1,A1),Z(B1))
B2 <- 38+55/60; A2 <- -77
Q <- c(X(B2,A2),Y(B2,A2),Z(B2))
R <- 6370
acos(drop(P %*% Q))*R
# 16837.39
## Concludo (tenendo conto dell'appross. del raggio
## terrestre) che la distanza è circa 16840 km.
 

Come fare tutto facilmente con questo script online:

Arrotondo:  16840 km.

Confrontiamo il valore con quello che ci fornisce WolframAlpha:
from Adelaide to Washington
16840 km     OK

Per altri commenti: lo spazio tridimensionale neGli Oggetti Matematici.