直径の両端点から円の方程式を求める計算ツール
両端点が(1, 2)と(5, 6)なら、中心は(3, 4)、半径の2乗は8で、方程式は(x − 3)² + (y − 4)² = 8です。どんな直径でも両端点を入力するだけで、円の情報がまとめて分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 1
- Y1
- 2
- X2
- 5
- Y2
- 6
- 精度
- 6
- 中心 x
- 3
- 中心 y
- 4
- 半径
- 2.828427
- 直径
- 5.656854
反復的な近似ではなく閉じた形の計算であるため、同じ4つの座標には常に同じ答えが、選択した精度で丸められて返ります。4つの数値を送れば、1回の呼び出しで円の全体が手に入ります。
なぜ直径だけで十分なのか
円は一般に3つの点で完全に決まりますが、手元の2点が直径の両端であれば、はるかに少ない手間で求まります。中心は線分の中点そのもの、つまり2つのx座標と2つのy座標の平均であり、半径は線分の長さの半分で、距離の公式で一度に計算できます。行列式を評価する必要も、垂直二等分線の交点を求める必要も、共線のケースを気にする必要もありません。
異なる2つの端点は常に1つの有効な円を定めます。x1、y1、x2、y2を数値または数値文字列として送ると、中心座標、半径、直径、半径の2乗、そして標準形・一般形の方程式文字列が返ります。
標準形と一般形の読み方
標準形 (x − h)² + (y − k)² = r² は幾何学的な意味が見やすい形です。hとkが中心であり、右辺は半径の2乗です。グラフを描くとき、点が円上にあるかを確かめるとき、図と照合するときにはこの形が適しています。
ソルバーや代数システム、印刷された教科書の多くがこの形を好みます。係数をそのまま後続の操作に使えるからです。この機能は両方の形を、選択した精度で読みやすい文字列として返し、さらに数値も返すため、文字列を解析して中心や半径を取り戻す必要はありません。
なお退化した座標の扱いについて:中心が軸上や原点にある場合、消えてしまう項はゼロ係数として表示せず文字列から省略します。そのため、文書に貼り付ける方程式は数学者が書く通りの見た目になります。
検証、制限、正直なエラー
すべての座標は有限の数値でなければなりません。座標は絶対値 10^12 に制限されており、2乗した大きさが倍精度の範囲に十分収まります。半径ゼロの円を返して、使った瞬間にゼロ除算を起こすようなことはしません。
オプションの precision パラメータは、応答内の丸められた数値すべての小数桁数を設定し、0から15の整数を受け付け、デフォルトは10です。ここで動いているものと同じモジュールがブラウザで無料で動きますので、本番環境に組み込む前に手計算の例で確認いただけます。
活用例
宿題や教科書の答え合わせ
直径の端点の演習問題について、中心、半径、標準形の方程式を、代数を手で解き直さずに検証できます。
CADや計測での円の復元
ボアやシャフトの反対側で測定した2点から、完全な円の方程式を求め、フィッティングレポートや図面に利用できます。
幾何パイプラインへの入力
円を一度計算すれば、数値の中心と半径を(文字列を解析せずに)下流の交差、面積、距離の計算に渡せます。
よくある質問
座標が有限の数値でない場合はどうなりますか?
NaN、Infinity、数値でない文字列はすべて拒否され、課金もされません。
データは保存されますか?
いいえ。 計算は純粋な算術処理であり、座標は処理後に破棄され、返されるのは結果のみです。
直径の両端点から円の中心はどう求めますか?
2つのx座標と2つのy座標をそれぞれ平均します。中心は直径の中点なので、(1, 2)と(5, 6)なら中心は(3, 4)になります。
両端点から半径はどう求めますか?
両端点の間の距離を求めて半分にします。(1, 2)と(5, 6)なら直径は約5.656854、半径は約2.828427で、半径の2乗はちょうど8です。
標準形と一般形の違いは何ですか?
標準形の(x − 3)² + (y − 4)² = 8は、中心と半径の2乗がひと目で分かる形です。一般形はかっこを展開したx² + y² − 6x − 8y + 17 = 0で、どちらも同じ円を表します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/equation-circle-diameter-endpoints \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":1,"y1":2,"x2":5,"y2":6}'const res = await fetch("https://api.kit.forhosting.com/math/equation-circle-diameter-endpoints", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 1,
"y1": 2,
"x2": 5,
"y2": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/equation-circle-diameter-endpoints",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 1,
"y1": 2,
"x2": 5,
"y2": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/equation-circle-diameter-endpoints", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":1,"y1":2,"x2":5,"y2":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":1,"y1":2,"x2":5,"y2":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/equation-circle-diameter-endpoints", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"x1": 1,
"y1": 2,
"x2": 5,
"y2": 6
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.equation_circle_diameter_endpoints",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs | 1000000000000 |
min_diameter | 1e-15 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
直径の両端点から円を求めるこのAPIは、直径の両端点の座標を受け取り、その線分が定める円のすべてを返します。中心は中点、半径は端点間距離の半分、そして円の方程式を標準形 (x − h)² + (y − k)² = r² と一般形 x² + y² + Dx + Ey + F = 0 の両方で返します。
なぜ直径だけで十分なのか
このエンドポイントはその円を直接計算します。
標準形と一般形の読み方
一般形 x² + y² + Dx + Ey + F = 0 は二項式を展開して定数をまとめた形で、D = −2h、E = −2k、F = h² + k² − r² となります。
検証、制限、正直なエラー
NaN、Infinity、真偽値、オブジェクト、数値でない文字列は invalid_input エラーで拒否され、どのフィールドが問題かが明示されます。リクエストは課金されないため、パイプラインは問題を表面化でき、意味のない円を下流に流しません。2つの端点が一致する場合、あるいは 10^−15 より近い場合は、直径が存在しないため、リクエストはその旨のメッセージで失敗します。料金は定額で、リクエストごとに$0.002、1回の呼び出しにつき1件、座標の大きさに関係なく同じです。
技術的な質問
料金はいくらですか?
リクエストごとに$0.002で、1回の呼び出しにつき1件です。このページのブラウザ上でも同じコードで無料で実行できます。
どのような入力が必要ですか?
4つの座標、直径の両端点の x1、y1、x2、y2 です。数値でも数値文字列でも動作し、オプションの precision フィールドで応答の小数桁数を設定できます。
2つの端点が同じ点の場合は?
直径には異なる2点が必要なため、半径ゼロの円を返すのではなく、リクエストは invalid_input エラーで失敗します。
どの形の方程式が返りますか?
両方です。標準形 (x − h)² + (y − k)² = r² と一般形 x² + y² + Dx + Ey + F = 0 に加え、数値の中心、半径、直径、半径の2乗も返ります。