Esto puede lograrse con la solución inversa de Thaddeus Vincenty o con la fórmula de la distancia haversina. Si la simplicidad y la rapidez del cálculo son más importantes que la precisión, utilice la fórmula de la distancia haversina. En caso contrario, utilice la solución inversa de Vincenty.
Solución inversa de Vincenty
$\alpha$ longitud del semieje mayor del elipsoide
$\beta$ longitud del semieje menor del elipsoide
$\gamma=\frac{1}{\alpha}(\alpha-\beta)$ aplanamiento del elipsoide
$x_1, x_2$ latitud de los puntos en radianes
$y_1, y_2$ longitud de los puntos en radianes
$\psi=y_2-y_1$ diferencia de longitud
$\lambda=\psi$ primera y actual aproximación
$\lambda_0$ aproximación anterior
A continuación se presentan algunas optimizaciones trigonométricas, para $k=1,2$
\[ \tan\omega_k = (1- \gamma ) \cdot\tan x_k \ ~ -]
\[ \cos\omega_k = \frac {1}{ \sqrt {1+ \tan ^2 \omega_k }} \]
\[ \sin\omega_k = \tan\omega_k\cdot\cos\omega_k \]
Ahora iteramos los siguientes cálculos hasta $\lambda-\lambda_0 > 10^{-12}$ mm
\[ \sin\phi = \sqrt {( \cos\omega_2\cdot\sin\lambda )^2+( \cos\omega_1\cdot\sin\omega_2 - \sin\omega_1\cdot\cos\omega_2\cdot\cos\lambda )^2} \] \[ \cos\phi = \sin\omega_1\cdot\sin\omega_2 + \cos\omega_1\cdot\cos\omega_2\cdot\cos\lambda \] \[ \phi = \arctan\left ( \frac { \sin\phi }{ \cos\phi } \right ) \] \[ \sin z = \frac { \cos\omega_1\cdot\cos\omega_2\cdot\sin\lambda }{ \sin\phi } \] \[ \cos ^2 z = 1- \sin ^2 z \] \[ \cos 2 \phi_m = \cos\phi - \frac {2 \sin\omega_1\cdot\sin\omega_2 }{ \cos ^2 z} \] \[ \delta = \frac { \gamma }{16} \cos ^2 z \cdot (4+ \gamma\cdot (4-3 \cos ^2 z)) \] \[ \lambda_0 = \lambda \] \[ \zeta = \phi + \delta\cdot\sin\phi\cdot ( \cos 2 \phi_m + \delta\cdot\cos\phi\cdot (-1+2 \cos ^2 2 \phi_m )) \] \[ \lambda = \psi +(1- \delta ) \cdot\gamma\cdot\zeta\cdot\sin z \]
Una vez $\lambda$ converge, calcula lo siguiente \[ \mu ^2= \frac { \cos ^2 z \cdot ( \alpha ^2- \beta ^2)}{ \beta ^2} \] \[ A=1+ \frac { \mu ^2}{16384} \left (4096+ \mu ^2(-768+ \mu ^2(320-175 \mu ^2)) \right ) \] \[ B= \frac { \mu ^2}{1024} \left (256+ \mu ^2(-128+ \mu ^2(74-47 \mu ^2)) \right ) \] \[ C= \frac {B}{6} \cos 2 \phi_m (4 \sin ^2 \phi -3)(4 \cos ^2 2 \phi_m -3)\] \[ D= \cos 2 \phi_m + \frac {B}{4} \left ( \cos\phi (2 \cos ^2 2 \phi_m -1)-C \right ) \] \[ \Delta\phi =B \cdot D \cdot\sin\phi \] \N -[ d = A \cdot \beta\cdot ( \phi - \Delta\phi ) \]
Por último, ahora tenemos $d$ que es la distancia elipsoidal entre $(x_1, y_1)$ y $(x_2, y_2)$ en metros. Para convertir la distancia $d$ a millas, sólo hay que multiplicar $d$ por $0.000621371$ . Lo que le falta a este algoritmo en cuanto a velocidad y sencillez, lo compensa con su precisión de 0,5 mm.
Fórmula de la distancia de Haversine
$x_1, x_2$ latitud de los puntos en radianes
$y_1, y_2$ longitud de los puntos en radianes
$R$ radio de la tierra en metros
\[ \alpha = \sin ^2 \left ( \frac {x_2-x_1}{2} \right )+ \cos x_1 \cdot\cos x_2 \cdot\sin ^2 \left ( \frac {y_2-y_1}{2} \right ) \] \[ \beta = 2 \cdot { \rm atan2}( \sqrt { \alpha }, \sqrt {1- \alpha }) \] \N -[ d = R \cdot\beta \] Ahora tenemos fácilmente $d$ la distancia elipsoidal entre $(x_1, x_2)$ y $(y_1, y_2)$ en metros. De nuevo para convertir la distancia $d$ a millas, sólo hay que multiplicar $d$ por $0.000621371$ .