楕円の周長計算
半軸が5と3の楕円の周長は、ラマヌジャンの1914年の公式で25.526986です。2つの半軸を同じ単位で入力すれば、その単位で周の長さが分かります。全幅しか分からないときは先に半分にします。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 5
- B
- 3
- 円周
- 25.526986
長半径aと短半径bを送信すると、有名なラマヌジャンの近似式で計算された周長が返されます。現実的な形状であれば誤差はごくわずかな百分率に収まります。両方の軸は正の数である必要があり、結果は測定に使った単位のまま返され、小数点以下の桁数も自由に指定できます。
楕円の周長が難しい理由
円の周長は円周率に直径を掛けるだけですが、その円を引き伸ばして楕円にした瞬間、公式は存在しなくなります。厳密な答えは第二種楕円積分であり、初等関数では表せないため、技術者や科学者は何世紀にもわたって近似式に頼ってきました。最も有名なのが1914年にシュリニヴァーサ・ラマヌジャンが発表した式です。
Cはおおよそπ×[3(a+b)−√((3a+b)(a+3b))]で、ここでaとbは半軸です。この公式の精度は驚くほど高く、適度に細長い楕円では誤差は1000分の1パーセントをはるかに下回り、極端に平たい楕円でも1パーセントを大きく下回ります。シンプルさと精度のこの組み合わせこそ、この楕円周長計算ツールがこの式を採用する理由です。
数値積分の仕組みなしに、決定論的に計算された信頼できる数値が得られます。
aとbの測り方
2つの入力は全幅ではなく半軸です。楕円が全体の幅と高さで記述されている場合――たとえば陸上トラックのオーバルが長さ100メートル、幅60メートルなら――まずそれぞれを2で割ります。aは50、bは30です。
長半径aは最長直径の半分、短半径bは最短直径の半分ですが、式は対称なので入れ替えても結果は変わりません。両方の値は同じ単位の正の有限数である必要があり、周長はその単位で返されます。センチメートルで入れればセンチメートルで出てきます。
知っておくべき縮退ケースはaがbに等しい場合で、これは単なる円です。
精度、丸め、適した用途
非常に細長い楕円――たとえば100対1の軸比――でも、ラマヌジャンの第一近似は誤差数百万分の数以内に収まり、軌道、競走トラック、建築アーチ、光学、加工公差を十分な余裕をもってカバーします。さらに必要なら第二の改良式も存在しますが、実際にそれを使う人はほとんどいません。
典型的な利用者は、形状を正規化するジオメトリパイプライン、切断長や材料使用量を見積もるCAD・CNCツール、軌道を追跡する物理コード、そして一見単純な曲線がなぜこれほど長く閉じた形を拒んだかを示す教育ツールです。
活用例
楕円切断の材料見積もり
楕円形のテーブル天板やガスケットの半軸を入力し、縁取り・シール・バンディングの発注に必要な縁の長さを取得します。
ジオメトリパイプラインでの形状正規化
数値積分ライブラリを導入せずに、画像処理やCAD処理で検出されたすべての楕円に周長を付与します。
軌道・トラック幾何の学習と検証
宿題、競走トラックの周回距離、軌道の経路長を、決定論的な基準値と照合して確認します。
よくある質問
ラマヌジャンの公式の精度はどのくらいですか?
ほとんどの楕円で誤差は1000分の1パーセントを大きく下回り、極端な100対1の軸比でも数百万分の数以内に収まります。
全幅と半軸のどちらを送ればよいですか?
半軸です。 最長直径の半分(a)と最短直径の半分(b)を送ります。まず全幅と全高を2で割ってください。
結果の単位は何ですか?
軸を測定した単位のままです。計算は単位に依存しません。センチメートルで入れればセンチメートルで返ります。
どのような入力が拒否されますか?
欠落、ゼロ、負、非数値、非有限の軸、および0から12の整数でないdecimals値です。
2つの半軸が同じ長さのときはどうなりますか?
その楕円は円なので、ラマヌジャンの公式はちょうど2·π·aになります。円が混ざった図形のデータでも、そのまま安心して使えます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/ellipse-circumference \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":5,"b":3}'const res = await fetch("https://api.kit.forhosting.com/math/ellipse-circumference", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 5,
"b": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/ellipse-circumference",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 5,
"b": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/ellipse-circumference", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":5,"b":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":5,"b":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/ellipse-circumference", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 5,
"b": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.ellipse_circumference",
"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は、初等的な閉じた形の解が存在しない問い――楕円の縁の長さはどれくらいか――に答えます。このページ上ではブラウザで無料で実行でき、API経由で自動化する場合は1リクエストあたり$0.002です。
aとbの測り方
このとき式は正確に2·π·aに帰着するため、円周を計算している場所に時折楕円が混ざる場合でも、このエンドポイントはそのまま安全に使えます。負、ゼロ、非数値の軸は明確なinvalid_inputエラーで拒否されます。
精度、丸め、適した用途
結果はデフォルトで小数点以下6桁に四捨五入され、decimalsフィールドで0から12までの任意の桁数を指定できます。各呼び出しはデータを保持しない単一のステートレスな計算で、1リクエストあたり$0.002が課金されます。
技術的な質問
料金はいくらですか?
1リクエストあたり$0.002です。このページ上でブラウザから無料で実行することもでき、結果はまったく同じです。
aとbが等しい場合はどうなりますか?
それは円であり、式は正確に2·π·aに帰着します。そのためこのエンドポイントは円も正しく処理します。