你有没有过这样的经历:对着窗户拍照想定格窗外的美景,结果照片里却悄悄映出了自己的影子;或者在光线充足的房间里,透过玻璃门既能看到门后的场景,又能隐约看到自己的倒影?这背后其实藏着一个有趣的光学原理。
日常使用的无镀膜玻璃,其表面反射率大约只有4%。正是这微弱的4%,在让我们看清前方的同时,也带来了那层淡淡的“温柔打扰”。

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

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

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

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

菲涅尔公式:
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.52,1.5 为常用代表值。
2.2 分步计算过程
有了简化的公式和具体的折射率数值,现在我们可以一步步算出那个著名的4%。

计算步骤如下:
a. 将 n1 = 1.0、n2 = 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 关键规律总结
入射角 θ₀ 从 0° 增大至 90°(掠入射)时,自然光总反射率整体呈上升趋势。
- 当角度小于布儒斯特角时,p偏振光的反射率持续下降。
- 当角度正好等于布儒斯特角时,p偏振光反射率为零,此时反射光全部是s偏振光。
- 当角度大于布儒斯特角后,p偏振光反射率迅速升高。
- 对于s偏振光,其反射率随着入射角的增加而单调增加。

图6:反射率随入射角变化曲线
四、延伸分析2:玻璃折射率对反射率的影响
4.1 核心规律
在正入射条件下,反射率 随玻璃折射率的增大而升高。
4.2 实例验证
不同折射率玻璃的反射率计算实例如下:

图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.0、n2=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 变化的程序,请按以下步骤修改上述代码:
len = length(theta_1_deg); 变为 len = length(n2) (n2需预先定义为数组,如 n2 = 1.4:0.01:1.8;)
theta_1_rad = deg2rad(theta_1_deg(i)); 变为 theta_1_rad = deg2rad(theta_1_deg); 并放在 for 循环之外(假设 theta_1_deg 为固定角度值)。
- 在
for 循环中增加 n2i = n2(i);
theta_2_rad = asin((n1/n2) * sin(theta_1_rad)); 变为 theta_2_rad = asin((n1/n2i) * sin(theta_1_rad));
[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);
- 绘图部分将所有的
theta_1_deg 变为 n2。
希望这篇结合了理论推导、数值计算和日常现象的分析,能帮助你彻底理解玻璃表面那4%反射率的由来。如果你对光学模拟或MATLAB编程有更多兴趣,欢迎在云栈社区与大家交流探讨。