Fórmula de haversine
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa.Fevereiro de 2008) ( |
Trigonometria |
---|
![]() |
Referência |
Leis e teoremas |
Cálculo |
Matemáticos |
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(θ) = sen2(θ/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 sen2.
Formulação
[editar | editar código-fonte]Definido o ângulo central Θ entre dois pontos quaisquer de uma esfera ser:
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:
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 é:
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):
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
[editar | editar código-fonte]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:
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 d/R 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:
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
[editar | editar código-fonte]- 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).
Ligações externas
[editar | editar código-fonte]- Implementações da fórmula de haversine em 91 linguagens de programação no rosettacode.org e em 17 linguagens de programação no codecodex.com
- Outras implementações em C++, C (MacOS), Pascal, Python, Ruby, JavaScript, PHP,Matlab, MySQL
- Exemplo de site que usa a fórmula de haversine para calcular distância entre as cidades do Brasil