📜  透过玻璃板的光的折射(1)

📅  最后修改于: 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,则表示发生了全反射现象。