3点を通る円の中心と半径を計算 | 円の中心計算ツール
測定した3点から、その背後にある円を復元します。(0, 0)、(4, 0)、(0, 3) なら中心は (2, 1.5)、半径は2.5、方程式は (x − 2)² + (y − 1.5)² = 6.25 で、すべて一度に分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 0
- Y1
- 0
- X2
- 4
- Y2
- 0
- X3
- 0
- Y3
- 3
- 半径
- 2.5
- 直径
- 5
- 方程式
- (x − 2)² + (y − 1.5)² = 6.25
フィットチェック、円弧の復元、キャリブレーション、レイアウト作業の基盤となる幾何プリミティブであり、近似ではなく閉じた形の行列式から決定的に計算されます。6つの座標を送るだけで、中心、半径、直径、円の方程式を1回の呼び出しで取得できます。
1つの円、3つの点、反復なし
一直線上にない3点はちょうど1つの円を定め、その中心は3点すべてから等距離にある点です。古典的な作図では2つの弦の垂直二等分線を描き、その交点を読み取ります。答えは閉じた形なので、反復ソルバーも収束許容誤差もウォームアップもありません。
同じ6つの数値は、丸められた最後の桁まで常に同じ中心と半径を生みます。x1、y1、x2、y2、x3、y3を数値または数値文字列として送信すると、中心座標、半径、直径、標準形の円の方程式が、指定した精度で丸められて返されます。
3点が円を作らないとき
3点が一直線上にある場合、あるいは2点が一致する場合、すべてを通る有限の円は存在せず、そうでないふりをすることは、悪い幾何学が設計やレポートに伝播する経路です。この機能は推測せず拒否します。共線性を検出する行列式は中心を生成するものと同じなので、このチェックには追加コストがかからず、結果と矛盾することもありません。
ほぼ一直線上の点でも計算は可能ですが、非常に大きな半径は独自のロジックで警告サインとして扱うべきです。入力検証は意図的に厳格です。すべての座標は有限の数値でなければならず、NaNとInfinityは拒否され、精度オプションは小数点以下0〜15桁に制限されています。
境界での厳格さこそが、決定的な契約をあらゆるランタイムで決定的に保つものです。
円の中心が実力を発揮する場面
明白な用途は幾何学の宿題やCAD風のツールですが、静かな多数派はデータパイプラインからの呼び出しです。計測ソフトウェアは3つのプローブ接触から円弧を復元し、真円度を計算するためにその中心を必要とします。
マッピングコードは3つのGPS測位を通る旋回円をフィットさせ、ゲームやロボティクスのコードは3つのウェイポイントから曲率中心を導いて滑らかな経路を計画します。どの場合も呼び出し側が欲しいのはライブラリ依存ではなく、信頼できる数値です。環境間で3点の結果が食い違うことがあれば、それは受け入れるべき丸めモードではなく、私たちが欲しいバグレポートです。
活用例
3つのプローブから円弧を復元
計測やリバースエンジニアリングで測定曲線の背後にある円をフィットさせ、1回の呼び出しで中心と半径を取得します。
ウェイポイントを通る旋回円をフィット
3つのGPS測位や経路ウェイポイントから曲率を導き、動作を計画したり経路を検証したりします。
よくある質問
料金はいくらですか?
また、このページでは同じコードでブラウザ内で無料で実行できます。
データは保存されますか?
いいえ。 座標はメモリ内で処理され破棄され、計算結果のみが返されます。
結果の精度はどのくらいですか?
中心は倍精度の正確な行列式の式から得られ、要求した精度(小数点以下0〜15桁、既定10)に丸められます。
3点が一直線上にある場合はどうなりますか?
3点すべてを通る円は存在しないため、円をでっち上げずに分かりやすいメッセージでお知らせします。2つの点が重なっている場合も同じです。
半径がとても大きく出たのはなぜですか?
多くの場合、3点がほぼ一直線に並んでいることを示しています。計算はされますが、極端に大きな半径は、測定値が本当の円弧を表していないかもしれないという警告として受け止めてください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/circle-center \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":0,"y1":0,"x2":4,"y2":0,"x3":0,"y3":3}'const res = await fetch("https://api.kit.forhosting.com/math/circle-center", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 0,
"x3": 0,
"y3": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/circle-center",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 0,
"x3": 0,
"y3": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/circle-center", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":0,"y1":0,"x2":4,"y2":0,"x3":0,"y3":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":0,"y1":0,"x2":4,"y2":0,"x3":0,"y3":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/circle-center", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 0,
"x3": 0,
"y3": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.circle_center",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
円の中心APIは、平面上の3点を受け取り、そのすべてを通る唯一の円の正確な中心と半径を返します。
1つの円、3つの点、反復なし
代数的には小さな行列式の式であり、このエンドポイントが評価するのはまさにそれです。レスポンスには入力が縮退していたかどうかもエコーされるため、パイプラインはエラーテキストを解析する代わりに幾何学で分岐できます。すべてはエッジワーカー上でマイクロ秒で実行され、レスポンスが返った後は何も保存されません。図面、センサー、測量からの座標が、リクエストと結果の間でどこにも永続化されることはありません。
3点が円を作らないとき
一直線上または一致する入力は、何が問題かを正確に伝えるメッセージとともにinvalid_inputエラーを発生させるため、呼び出し側はそれをキャッチして、途方もない半径の円をサイレントに受け取る代わりに、より良いデータを求めることができます。
円の中心が実力を発揮する場面
料金は定額で、1リクエスト$0.002、1回の呼び出しにつき1件で、大きな座標値による追加料金はありません。APIに応答するのと同じコードがこのページのブラウザで無料で動くため、エンドポイントを本番に組み込む前に手作業で結果を検証できます。この同等性はテストされています。
連携の活用例
幾何学パイプラインを保護
サイレントに巨大な半径を返す代わりに、明確なinvalid_inputエラーで一直線上または一致する3点組を拒否します。
技術的な質問
どのような入力を受け付けますか?
6つの座標、x1、y1、x2、y2、x3、y3です。数値と数値文字列の両方が使え、オプションのprecisionフィールドでレスポンスの小数桁数を設定できます。
点が一直線上にある場合はどうなりますか?
一直線上の3点を通る有限の円は存在しないことを説明するinvalid_inputエラーでリクエストは失敗します。