極座標の2点の中点計算ツール
この極座標中点計算ツールは、半径と角度で表された2つの位置のちょうど中間にある点を求めます。各極座標点を直交座標へ変換し、2つの横座標と2つの縦座標をそれぞれ平均してから、その平均値を再び極座標へ変換します。結果は両方の座標形式で得られるため、確認にも再利用にも便利です。計算全体で度またはラジアンのどちらかを一度選択してください。出力される角度にも同じ単位が使用されます。
無料で実行
同じ角度単位で2つの極座標点を入力します
最初の点をradius_1とangle_1で、次の点をradius_2とangle_2で指定します。どちらの半径も0以上である必要がありますが、角度には正の値、負の値、または1回転を超える値を使用できます。360度の円として測る場合は度を、2πラジアンの円として測る場合はラジアンを選択してください。同じ選択が両方の入力に適用されるため、単位が曖昧に混在することはありません。極座標の半径は原点からの距離を表します。そのため、負の半径を半回転ずらした方向として暗黙に解釈せず、入力エラーとして扱います。一方、角度は入力されたまま受け付けます。三角関数では、同じ終辺を持つ角度が同じ方向として扱われるためです。たとえば、30度、390度、-330度はいずれも同じ半直線を示します。点の半径が0の場合、指定した角度は位置に影響しませんが、入力仕様を明確に保つため、有限の数値を指定する必要があります。
直交座標で平均する必要がある理由を確認します
幾何学的な中点は位置を平均して求めるものであり、極座標の半径と角度を別々に平均して求めるものではありません。極座標は線形ではありません。角度は1回転の終端で先頭へ戻り、半径が変わると、その方向が実際の位置へ与える影響も変わります。このツールは、まず各点にx = r cos θとy = r sin θを適用します。続いて、中点の座標をx = (x₁ + x₂) / 2およびy = (y₁ + y₂) / 2として計算します。この線形平均を行った後で初めて、原点からのピタゴラス距離によって中点の半径を求め、2引数の逆正接によって中点の角度を求めます。この違いは角度の境界付近で特に重要です。同じ半径で350度と10度にある2点の中点は、正の水平軸上にあり、180度にはなりません。入力角度だけを単純に算術平均すると逆方向になりますが、直交座標への変換なら回転の境界を自動的に処理でき、半径が異なる場合も正しく計算できます。
正規化された結果を確認して再利用します
応答には、直交座標の中点を表すxとyに加えて、極座標形式のradius、angle、angle_unitが含まれます。角度は負でない1回転の範囲に正規化されます。度モードでは0以上360未満、ラジアンモードでは0以上2π未満です。そのため、入力角度が負の表記や複数回転の表記であっても、結果を比較しやすくなります。中点が原点にある場合、半径は0になり、幾何学的な方向は存在しません。このツールでは、JSONを有限かつ決定的に保ち、後続システムで扱いやすくするため、規約として角度0を返します。数値フィールドは小数点以下12桁に丸められます。これにより、一般的な幾何計算に必要な精度を維持しながら、意味のない浮動小数点誤差を抑えます。両方の座標形式が返されるため、xとyを図形描画やベクトル計算へ直接使用したり、半径と角度を別の極座標演算へ渡したりでき、変換を繰り返す必要がありません。
活用例
図示した2つの測定値を中央に配置
図の2つの放射状測定値の中間にある位置を、直交座標と極座標の両方で求めます。
航法問題の計算を確認
同じ原点からの距離と方位で示された2つの平面位置について、中点の計算を検算します。
描画用の座標を準備
2つの極座標制御点を平均し、得られたxとyをキャンバス、グラフ、幾何処理で使用します。
よくある質問
1回のリクエストで度とラジアンを混在させられますか?
いいえ。選択したangle_unitは、両方の入力角度と出力角度に適用されます。情報源の単位が異なる場合は、先に一方を変換してください。
半径と角度をそれぞれ直接平均してはいけないのはなぜですか?
極座標は線形ではなく、角度は1回転で先頭に戻るため、その方法では通常、幾何学的な中点にならないからです。
中点が原点にある場合はどうなりますか?
結果の半径と角度はともに0です。原点では方向が定義されないため、角度0を決定的な規約として使用します。
負の角度を使用できますか?
はい。有限であればどの入力角度も使用でき、出力角度は負でない1回転の範囲に正規化されます。
APIでの計算料金はいくらですか?
1回のリクエストは$0.002です。計算は決定的であり、外部サービスを呼び出しません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/trig/polar-midpoint \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"radius_1":4,"angle_1":30,"radius_2":6,"angle_2":150}'const res = await fetch("https://api.kit.forhosting.com/trig/polar-midpoint", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"radius_1": 4,
"angle_1": 30,
"radius_2": 6,
"angle_2": 150
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/polar-midpoint",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"radius_1": 4,
"angle_1": 30,
"radius_2": 6,
"angle_2": 150
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/polar-midpoint", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"radius_1":4,"angle_1":30,"radius_2":6,"angle_2":150}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"radius_1":4,"angle_1":30,"radius_2":6,"angle_2":150}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/polar-midpoint", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"radius_1": 4,
"angle_1": 30,
"radius_2": 6,
"angle_2": 150
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.polar_midpoint",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |