📅  最后修改于: 2023-12-03 15:28:22.453000             🧑  作者: Mango
光线从一种介质到另一种介质时会产生折射现象。当光线从一种介质到另一种介质时,它的速度会发生变化,从而改变其传播方向。这一现象被称为折射。玻璃板作为一种常见的透明介质,对入射光的折射现象具有很好的表现。
当光线从一种介质 $n_1$ 入射到另一种介质 $n_2$ 中时,它将发生折射,即折射光线和入射光线不再处于同一直线上,如下图所示:
根据斯涅尔定律,折射光线与入射光线的夹角 $\theta_1$ 和 $\theta_2$ 满足如下关系:
$$ n_1\sin\theta_1=n_2\sin\theta_2 $$
其中,$n_1$ 和 $n_2$ 分别表示两种介质的折射率。当光线从光疏介质($n_1 < n_2$)入射到光密介质($n_1 > n_2$)时,在一定范围内,都会发生全反射现象,即所有入射光线都被反射回来,不产生折射光线。
下面是折射角计算的 Python 代码实现示例:
import math
def calculate_refracted_angle(n1, n2, theta1):
"""
计算透过玻璃板的光的折射角度
:param n1: 光线所在介质的折射率
:param n2: 另一种介质的折射率
:param theta1: 入射角度,单位为弧度
:return: 返回折射角度,单位为弧度
"""
sin_theta2 = n1 / n2 * math.sin(theta1)
if abs(sin_theta2) > 1:
return None
cos_theta2 = math.sqrt(1 - sin_theta2**2)
return math.acos(cos_theta2)
该函数计算了入射角度 $\theta_1$、两种介质的折射率 $n_1$ 和 $n_2$,并返回折射角度 $\theta_2$。如果计算出的 $\sin\theta_2$ 超过了 1,则表示发生了全反射现象。