球面余弦定理による辺の計算ツール
この球面余弦定理による辺の計算ツールは、2つの辺の弧とその間の角が分かっているときに、球面三角形の未知の第3辺を求めます。3つの測定値を度数で入力すると、結果も度数の角距離として返されます。平面の余弦定理では誤差が生じる航法、測地学、天文学、幾何学の問題に適しています。計算は決定的で外部データを使用せず、標準的な球面余弦定理を適用します。
無料で実行
辺は直線距離ではなく角距離として入力してください
球面三角形の辺は大円の一部なので、既知の各辺を球の中心角として度数で入力してください。第1の弧をside_a_degrees、第2の弧をside_b_degreesに指定します。どちらも0より大きく180度未満でなければなりません。資料が表面距離を示している場合は、先に角距離へ変換します。距離を球の半径で割るとラジアンになり、それを度数へ変換できます。両方の辺には同じ半径を使用してください。地球では、平均球を仮定するか別のモデルを使うかによって半径が異なります。本ツールは球面幾何学を扱うもので、楕円体測地線の計算ではありません。緯度や経度を受け取らず、半径も推定しません。結果を距離に戻す場合は、ラジアンへ変換してから同じ半径を掛けてください。
2つの既知辺に挟まれた角を指定してください
挟角とは、既知の2つの弧が交わる頂点の内角です。初期方位、各辺を表す中心角、または三角形の別の頂点角ではありません。included_angle_degreesに0より大きく180度未満の値を指定してください。ツールは3つの入力をラジアンへ変換し、cos(c) = cos(a) cos(b) + sin(a) sin(b) cos(C)を評価します。次にarccosでcを求め、短い方の大円弧を度数で返します。浮動小数点演算では、理論上有効なコサインがわずかにマイナス1から1の範囲外になる場合があるため、arccosの前に中間値を範囲内へ制限します。これは数値上の安全策であり、式を変更するものではありません。安定したJSONを得るため結果は小数第12位に丸めますが、入力観測そのものの精度を高めるわけではありません。
球面モデルの範囲で結果を解釈してください
返されるside_c_degreesは0度から180度までの角距離です。通常の非退化な入力では、指定した挟角の向かい側にある短い方の第3大円辺を表します。別の球面三角法の計算にそのまま使うことも、距離 = 半径 × side_c_radiansによって表面距離へ変換することもできます。ただし、高精度な地球上の測地線として無条件に扱わないでください。地球は完全な球ではなく、長距離経路や測量では楕円体による解法が必要になることがあります。本ツールは教科書の球面三角形、概算の全球航法、天球、および明示的な球面モデルに適しています。球面の辺は角であり曲率が関係するため、平面の余弦定理とも異なります。非常に小さい球面三角形では平面の場合に近づきます。不正な境界値、欠損値、文字列、NaN、無限大は、誤解を招く結果を避けるため拒否されます。
活用例
大円航法の演習
球面地球モデルで2つの大円経路とその間の角が分かる場合に、残りの弧を求めます。
天球の幾何学
空の方向や座標極で構成される球面三角形について、第3の角距離を計算します。
測地学と学習
球面三角法の課題を確認したり、詳細な楕円体方式を適用する前の明確な基準値を得たりできます。
よくある質問
計算結果には何が含まれますか?
第3辺の大円弧角を度数で示すside_c_degreesと、検証済みの入力値が返されます。
APIリクエストの料金はいくらですか?
APIは1リクエストあたり$0.002です。ブラウザー上の計算ツールは無料でご利用いただけます。
辺をキロメートルやマイルで入力できますか?
できません。まず球の半径を用いて各距離を角距離へ変換し、その弧を度数で入力してください。
挟角とはどの角ですか?
辺aと辺bが交わる頂点の内角で、未知の辺cの向かい側にある角です。
地球楕円体上の測地線を計算しますか?
いいえ。正確な球面公式を使います。高精度な航法や測量には楕円体モデルが必要な場合があります。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/trig/spherical-law-of-cosines-side \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"side_a_degrees":60,"side_b_degrees":80,"included_angle_degrees":70}'const res = await fetch("https://api.kit.forhosting.com/trig/spherical-law-of-cosines-side", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"side_a_degrees": 60,
"side_b_degrees": 80,
"included_angle_degrees": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/spherical-law-of-cosines-side",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"side_a_degrees": 60,
"side_b_degrees": 80,
"included_angle_degrees": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/spherical-law-of-cosines-side", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"side_a_degrees":60,"side_b_degrees":80,"included_angle_degrees":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"side_a_degrees":60,"side_b_degrees":80,"included_angle_degrees":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/spherical-law-of-cosines-side", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"side_a_degrees": 60,
"side_b_degrees": 80,
"included_angle_degrees": 70
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.spherical_law_of_cosines_side",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |