找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1544

积分

0

好友

200

主题
发表于 2026-2-12 16:27:23 | 查看: 31| 回复: 0

你有没有过这样的经历:对着窗户拍照想定格窗外的美景,结果照片里却悄悄映出了自己的影子;或者在光线充足的房间里,透过玻璃门既能看到门后的场景,又能隐约看到自己的倒影?这背后其实藏着一个有趣的光学原理

日常使用的无镀膜玻璃,其表面反射率大约只有4%。正是这微弱的4%,在让我们看清前方的同时,也带来了那层淡淡的“温柔打扰”。

一面反光镜立在书本上,右侧是透过玻璃窗看到的城市夜景

图1:拍摄玻璃照片

图1右的照片在拍摄黄昏街道时,为什么会出现两个反射的像呢?核心原因在于反射面是双层玻璃(由两片玻璃与中间的空气层构成)。

从光学原理来看,光线照射到双层玻璃时,会发生两次主要反射:一是来自外层玻璃的前表面,二是穿过外层玻璃和空气层后,来自内层玻璃的前表面。由于玻璃与空气的折射率差异,每次反射的反射率约为4%(垂直入射时),这两个反射光强相近的像均能被清晰记录;同时,光线在玻璃与空气层的界面间会发生多次折射,导致两次反射光的传播路径产生微小差异,最终成像出现轻微位移。

双层玻璃间光线多次反射与折射示意图,产生两个像

图2:双层玻璃反射成像示意图

怎样才能减少拍照时反射像的干扰呢?你可能会想到使用偏振片将反射光过滤掉。这里就需要提到一个关键概念:布儒斯特角。

布儒斯特角光路示意图,光线在界面反射与折射

图3:布儒斯特角光路图

正常室外的光是由p偏振光与s偏振光组成的。当光线以布儒斯特角入射时,反射光完全是S偏振光。因此,在此角度下拍摄,只需要使用偏振片将S偏振光过滤掉,就可以彻底消除反射光对拍照的影响。

左侧为未使用偏振镜拍摄的溪流,右侧为使用偏振镜拍摄的同一场景,水面反光减弱

图4:是否使用偏振片的拍摄图像对比

一、核心理论基础:菲涅尔公式(Fresnel Equations)

要搞懂这4%的反射率,得先请出物理学里的“关键工具”——菲涅尔公式。它能准确描述光在两种透明介质(比如空气和玻璃)交界处的反射、透射规律,包括振幅和相位的变化,也是我们推导4%反射率的核心依据。

菲涅尔公式表达式,包含s波和p波的反射系数与反射率

菲涅尔公式:

  • r_s = (n1cosθ₁ - n2cosθ₂) / (n1cosθ₁ + n2cosθ₂) (1)
  • r_p = (n2cosθ₁ - n1cosθ₂) / (n2cosθ₁ + n1cosθ₂) (2)
  • R_s = |r_s|² (3)
  • R_p = |r_p|² (4)
  • R = (R_s + R_p) / 2 (5)

这里简单解释下符号:n1 是第一种介质的折射率(比如空气),n2 是第二种介质的折射率(比如玻璃),θ1 是光的入射角,θ2 是光的折射角。

一个散射过程示意图,标注入射角与散射角

图5:菲涅尔公式相关示意图

1.1 前提假设(4%反射率的适用场景)

不过要说明的是,“无镀膜玻璃反射率约4%”不是万能结论,它需要满足几个日常场景里常见的条件,我们简化成3个好理解的前提:

a. 自然光入射:日常光源如阳光、灯光可视为自然光,其s偏振与p偏振分量能量各占一半;
b. 光线垂直入射:入射角 θ₀ = 0°,这是我们平时最常遇到的情况,比如看窗户、看玻璃桌面时,光线大多是垂直入射的;
c. 忽略吸收损耗:空气和玻璃在可见光波段几乎不会吸收光线,所以不考虑光被介质吸收的影响。

1.2 正入射下的菲涅尔公式简化

在光线垂直照射玻璃表面(正入射)的条件下,入射角和折射角都等于0度,余弦值 cos θ₁ = cos θ₂ = 1。此时,s偏振和p偏振的反射系数变得相等,菲涅尔公式可以得到极大的简化。

正入射条件下菲涅尔公式的简化推导

简化过程:

  • 此时 s 偏振和 p 偏振的反射系数相等,菲涅尔公式可简化为:r = rₛ = rₚ = (n₂ - n₁) / (n₂ + n₁) (6)
  • 反射率 R(能量反射比例)与振幅反射系数的平方成正比,因此:R = |r|² = |(n₂ - n₁) / (n₂ + n₁)|² (7)

公式(7)就是我们计算玻璃表面反射率的最终简化形式。

二、4%反射率的详细推导与计算

2.1 标准折射率数值代入

在可见光范围内(约400–760 nm),相关介质的典型折射率为:

a. 空气折射率:实际约 1.0003,计算中常用 1.0 近似;
b. 普通钠钙玻璃折射率(门窗、器皿常用):实际范围约 1.48–1.521.5 为常用代表值。

2.2 分步计算过程

有了简化的公式和具体的折射率数值,现在我们可以一步步算出那个著名的4%。

分步计算4%反射率的过程

计算步骤如下:
a. 将 n1 = 1.0n2 = 1.5 代入公式(7)。
b. 计算分子:n1 - n2 = 1.0 - 1.5 = -0.5(负号表示反射光存在半波损失,取平方后不影响反射率大小)。
c. 计算分母:n1 + n2 = 1.0 + 1.5 = 2.5
d. 计算振幅反射系数:r = -0.5 / 2.5 = -0.2
e. 计算反射率:R = (-0.2)² = 0.04,即 4%

三、延伸分析1:入射角度对反射率的影响

前述4%反射率仅适用于正入射。当光线倾斜入射时,反射率会显著变化,此时需使用完整的菲涅尔公式进行分析。

3.1 关键规律总结

入射角 θ₀ 增大至 90°(掠入射)时,自然光总反射率整体呈上升趋势。

  • 当角度小于布儒斯特角时,p偏振光的反射率持续下降。
  • 当角度正好等于布儒斯特角时,p偏振光反射率为零,此时反射光全部是s偏振光。
  • 当角度大于布儒斯特角后,p偏振光反射率迅速升高。
  • 对于s偏振光,其反射率随着入射角的增加而单调增加。

反射率随入射角变化曲线图,包含s偏振、p偏振和自然光平均

图6:反射率随入射角变化曲线

四、延伸分析2:玻璃折射率对反射率的影响

4.1 核心规律

在正入射条件下,反射率 随玻璃折射率的增大而升高

4.2 实例验证

不同折射率玻璃的反射率计算实例如下:

反射率随玻璃折射率n2变化曲线图

图7:反射率随n2变化图像

三种不同折射率玻璃的反射率计算结果

具体计算示例:

  • a. 低折射率玻璃(如石英玻璃,n₂ ≈ 1.46):R ≈ (1 - 1.46)²/(1 + 1.46)² ≈ 3.5%
  • b. 普通钠钙玻璃n₂ ≈ 1.5):R ≈ 4%
  • c. 高折射率玻璃(如重火石玻璃,n₂ ≈ 1.7):R ≈ (1 - 1.7)²/(1 + 1.7)² ≈ 6.7%

由此可见,日常使用的普通玻璃(折射率介于1.48–1.52)其正入射反射率均在4%附近。

五、总结

无镀膜玻璃表面约4%的反射率,来源于菲涅尔公式在正入射条件下的简化形式,代入 n1=1.0n2=1.5 即可直接算得。

  • 入射角的影响:反射率整体随入射角增大而上升,仅在近正入射时可近似视为4%。
  • 折射率的影响:玻璃折射率越高,正入射反射率越大。日常玻璃反射率均接近4%。

附录:MATLAB代码可实现反射率的计算与可视化

以下是用于计算和绘制反射率随入射角变化曲线的MATLAB代码示例。理解这些计算机基础上的数值计算,能帮助我们更直观地验证理论。

clear;
clc;
close all;

n1 = 1;          % 空气折射率
n2 = 1.5;        % 玻璃折射率
theta_1_deg = 0:0.01:90;  % 入射角数组(角度制,用于绘图显示)
len = length(theta_1_deg);
r_s_arr = zeros(len, 1);  % s偏振振幅反射系数数组
r_p_arr = zeros(len, 1);  % p偏振振幅反射系数数组
R_S_arr = zeros(len, 1);  % s偏振光强反射率数组
R_P_arr = zeros(len, 1);  % p偏振光强反射率数组
R_arr = zeros(len, 1);    % 自然光平均反射率数组

for i = 1:len
    theta_1_rad = deg2rad(theta_1_deg(i));
    theta_2_rad = asin((n1/n2) * sin(theta_1_rad));
    [r_s, r_p, R_S, R_P, R, ~] = Fresnel(n1, n2, theta_1_rad, theta_2_rad);
    r_s_arr(i) = r_s;
    r_p_arr(i) = r_p;
    R_S_arr(i) = R_S;
    R_P_arr(i) = R_P;
    R_arr(i) = R;
end

% 绘图展示(用角度制theta_1_deg绘图,反射率转百分比)
figure;
plot(theta_1_deg, R_S_arr*100, 'r-', 'LineWidth', 2, 'DisplayName', 's偏振');
hold on;
plot(theta_1_deg, R_P_arr*100, 'b-', 'LineWidth', 2, 'DisplayName', 'p偏振');
plot(theta_1_deg, R_arr*100, 'k--', 'LineWidth', 2, 'DisplayName', '自然光平均');
xlabel('入射角 (°)');
ylabel('反射率 (%)');
title('无镀膜玻璃表面的菲涅尔反射率');
grid on;
legend('Location', 'best');  % 优化图例位置

function [r_s,r_p,R_S,R_P,R,theta_2] = Fresnel(n1,n2,theta_1,theta_2)
r_s = (n1*cos(theta_1) - n2*cos(theta_2)) / (n1*cos(theta_1) + n2*cos(theta_2));
r_p = (n2*cos(theta_1) - n1*cos(theta_2)) / (n2*cos(theta_1) + n1*cos(theta_2));
R_S = abs(r_s)^2;
R_P = abs(r_p)^2;
R = (R_S+R_P)/2;
end

如需变更为分析反射率随折射率 n2 变化的程序,请按以下步骤修改上述代码:

  1. len = length(theta_1_deg); 变为 len = length(n2)n2需预先定义为数组,如 n2 = 1.4:0.01:1.8;
  2. theta_1_rad = deg2rad(theta_1_deg(i)); 变为 theta_1_rad = deg2rad(theta_1_deg); 并放在 for 循环之外(假设 theta_1_deg 为固定角度值)。
  3. for 循环中增加 n2i = n2(i);
  4. theta_2_rad = asin((n1/n2) * sin(theta_1_rad)); 变为 theta_2_rad = asin((n1/n2i) * sin(theta_1_rad));
  5. [r_s, r_p, R_S, R_P, R, ~] = Fresnel(n1, n2, theta_1_rad, theta_2_rad); 变为 [r_s, r_p, R_S, R_P, R, ~] = Fresnel(n1, n2i, theta_1_rad, theta_2_rad);
  6. 绘图部分将所有的 theta_1_deg 变为 n2

希望这篇结合了理论推导、数值计算和日常现象的分析,能帮助你彻底理解玻璃表面那4%反射率的由来。如果你对光学模拟或MATLAB编程有更多兴趣,欢迎在云栈社区与大家交流探讨。




上一篇:2026年春节AI算力争夺战升温,液冷龙头Vertiv与英维克业绩超预期
下一篇:Arduino双模式风扇频闪系统实现:静态定点与动态循环效果指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 15:21 , Processed in 0.526547 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表