# Fórmula de haversine

A fórmula de haversine é uma importante equação usada em navegação, fornecendo distâncias entre dois pontos de uma esfera a partir de suas latitudes e longitudes. É um caso especial de uma fórmula mais geral de trigonometria esférica, a lei dos haversines, que relaciona os lados e ângulos de um triângulo contido em uma superfície esférica.
O nome haversine foi criado em 1835 pelo matemático e astrônomo James Inman. Estes nomes se devem ao fato de que são escritos nos termos da função haversine, dado por hav(θ) = sen$^2$(θ2). As fórmulas podem ser igualmente escritas em termos de qualquer múltiplo do haversine, como a antiga função versine (duas vezes o haversine). Antes do uso de computadores, a eliminação da divisão e multiplicação por fatores de dois se provou suficientemente conveniente que tabelas de valores do haversine e logaritmos foram incluídos no século XIX e começo do século XX em livros de navegação e trigonometria. Atualmente a fórmula de haversine é também conveniente por não ter coeficiente na frente da função sen$^2$.

## Formulação

Definido o ângulo central Θ entre dois pontos quaisquer de uma esfera ser:
    $\Theta ={\frac {d}{r}}$
onde:
* d é a distância entre os dois pontos ao longo de um círculo máximo da esfera (ver ortodromia),
* r é o raio da esfera.
A fórmula de haversine permite que o haversine de Θ (ou seja, o hav(Θ)) seja calculado direto pela latitude e longitude dos dois pontos:
    $\operatorname {hav} \left(\Theta \right)=\operatorname {hav} \left(\varphi _{2}-\varphi _{1}\right)+\cos \left(\varphi _{1}\right)\cos \left(\varphi _{2}\right)\operatorname {hav} \left(\lambda _{2}-\lambda _{1}\right)$
onde:
* φ$_1$, φ$_2$ são a latitude do ponto 1 e a latitude do ponto 2 (em radianos),
* λ$_1$, λ$_2$ são a longitude do ponto 1 e longitude do ponto 2 (em radianos).
Finalmente, a função haversine hav(Θ), aplicada acima para ambos o ângulo central Θ e a diferenças na latitude e longitude é:
    $\operatorname {hav} (\theta )=\operatorname {sen} ^{2}\left({\frac {\theta }{2}}\right)={\frac {1-\cos(\theta )}{2}}$
A função haversine computa metade da versine do ângulo θ.
Para resolver pela distância d, aplica-se o arc versine (haversine inverso) para h = hav(Θ) ou usa-se a função arco seno (inverso do seno):
    $d=r\operatorname {archav} (h)=2r\arcsin \left({\sqrt {h}}\right)$
Quando usamos estas fórmulas, devemos ter cuidado de assegurar que h não seja maior que 1. h só se aproxima de 1 pelo ponto antipodal (em lados opostos da esfera)—nesta região um número relativamente grande de erros tende a ocorrer na fórmula quando uma precisão finita é usada. Como d é maior (aproximando-se de πR, metade da circunferência) um pequeno erro não causa preocupação nesse caso não usual (embora existam outras formulas da distância do Círculo máximo que evitam esse problema). A fórmula acima é algumas vezes escrita em termos da função arco tangente, mas sofre problemas similares quando fica próxima de h = 1.
Como descrito abaixo, uma fórmula similar pode ser escrita em termos de cossenos (algumas vezes chamada de lei esférica dos cossenos, não confundir com a lei dos cossenos da geometria plana) ao invés de haversines, mas sofre problemas de precisão para casos comuns de pequenas distâncias e ângulos o que reduz seu uso seriamente. Como a formula do haversine usa senos, ela evita esse problema.
Esta fórmula é só uma aproximação quando aplicada à Terra, porque esta não é uma esfera perfeita: seu raio varia de 6356,752 km nos pólos até 6378,137 km no equador. O raio de curvatura de uma linha norte-sul na superfície da terra é 1% maior nos polos (≈6399,594 km) que no equador (≈6335,439 km)—então a fórmula de haversine e lei dos cossenos não podem se garantir corretas a melhor que 0,5%.

## A lei dos haversines

Dada uma esfera unitária, um "triângulo" em sua superfície é definido pelo Círculo máximo conectando três pontos u, v, and w na esfera. Se o comprimento destes três lados forem a (de u até v), b (de u até w), and c (de v até w), e o ângulo do canto oposto c é C, então a lei dos haversines estabelece que:
    $\operatorname {hav} (c)=\operatorname {hav} (a-b)+\operatorname {sen}(a)\operatorname {sen}(b)\,\operatorname {hav} (C)$
Sendo que é uma esfera unitária, os comprimentos de a, b, e c são simplesmente iguais aos ângulos (em radianos) subentendidos por estes lados do centro da esfera (para uma esfera não unitária, cada um desses comprimentos de arco é igual ao seu ângulo central multiplicado pelo raio R da esfera).
Para se obter a fórmula haversine da seção previa dessa lei, consideramos um caso especial quando u é o pólo norte geográfico, enquanto v e w são dois pontos em que a separação d é para se determinar. Neste caso, a e b são π2 − φ$_{1,2}$ (ou seja, as co-latitudes), C é separação de longitude λ$_2$ − λ$_1$, e c é o dR desejado. Nota-se que sin(π2 − φ) = cos(φ), a fórmula de haversine segue imediatamente.
Para derivar a lei dos haversines, devemos começar com a lei esférica dos cossenos:
    $\cos(c)=\cos(a)\cos(b)+\operatorname {sen}(a)\operatorname {sen}(b)\cos(C)\,$
Como mencionado acima, esta fórmula é uma forma contra-indicada para resolver para c quando c é pequeno. Em vez disso, substituímos a igualdade que cos(θ) = 1 − 2 hav(θ), e também empregamos a igualdade trigonométrica adição e subtração cos(a − b) = cos(a) cos(b) + sen(a) sen(b) para obter a lei dos haversines acima.

## Referências gerais

* U. S. Census Bureau Geographic Information Systems FAQ, What is the best way to calculate the distance between 2 points? (broken link; content has been mirrored here)
* R. W. Sinnott, "Virtues of the Haversine", Sky and Telescope 68 (2), 159 (1984).
* «Deriving the haversine formula» , Ask Dr. Math (Apr. 20–21, 1999).
* Romuald Ireneus 'Scibor-Marchocki, Spherical trigonometry, Elementary-Geometry Trigonometry web page (1997).
* W. Gellert, S. Gottwald, M. Hellwich, H. Kästner, and H. Küstner, The VNR Concise Encyclopedia of Mathematics, 2nd ed., ch. 12 (Van Nostrand Reinhold: New York, 1989).