楕円標準形への変換|一般方程式から中心・半軸・回転角を算出
4x² + 9y² − 8x − 18y − 23 = 0は、中心(1, 1)、半軸3と2、回転なしの楕円です。一般形の6つの係数を入力すると、中心、長半径と短半径、傾きが分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 4
- B
- 0
- C
- 9
- D
- -8
- E
- -18
- F
- -23
- 長半径
- 3
- 短半径
- 2
- 回転 (°)
- 0
中心、長半径・短半径、そして長軸の回転角です。変換は厳密な代数処理です。中心は平方完成で求め、軸は二次形式の固有値分解で求めます。同じコードがこのページ上のブラウザで無料で動作します。
一般方程式から標準形へ
一方から他方への変換は2段階です。まず、連立方程式 2A·h + B·k = −D と B·h + 2C·k = −E を解いて中心を求めます。これは両方の偏微分がゼロになる点であり、その周りで平方完成すれば一次項は消えます。
次に交差項 B·x·y を消去します。B がゼロなら楕円はすでに軸に平行で、残る定数で割るだけで半軸が得られます。B がゼロでない場合、二次の部分は対称な2×2行列となり、その固有値が分母の2乗を、固有ベクトルが回転角を与えます。
本当に楕円かどうかの判定方法
同じ6係数の方程式はどの円錐曲線も表し得るため、変換の前に検証を行います。鍵となる量は判別式 B² − 4AC です。負なら二次形式は定符号で、曲線は楕円族に属します。
判別式が負であることは必要条件ですが十分条件ではありません。中心へ平行移動した後、定数項はゼロでない必要があります。さもなければ方程式は中心そのものでのみ成り立つ、退化した点楕円です。
また定数項は二次の部分と逆符号でなければなりません。さもなければ方程式を満たす実点は存在せず、いわゆる虚楕円になります。どちらの場合も原因を明示したメッセージで拒否されます。
3つのチェックをすべて通過して初めて、応答に中心、長半径・短半径、および長軸の回転角(度)が含まれます。回転角は軸の方向に向きがないため、0以上180未満の半開区間に正規化されます。半軸が等しければ楕円は円であり、応答はその旨を明示します。
用途と料金
一般形の円錐曲線は、曲線を代数的にフィッティングしたり交差させたりする場面のどこにでも現れます。コンピュータビジョンの最小二乗楕円フィッティングが返すのはまさにこの6係数であり、物理エンジンの衝突形状、衛星リンク予算のアンテナフットプリント、統計学の共分散行列の信頼楕円も同様です。いずれの場合も、下流で実際に必要になるのは標準形です。
曲線を描く、点の包含を判定する、面積や離心率を計算するためです。手作業で変換すれば、固有値計算を毎回慎重にやり直すことになります。呼び出しはグローバルエッジで実行され、何も保存せず、乱数や時計への依存もないため、キャッシュやメモ化に安全です。
まず無料で試作し、自動化する場合にのみお支払いください。フィッティング済み円錐曲線の一括変換、グラフィックスパイプライン内の検証、オンデマンドで標準形が必要なアプリなどにご利用いただけます。
活用例
フィッティングした円錐曲線から幾何情報を読み取る
視覚や計測の楕円フィッティングアルゴリズムは一般形の6係数を返します。1回の呼び出しで中心・軸・回転角に変換できます。
円錐曲線を安全に分類する
任意の二次方程式を入力すれば、実楕円・双曲線・放物線・退化ケースのどれかが分かります。NaNではなく明確なエラーで判別できます。
よくある質問
方程式が楕円でない場合はどうなりますか?
判別式 B²−4AC が非負なら双曲線か放物線であり、退化楕円や虚楕円も、原因を明示したメッセージとともに拒否されます。
回転角はどのように定義されますか?
x軸正方向から測った長軸の角度(度)で、軸の方向に向きがないため [0, 180) に正規化されます。円の場合、角度は任意であり、応答にその旨が記されます。
結果の精度はどの程度ですか?
変換は閉じた形の代数処理(平方完成と2×2固有値分解)で、浮動小数点の範囲まで厳密です。バイト単位で安定した応答のため、出力は小数6桁に丸められます。
楕円が円かどうかはどう分かりますか?
長半径と短半径が等しければ、その楕円は円です。その場合は結果の中で円であることがはっきり示されるので、自分で見比べる必要はありません。
一般形を標準形に直すと何が便利になりますか?
中心と半軸がひと目で分かるので、曲線を描く、点が内側にあるか調べる、面積や離心率を求めるといった作業がすぐにできます。画像から楕円を当てはめたときの6つの係数の読み取りにも役立ちます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/ellipse-standard-form \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":4,"b":0,"c":9,"d":-8,"e":-18,"f":-23}'const res = await fetch("https://api.kit.forhosting.com/math/ellipse-standard-form", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 4,
"b": 0,
"c": 9,
"d": -8,
"e": -18,
"f": -23
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/ellipse-standard-form",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 4,
"b": 0,
"c": 9,
"d": -8,
"e": -18,
"f": -23
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/ellipse-standard-form", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":4,"b":0,"c":9,"d":-8,"e":-18,"f":-23}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":4,"b":0,"c":9,"d":-8,"e":-18,"f":-23}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/ellipse-standard-form", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 4,
"b": 0,
"c": 9,
"d": -8,
"e": -18,
"f": -23
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.ellipse_standard_form",
"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は、一般二次方程式(A·x² + B·x·y + C·y² + D·x + E·y + F = 0)の6つの係数を受け取り、その方程式が表す楕円を標準形で返します。係数が双曲線、放物線、1点、あるいは実曲線をまったく表さない場合は、意味のない答えを返すのではなく、明確なエラーでリクエストを拒否します。
一般方程式から標準形へ
平面上の楕円は、どのように回転し平行移動していても A·x² + B·x·y + C·y² + D·x + E·y + F = 0 と書けますが、教科書が標準形 (x−h)²/a² + (y−k)²/b² = 1 を好むのは、中心 (h, k) と半軸 a、b という幾何情報が一目で分かるからです。このエンドポイントは両段階を閉じた形の算術で実行し、反復も数値探索も行いません。したがって結果は浮動小数点の丸めまで厳密で、機種や実行ごとに応答をバイト単位で安定させるため小数6桁に固定しています。
本当に楕円かどうかの判定方法
ゼロなら放物線、正なら双曲線であり、どちらも判別式を示した invalid_input エラーで拒否されます。
用途と料金
ここでは6つの数値を1回POSTするだけです。料金は定額で、係数の値に関わらず1リクエスト $0.002 です。
連携の活用例
円錐曲線カタログの一括変換
シミュレーションや調査で保存した係数セットをループ処理し、1回 $0.002 で各レコードに中心と半軸を付与できます。
技術的な質問
料金はいくらですか?
1リクエスト $0.002 の定額です。同じ計算はこのページ上のブラウザで無料でご利用いただけます。
どの形式の方程式を受け付けますか?
一般二次方程式 A·x² + B·x·y + C·y² + D·x + E·y + F = 0 です。6つの係数を a から f のフィールドとして送信してください。
何か保存されますか?
いいえ。係数は処理後に破棄され、返されるのは結果のみです。