屈折角計算機
屈折率1から1.5のガラスへ30°で入る光は19.4712206345°に屈折し、向きが10.5287793655°変わります。入射角を度かラジアンで、2つの屈折率とともに入力すると、臨界角があればそれも分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 入射角
- 30
- N1
- 1
- N2
- 1.5
- 角度の単位
- deg degrees
- 入射角 (°)
- 30
- 屈折角 (°)
- 19.4712206345
- 屈折角 (rad)
- 0.3398369095
屈折角計算機は、任意の透明な媒質の組にスネルの法則を適用します。入射角(面の法線から測った角度、度またはラジアン)と、光が出ていく媒質および入っていく媒質の屈折率を入力すると、屈折角(度)、境界面で光線が受ける偏向角、そして存在する場合は臨界角が返されます。入射角が臨界角を超える場合は、意味のない数値を返す代わりに、その旨を明示するエラーが返されます。
屈折角とは
光線が空気と水、水とガラス、ガラスと空気のような2つの透明な媒質の境界を横切ると、その速さが変わり、速さが変わることで進行方向も変わります。入射点で面に垂直な線から測った新しい方向が屈折角です。これは任意のものではなく、スネルの法則が n₁·sin(θ₁) = n₂·sin(θ₂) という関係によって厳密に決定します。
ここで n₁ と n₂ は2つの媒質の屈折率、θ₁ は入射角です。より密度の高い媒質(n₂ が n₁ より大きい)に入る光線は法線に近づく方向に曲がり、屈折角は入射角より小さくなります。密度の低い媒質に入る光線は法線から遠ざかり、屈折角は大きくなります。
θ₁ がゼロの垂直入射では、屈折率がどのような値でも光線は曲がることなくまっすぐ通過します。入射角と2つの屈折率を送信すると、θ₂ が度で返され、ラジアンで作業する方のためにラジアンの値も付いています。結果は決定的で、同じ3つの数値からは常に同じ答えが得られるため、物理エンジン、レンダリングコード、採点ツールの中で安全に使用できます。
臨界角と全反射
スネルの法則には幾何学的な限界があります。光が密度の高い媒質から低い媒質へ進む場合(n₁ が n₂ より大きい)、屈折角は常に入射角より大きくなり、屈折光がちょうど面に沿って進まなければならなくなる特定の入射角が存在します。それが臨界角 arcsin(n₂/n₁) です。
それを超えると sin(θ₂) は1を超えなければならず、それは不可能なため、屈折光は存在せず、光はすべて反射します。これが全反射です。 光ファイバー、ダイヤモンドの輝き、ダイバーが見る鏡のような水面の裏側の原理です。多くの計算機はこの領域で黙って NaN を返すか、結果を丸めて、間違っているがもっともらしい数値を返します。
メッセージには入射角、両方の屈折率、計算された正弦が含まれるため、自動化された呼び出し側はその条件を検出し、不正な値を消費する代わりに反射処理に切り替えることができます。n₁ が n₂ より大きい場合、応答には臨界角(度)も含まれるため、2回目の呼び出しなしに、ある設定が限界にどれだけ近いかを確認できます。
入力、出力、実際の使い方
応答には、受け取った両方の屈折率、度に正規化された入射角、度とラジアンの屈折角、そして偏向角(境界面が実際に光線を何度曲げたか)が含まれます。これはレンズ設計者やゲーム開発者が次に必要とすることが多い数値です。
典型的な用途には、宿題の解答の確認、水中撮影機材の参照テーブルの事前計算、レイトレーサーの屈折成分の駆動、そして臨界角を下回ることが設計上の全制約となる光ファイバーリンクの設計が含まれます。
活用例
物理の宿題を確認する
スネルの法則の課題の答えを確認します。入射角と両方の屈折率を送信し、返された屈折角を解答と比較してください。
レイトレーサーを駆動する
レンダラーでガラスや水の面の屈折方向を入力し、臨界角エラーを頼りに全反射に切り替えてください。
光ファイバーリンクを設計する
同じ応答に含まれる臨界角を読み取り、入射設定がコア・クラッド境界で臨界角を下回っていることを確認してください。
よくある質問
どの屈折率を使うべきですか?
任意の正の数です。 真空はちょうど1、空気は約1.0003、水は約1.333、クラウンガラスは約1.52、ダイヤモンドは約2.417です。
結果は決定的ですか?
はい。 乱数・ネットワーク・時計を使わないスネルの法則の閉形式評価で、バイト単位で安定した出力のため有効数字12桁に丸められます。
偏角とは何ですか?
境界で光線の向きがどれだけ変わるかを示す角度で、入射角と屈折角の差です。屈折率1から1.5のガラスへ30°で入る光の偏角は10.5287793655°です。
臨界角が表示されるのはどんなときですか?
光が密な媒質から疎な媒質へ進む、つまり1つ目の屈折率が2つ目より大きいときです。入射角が全反射の限界にどれだけ近いかを、別の計算なしで確かめられます。
入射角をラジアンで入力できますか?
はい、単位をラジアンにすると0からπ/2の範囲で入力できます。結果の屈折角は度で表示され、ラジアンの値も合わせて示されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/phys/angle-of-refraction \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"incidence_angle":30,"n1":1,"n2":1.5}'const res = await fetch("https://api.kit.forhosting.com/phys/angle-of-refraction", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"incidence_angle": 30,
"n1": 1,
"n2": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/angle-of-refraction",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"incidence_angle": 30,
"n1": 1,
"n2": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/angle-of-refraction", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"incidence_angle":30,"n1":1,"n2":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"incidence_angle":30,"n1":1,"n2":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/angle-of-refraction", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"incidence_angle": 30,
"n1": 1,
"n2": 1.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.angle_of_refraction",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
屈折角とは
このエンドポイントはその方程式を直接解きます。
臨界角と全反射
このエンドポイントは明示的なエラーとして扱います。
入力、出力、実際の使い方
この呼び出しは必須フィールド3つと任意フィールド1つを取ります。incidence_angle は面の法線からの角度で、デフォルトでは度として解釈され0から90の範囲である必要があります。angle_unit を rad に設定するとラジアンに切り替わり、範囲は0からπ/2になります。n1 と n2 は入射媒質と屈折媒質の屈折率で、真空はちょうど1、空気は約1.0003、水は約1.333、一般的なクラウンガラスは約1.52、ダイヤモンドは約2.417です。API経由ではリクエストごとに $0.002 で、このページのブラウザ上では無料で実行でき、どちらも同じ結果が得られます。
技術的な質問
料金はいくらですか?
API経由でリクエストごとに $0.002 です。このページのブラウザ上でも無料で実行でき、同じ決定的な結果が得られます。
屈折角はどの単位で返されますか?
常に度で返され、ラジアンの値も付きます。入射角は度(デフォルト)または angle_unit を rad に設定してラジアンで送信できます。
臨界角を超えるとどうなりますか?
NaN や丸められた数値を返す代わりに、屈折角が存在しないことを説明する invalid_input エラーが返されます。屈折率と計算された正弦も含まれます。
臨界角は表示されますか?
はい。n1 が n2 より大きい場合は常に、応答に critical_angle_deg = arcsin(n2/n1) が含まれ、全反射のしきい値を確認できます。