Calculadora de rumo inicial entre aeroportos
A calculadora de rumo inicial de voo encontra a direção para a qual uma aeronave aponta ao começar a rota mais curta sobre uma Terra esférica.
Executar grátis
Informe a latitude e a longitude do aeroporto de origem e do aeroporto de destino para receber o azimute direto em graus, no sentido horário a partir do norte verdadeiro. O cálculo é determinístico, dispensa banco de dados de aeroportos e ajuda no planejamento de rotas, na conferência de mapas, em exercícios de navegação e em testes de software.
O que o rumo inicial informa
O rumo inicial, também chamado de azimute direto, é a direção do deslocamento no ponto exato em que começa uma trajetória de círculo máximo. O ângulo retornado é medido no sentido horário a partir do norte verdadeiro: 0 graus indica norte, 90 indica leste, 180 indica sul e 270 indica oeste. Esse valor não é necessariamente o rumo que uma aeronave manteria durante toda a viagem. Uma rota de círculo máximo aparece curva na maioria dos mapas planos, portanto seu rumo geralmente muda de forma contínua depois da partida. A calculadora responde a uma pergunta precisa: se origem e destino forem tratados como pontos em uma esfera, em qual direção o caminho mais curto pela superfície deixa a origem? Forneça as coordenadas dos aeroportos em graus decimais com sinal. Latitudes norte e longitudes leste são positivas; latitudes sul e longitudes oeste são negativas. O resultado usa o norte verdadeiro, não o magnético, e não considera vento, aerovias, alinhamento de pistas, espaço aéreo restrito nem limitações operacionais do planejamento de voo.
Como funciona o cálculo de círculo máximo
O algoritmo converte as quatro coordenadas de graus para radianos, calcula a diferença de longitude e aplica a relação esférica padrão do azimute direto. Ele forma dois componentes a partir da relação trigonométrica entre a latitude de origem, a latitude de destino e a separação longitudinal, e depois os avalia com uma função arco-tangente de dois argumentos. Essa forma preserva o quadrante correto e evita perder informações de direção. O ângulo resultante com sinal é convertido novamente para graus e normalizado no intervalo de 0 inclusive a 360 exclusivo. O valor é arredondado para seis casas decimais, oferecendo um resultado estável e prático. Não é preciso informar distância nem raio da Terra, pois o rumo depende da geometria angular, e não do tamanho físico da esfera. O modelo esférico atende a roteamento geral, ensino, cartografia e verificações de consistência. Uma geodésica de alta precisão sobre uma Terra elipsoidal pode apresentar pequena diferença, sobretudo em rotas longas ou polares, e deve ser usada quando houver necessidade de precisão topográfica.
Como inserir coordenadas e entender casos extremos
Use o ponto de referência publicado de cada aeroporto ou outro ponto claramente definido quando seu fluxo de trabalho exigir. A latitude deve ficar entre -90 e 90 graus, e a longitude entre -180 e 180 graus. Mantenha a convenção das coordenadas consistente: a falta de um sinal de menos pode deslocar um aeroporto para outro hemisfério e gerar um rumo aparentemente plausível, porém incorreto. Origem e destino são entradas ordenadas; por isso, invertê-las normalmente não produz um rumo exatamente 180 graus diferente. A geometria do círculo máximo faz a rota de volta começar em outra tangente. Pontos coincidentes não têm direção de partida e são rejeitados. Pontos exatamente antípodas também são rejeitados, pois infinitos círculos máximos os conectam e não existe direção inicial única. Entradas quase antípodas são matematicamente sensíveis, então pequenas mudanças nas coordenadas podem alterar muito o rumo. Para automação, envie valores JSON numéricos, não strings, e armazene o valor retornado com sua referência ao norte verdadeiro. A API custa US$ 0,002 por cálculo; no navegador, você pode fazer verificações interativas rápidas.
Casos de uso
Conferir uma rota proposta entre aeroportos
Compare a direção de partida esperada com uma rota de círculo máximo no mapa antes de aprofundar o planejamento operacional.
Criar exercícios de aprendizagem aeronáutica
Monte exemplos reproduzíveis sobre azimute direto, coordenadas com sinal e mudança de rumo ao longo de um círculo máximo.
Testar software de navegação
Use coordenadas determinísticas de aeroportos e um resultado com seis casas decimais como testes de regressão para código de rotas ou mapas.
Perguntas frequentes
Este é um rumo magnético?
Não. O resultado é medido no sentido horário a partir do norte verdadeiro, sem aplicar variação magnética.
O rumo permanece constante durante o voo?
Em geral, não. Ele muda ao longo de uma rota de círculo máximo, exceto em casos especiais, como viagens pelo equador ou por um meridiano.
Por que o rumo inverso não difere exatamente 180 graus?
Inverter a viagem muda a direção tangente na nova origem; por isso, os dois rumos iniciais geralmente não são simples opostos.
Qual formato de coordenadas devo usar?
Use graus decimais com sinal e valores negativos para latitudes sul e longitudes oeste.
O que acontece se os dois aeroportos tiverem as mesmas coordenadas?
A solicitação é rejeitada porque um ponto não pode ter uma direção apontando para si mesmo.
Quanto custa um cálculo?
O preço da API é US$ 0,002 por solicitação. A versão para navegador é gratuita nesta página.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/travel/initial-flight-bearing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"origin_lat":51.4706,"origin_lon":-0.461941,"destination_lat":40.6413,"destination_lon":-73.7781}'const res = await fetch("https://api.kit.forhosting.com/travel/initial-flight-bearing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"origin_lat": 51.4706,
"origin_lon": -0.461941,
"destination_lat": 40.6413,
"destination_lon": -73.7781
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/initial-flight-bearing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"origin_lat": 51.4706,
"origin_lon": -0.461941,
"destination_lat": 40.6413,
"destination_lon": -73.7781
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/initial-flight-bearing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"origin_lat":51.4706,"origin_lon":-0.461941,"destination_lat":40.6413,"destination_lon":-73.7781}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"origin_lat":51.4706,"origin_lon":-0.461941,"destination_lat":40.6413,"destination_lon":-73.7781}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/initial-flight-bearing", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"origin_lat": 51.4706,
"origin_lon": -0.461941,
"destination_lat": 40.6413,
"destination_lon": -73.7781
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.initial_flight_bearing",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |