Fórmulas de Vincenty

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

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.

Algoritmo[editar]

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[editar]

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[editar]

Direct and Inverse Solutions of Geodesics on the Ellipsoid with application of nested equations. Publicación original de Vincenty.

Enlaces externos[editar]

Código fuente disponible (licencia LGPL) por Chris Veness