厚肉レンズの焦点距離計算:屈折率・曲率半径・中心厚
この厚肉レンズ焦点距離計算機は、薄肉近似では省略される中心厚の補正を含むレンズメーカーの式を使用します。空気中におけるレンズ材料の屈折率、各面の符号付き曲率半径、中心厚を入力してください。長さはすべてメートル単位です。有効焦点距離、ディオプトリ単位の屈折力、収束レンズか発散レンズかを結果として表示します。
無料で実行
一貫した符号規約で形状を入力してください
本計算では、光が左から右へ進むものとし、曲率半径にはデカルト符号規約を用います。面の曲率中心がその面の右側にあれば半径は正、左側にあれば負です。そのため、一般的な両凸レンズでは第 1 面が正、第 2 面が負になります。平面は曲率がゼロなので、半径に 0 を入力してください。屈折率は無次元ですが、2 つの半径と中心厚はメートルで入力する必要があります。ミリメートルとメートルを混在させないでください。たとえば中心厚 5 mm は、計算前に 0.005 m へ変換します。中心厚に負の値は指定できません。周囲の媒質は空気を想定しているため、空気に対する材料の屈折率を使用してください。有効焦点距離が正なら収束レンズ、負なら発散レンズです。通常の両凸レンズで負の屈折力が出た場合は、まず面の向きと半径の符号をご確認ください。
厚肉レンズ補正の意味をご確認ください
薄肉レンズのレンズメーカーの式では、屈折率と 2 面の曲率差だけを使用します。実際のレンズでは、屈折面どうしが中心厚によって離れています。本計算は、屈折率、厚さ、両曲率の積に依存する厚さ項を加え、得られた屈折力の逆数から有効焦点距離を求めます。有効焦点距離は主平面から測る量であり、レンズの物理的な頂点から直接測る量ではありません。したがって、前側焦点距離や後側焦点距離とは同一ではありません。それらを求めるには、主平面の位置または光線伝達行列による追加計算が必要です。中心厚を 0 に設定すると薄肉レンズの式に戻るため、両近似を比較できます。弱く薄いレンズでは補正が小さいこともありますが、曲率が強い面、高屈折率ガラス、半径に対して無視できない厚さでは重要になります。出力される屈折力は、メートル単位の有効焦点距離の逆数で、単位はディオプトリです。
計算結果を解釈し、妥当性をご確認ください
有効焦点距離は、レンズ全体の一次近軸特性としてお使いください。正の値は平行な近軸光線がレンズ通過後に収束することを示し、負の値は仮想焦点から出たように発散することを示します。本式は、球面、均質材料、両側が空気、光軸に近い光線を前提とします。波長による分散、非球面係数、屈折率分布、収差、コーティング、偏心、傾き、製造公差は扱いません。設計時には、実際の中心厚による結果と厚さ 0 の結果を比べ、薄肉近似が適切かをご判断ください。単位も確認してください。幾何入力がメートルなので、有効焦点距離もメートル、その逆数はディオプトリです。厚さ補正後に曲率の効果が完全に相殺されると屈折力はゼロになり、有限の有効焦点距離は存在しません。その場合は曖昧な無限大を返さず、無効な入力として通知します。周辺光線、正確な焦点面位置、収差性能が必要な場合は、光学設計ソフトウェアをご利用ください。
活用例
光学設計で単レンズを概算する
完全な光線追跡モデルを作成する前に、球面単レンズの近軸有効焦点距離を計算できます。
厚肉近似と薄肉近似を比較する
実際の中心厚と厚さ 0 の両方で計算し、薄肉近似による焦点距離のずれを定量化できます。
製造済みレンズの仕様を確認する
測定した半径、ガラスの屈折率、中心厚から、有効焦点距離と屈折力を独立して確認できます。
よくある質問
計算料金はいくらですか?
API の各リクエスト料金は $0.002 です。ブラウザー計算機では、同じ決定論的な計算をローカルで実行できます。
どの単位を使用すればよいですか?
radius_1、radius_2、center_thickness はメートルで入力してください。有効焦点距離はメートル、屈折力はディオプトリで返します。
各半径にはどの符号を付けますか?
光が左から右へ進む場合、曲率中心が面の右側なら正、左側なら負の半径を使用してください。
平凸レンズも表せますか?
はい。平面は曲率がゼロなので半径に 0 を入力し、曲面には符号付きの有限半径を入力してください。
結果は後側焦点距離ですか?
いいえ。結果は主平面を基準とする有効焦点距離です。後側焦点距離は後方頂点から測るため、厚肉レンズでは通常異なります。
液体に浸したレンズにも使用できますか?
いいえ。本計算は両側が空気であることを前提とします。浸漬レンズには周囲媒質の屈折率と、より一般的な計算が必要です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/optics/thick-lens-focal-length \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"refractive_index":1.5,"radius_1":0.1,"radius_2":-0.1,"center_thickness":0.01}'const res = await fetch("https://api.kit.forhosting.com/optics/thick-lens-focal-length", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"refractive_index": 1.5,
"radius_1": 0.1,
"radius_2": -0.1,
"center_thickness": 0.01
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/thick-lens-focal-length",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"refractive_index": 1.5,
"radius_1": 0.1,
"radius_2": -0.1,
"center_thickness": 0.01
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/thick-lens-focal-length", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"refractive_index":1.5,"radius_1":0.1,"radius_2":-0.1,"center_thickness":0.01}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"refractive_index":1.5,"radius_1":0.1,"radius_2":-0.1,"center_thickness":0.01}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/thick-lens-focal-length", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"refractive_index": 1.5,
"radius_1": 0.1,
"radius_2": -0.1,
"center_thickness": 0.01
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.thick_lens_focal_length",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |