クレローの関係式による大圏航路の最高緯度計算
この計算ツールは、開始緯度と初期方位で定まる球面上の完全な大圏について、到達する最高緯度と最低緯度を求めます。クレローの関係式を直接使うため、経度の入力や経路上の点のサンプリングは不要です。航法の確認、経路範囲の把握、地図の検査、学習、測地ソフトウェアの独立検証に利用できます。値は球形地球モデルに基づく十進度で表し、北緯を正、南緯を負とします。
無料で実行
2つの値で大圏を指定します
開始緯度を十進度で入力し、真北から時計回りに測った初期方位を指定してください。緯度はマイナス90度から90度まででなければなりません。方位は有限の数値であればよく、ゼロ以上360度未満の通常の範囲に正規化されます。方位ゼロは北、90は東、180は南、270は西を示します。経度を入力しないのは意図的です。開始経度を変えると同じ幾何学的配置が地球の極軸の周りに回転するだけで、大圏が北や南へどこまで達するかは変わりません。結果には最高緯度、符号が反対の最低緯度、正規化後の方位、符号付きクレロー定数が含まれます。これらは開始地点から目的地までの前方区間だけでなく、完全な大圏全体の限界です。有限の航程を検討する場合は、両方の頂点を通過すると判断する前に、終点と進行方向を大圏全体の限界と照合してください。角度の入力と出力はすべて度数なので、航法資料、地図、別の経路計算にもそのまま使用できます。
クレローの関係式から限界を求めます
球面上の大圏に沿って移動するとき、緯度の余弦と針路の正弦の積は一定になる、というのがクレローの関係式です。本ツールは、まず開始地点と指定された初期方位からこの定数を評価します。北側または南側の頂点では、大圏は一時的に真東または真西へ向かうため、針路の正弦の絶対値は1になります。したがって、頂点緯度の余弦は開始時のクレロー定数の絶対値と等しくなります。その逆余弦を取ると、ゼロから90度までの非負の限界緯度が得られます。大圏の平面は球の中心を通るので、反対側の半球では同じ大きさの負の緯度にも達します。赤道上で東西へ進む場合、経路自体が赤道なので限界はゼロです。子午線方向の大圏は両極を通り、プラス90度とマイナス90度に達します。実装では、浮動小数点の微小なずれを防ぐため、逆余弦の前に値を有効範囲へ収め、安定した丸めを行います。経路を一定間隔でたどったり、標本点から頂点を推定したりはしません。
結果と球面モデルの前提をご確認ください
返される値は、球面上の大圏に対する理論的な緯度の極値です。航法教育、航空・海上計画の概算、地図の品質確認、クレローの関係式を正確に再現すべきソフトウェア試験に適しています。楕円体上の測地線が持つ極値とは区別してください。WGS 84のような実際の地球基準系は扁平率を表現するため、運用上の精度が重要な場合は別の手法が必要です。また、実際の乗り物は、風、海流、空域制限、航路分離方式、ウェイポイント間の区間などに従い、連続した1本の大圏を進まないことがあります。この結果は明確な幾何学的範囲として使い、共有時にはモデルを明記してください。符号付きクレロー定数により計算を検証できます。符号は初期方位の東西成分を表し、絶対値が緯度限界を決めます。東西成分を反転すると定数の符号は変わりますが、両極値は変わりません。南半球から出発しても最高緯度が南に留まるとは限らず、赤道以外の完全な大圏は両半球を通ります。自動呼び出しの基本料金は$0.002です。アルゴリズムは決定的で、ネットワークを使わず、同じ入力には同じ結果を返します。
活用例
経路の緯度範囲を確認します
詳細な経路計画の前に、完全な球面大圏が達する北端と南端を見積もれます。
航法ソフトウェアを検証します
別の実装が出した頂点を、クレローの関係式による直接的で決定的な計算と比較できます。
球面航法の学習に使います
数値的なサンプリングなしで、開始緯度と初期方位が対称な限界を決める仕組みを示せます。
よくある質問
なぜ経度は不要なのですか?
経度を変えても大圏が極軸の周りに回転するだけで、最高緯度と最低緯度は変化しないためです。
最高緯度と最低緯度は常に対称ですか?
はい。大圏は球とその中心を通る平面との交線なので、両極値は絶対値が等しく符号が反対です。
結果は前方の航程だけに適用されますか?
いいえ。完全な大圏全体を表します。有限の区間は、どちらかの頂点へ達する前に終わる場合があります。
WGS 84楕円体を使用していますか?
いいえ。理想的な球形地球とクレローの関係式を使います。差が重要な場合は楕円体測地線の手法をご利用ください。
APIリクエストの料金はいくらですか?
基本料金は1リクエストあたり$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/great-circle-max-latitude \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude":40,"bearing":60}'const res = await fetch("https://api.kit.forhosting.com/geo/great-circle-max-latitude", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"latitude": 40,
"bearing": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/great-circle-max-latitude",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"latitude": 40,
"bearing": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/great-circle-max-latitude", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"latitude":40,"bearing":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"latitude":40,"bearing":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/great-circle-max-latitude", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"latitude": 40,
"bearing": 60
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.great_circle_max_latitude",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |