水平曲線要素計算:接線長・曲線長・外距
この水平曲線要素計算ツールは、道路、鉄道、測量で用いる単円曲線について、半径と中心偏角から主要な三つの寸法を求めます。半径を任意の長さ単位で、角度を十進度で入力すると、接線長、円弧長、外距が得られます。出力されるすべての長さは半径と同じ単位です。そのため、メートル、フィート、またはプロジェクトで統一した別の単位を、追加の換算なしでそのまま使用できます。
無料で実行
計算される三つの曲線要素
単純な円形の水平曲線は、一定半径の円弧によって二本の直線接線を結びます。接線長は、接線の交点からいずれかの接点までを直線線形に沿って測った距離です。曲線長は、二つの接点間を円弧に沿って進む距離です。外距は、接線交点から曲線中央へ向けて測り、円弧が交点と中心の関係からどの程度外側に位置するかを示します。これらの値は、予備線形計画、測点の確認、用地検討、設計計算表の独立検算に役立ちます。本ツールでは、入力する偏角を単円曲線の中心角とし、標準的な幾何では接線方向の変化量にも等しいものとします。緩和曲線、複合曲線、反向曲線、片勾配、視距、設計速度は算定しません。それらには追加条件と技術的判断が必要です。半径とすべての距離には一貫した単位を使用してください。
半径と偏角を用いる計算式
幾何計算の前に、偏角を度からラジアンへ変換します。接線長は、半径に偏角の半分の正接を掛けて求めます。曲線長は半径とラジアン表記の全角との積であり、半径、pi、度表記の角度を掛けて 180 で割る式と同じです。外距は、半径に半角の正割を掛け、半径分を差し引いた値です。これらは、中心線まで測った半径を持つ単円曲線に対する厳密な関係です。角度はゼロより大きく 180 度未満でなければなりません。限界値では曲線が消失するか、接線長と外距の式が特異になるためです。実装は決定論的な浮動小数点演算を使い、安定した数値を返します。施工資料では、測量基準点の精度、単位、適用基準、許容差を確認してから丸めてください。表示桁のすべてが現場精度を意味するわけではありません。
実務での利用と結果の確認
同じ線形定義に基づく半径と偏角を使用してください。半径をメートルで入力すれば三つの距離もメートルで、フィートならフィートで返ります。妥当性確認として、半径または角度が大きくなると曲線長も増えることを確認できます。180 度未満では、接線長と外距はいずれも正になります。小さな角度では横方向のずれが小さく、180 度に近づくと両方の値が急増します。図面と比較するときは、図面が中心線上の単円曲線を使い、偏角の定義も同じであることをご確認ください。規格によっては曲線度、弦、測点方程式で曲線を表すため、式を適用する前に換算が必要です。出力は明確な幾何計算として利用し、安全に関わる線形、杭打ち計画、最終設計は、道路・鉄道・測量の適用基準に従って有資格者の確認を受けてください。
活用例
道路線形の計算表を確認
設計表へ転記する前に、指定された半径と交角から接線長、円弧長、外距を再計算します。
予備的な測量配置を作成
初期検討で複数の半径を比較しながら、単円曲線の主要距離を見積もります。
授業や現場の計算を検算
手計算した曲線要素を決定論的な結果と比較し、単位、角度、式入力の誤りを見つけます。
よくある質問
どの角度を入力すればよいですか?
単円曲線の中心偏角を十進度で入力してください。標準的な幾何では、二本の接線間の方向変化に等しくなります。
どの単位を使用しますか?
半径には一貫した任意の長さ単位を使用できます。接線長、曲線長、外距はすべて同じ単位で返されます。
どの計算式を使用しますか?
Δ が度の場合、T = R tan(Δ/2)、L = πRΔ/180、E = R(sec(Δ/2) − 1) を使用します。
180 度を入力できますか?
入力できません。角度はゼロより大きく 180 度未満である必要があり、180 度では接線長と外距の式が特異になります。
緩和曲線や複合曲線も計算できますか?
できません。一定半径の単円曲線のみが対象です。緩和区間、複合・反向曲線、測点補正には追加の幾何計算が必要です。
API 計算の料金はいくらですか?
API リクエストごとに $0.002 です。ブラウザーの計算ツールは API リクエストなしで利用できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/eng/horizontal-curve-elements \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"radius":500,"deflection_angle_degrees":60}'const res = await fetch("https://api.kit.forhosting.com/eng/horizontal-curve-elements", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"radius": 500,
"deflection_angle_degrees": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/horizontal-curve-elements",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"radius": 500,
"deflection_angle_degrees": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/horizontal-curve-elements", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"radius":500,"deflection_angle_degrees":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"radius":500,"deflection_angle_degrees":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/horizontal-curve-elements", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"radius": 500,
"deflection_angle_degrees": 60
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.horizontal_curve_elements",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |