- Fórmulas de Vincenty
-
Las fórmulas de Vincenty forman un algoritmo muy eficiente para el cálculo de la distancia entre dos puntos de la superficie de un elipsoide de revolución. Son utilizadas ampliamente en geodesia para calcular distancias sobre la superficie de la Tierra debido a que requiere un número de operaciones bajo a pesar de dar una precisión de 0.5mm (0.000015″), mucho mejor que el método tradicional de la fórmula del haverseno usada en trigonometría esférica. El algorithmo fue publicado por Thaddeus Vincenty en 1975.
Usa un método iterativo.
Contenido
Algoritmo
El siguiente algoritmo expresa las fórmulas de una forma sencilla de calcular:
a, b = semiejes mayor y menor del elipsoide φ1, φ2 = latitud geodética L = diferencia en longitud f = achatamiento del elipsoide (a−b)/a U1 = atan((1−f).tanφ1) (U is ‘latitud reducida’) U2 = atan((1−f).tanφ2) λ = L, λ′ = 2π do while abs(λ−λ′) > 10-12 (implica un error < 0.06mm) { sinσ = √[ (cosU2.sinλ)² + (cosU1.sinU2 − sinU1.cosU2.cosλ)² ] cosσ = sinU1.sinU2 + cosU1.cosU2.cosλ σ = atan2(sinσ, cosσ) sinα = cosU1.cosU2.sinλ / sinσ cos²α = 1 − sin²α (trig identity; §6) cos2σm = cosσ − 2.sinU1.sinU2/cos²α C = f/16.cos²α.[4+f.(4−3.cos²α)] λ′ = λ λ = L + (1−C).f.sinα.{σ+C.sinσ.[cos2σm+C.cosσ.(−1+2.cos²2σm)]} (úsese cos2σm=0 si se está a lo largo del ecuador) } u² = cos²α.(a²−b²)/b² A = 1+u²/16384.{4096+u².[−768+u².(320−175.u²)]} B = u²/1024.{256+u².[−128+u².(74−47.u²)]} Δσ = B.sinσ.{cos2σm+B/4.[cosσ.(−1+2.cos²2σm) − B/6.cos2σm.(−3+4.sin²σ).(−3+4.cos²2σm)]} s = b.A.(σ−Δσ) α1 = atan2(cosU2.sinλ, cosU1.sinU2 − sinU1.cosU2.cosλ) α2 = atan2(cosU1.sinλ, −sinU1.cosU2 + cosU1.sinU2.cosλ)
Donde: *s es la distancia (mismas unidades que a, b) *α1 es el azimuth inicial *α2 es el azimut final (en dirección p1→p2)
La fórmula puede no tener solución para dos puntos casi antipodales. Limitar el número de iteraciones para evitar este caso.
El elipsoide más extendido es el WGS84, para el cual:
a = 6 378 137 m (±2 m) b = 6 356 752.3142 m f = 1 / 298.257223563
Ejemplo para prueba
Caso de prueba extraído de Geoscience Australia, usando WGS-84:
Flinders Peak 37°57′03.72030″S, 144°25′29.52440″E Buninyong 37°39′10.15610″S, 143°55′35.38390″E Resultado: s 54.972,271 m α1 306°52′05.37″ α2 127°10′25.07″ (≡ 307°10′25.07″ p1→p2)
Referencias
Enlaces externos
Wikimedia foundation. 2010.