3、光学材料与界面:折射率与色散、阿贝数、光学玻璃分类、界面模型与边界条件
做光线追迹,说白了就是在跟光与材料的相互作用打交道。你设计再好的镜头,选错了玻璃,追迹结果就是废纸一张。我刚开始学的时候,觉得折射率不就是个常数嘛,查表就完事了。后来被现实狠狠教育了一回——不同波长的光,折射率差得远着呢。
这一章,咱们就把光学材料和界面这件事彻底聊透。
3.1 折射率与色散
折射率 n 的定义很简单:真空中的光速除以介质中的光速。但真正干活的时候,你会发现它跟波长关系很大。
为什么会这样?因为材料内部的电子结构对不同波长的光响应不同。蓝光波长短,频率高,跟材料作用强,走得就慢,折射率就大。红光相反。
这个现象叫色散。用公式表示就是 n(λ),折射率是波长的函数。
常用的色散公式有好几种,我个人最常用的是柯西公式:
n(λ) = A + B / λ² + C / λ⁴
其中 λ 单位是微米。A、B、C 是材料拟合系数。精度要求不高时,取前两项就够了。
3.2 阿贝数
阿贝数 V 是衡量材料色散大小的指标。数值越大,色散越弱。公式是:
V = (n_d - 1) / (n_F - n_C)
其中:
- n_d — 氦 d 线(587.6 nm)的折射率
- n_F — 氢 F 线(486.1 nm)的折射率
- n_C — 氢 C 线(656.3 nm)的折射率
阿贝数越大,色差越小。比如氟冕玻璃阿贝数能到 90 以上,而重火石玻璃可能只有 25 左右。
我记得有一次做双胶合消色差透镜,选玻璃的时候没仔细看阿贝数,结果两个材料的色散曲线交叉了,追迹出来的色差比单透镜还大。嗯,从那以后我选玻璃第一件事就是查阿贝数。
3.3 光学玻璃分类
光学玻璃种类多得吓人,但核心分类就两大家族:冕牌玻璃和火石玻璃。
| 类型 | 阿贝数范围 | 折射率范围 | 典型牌号 | 特点 |
|---|---|---|---|---|
| 氟冕 (FK) | 70–95 | 1.44–1.50 | FK51 | 低色散,低折射率 |
| 轻冕 (K) | 55–65 | 1.50–1.52 | K9 | 通用光学玻璃 |
| 钡冕 (BaK) | 50–60 | 1.53–1.58 | BaK4 | 中等折射率 |
| 重冕 (ZK) | 45–55 | 1.60–1.70 | ZK7 | 高折射率,低色散 |
| 轻火石 (F) | 35–45 | 1.57–1.62 | F2 | 中等色散 |
| 重火石 (ZF) | 25–35 | 1.65–1.80 | ZF6 | 高色散,高折射率 |
| 特重火石 (ZLaF) | 20–30 | 1.80–2.00 | ZLaF1 | 超高折射率 |
选玻璃的时候,我一般会画一张 n–V 图。横轴是阿贝数,纵轴是折射率。不同厂商的玻璃牌号在这张图上有固定位置,一看就知道怎么搭配。
3.4 界面模型与边界条件
光线追迹的核心操作就是光线穿过界面。界面模型决定了光线怎么折、怎么反。
3.4.1 斯涅尔定律
这是最基础的界面模型:
n₁ · sin(θ₁) = n₂ · sin(θ₂)
其中 θ₁ 是入射角,θ₂ 是折射角,都从法线量起。
但实际代码里,我不会直接用这个公式。因为当入射角接近 90° 时,sin 值变化很慢,数值精度会出问题。我习惯用矢量形式的斯涅尔定律:
k₂ = (n₁/n₂) · k₁ + [ (n₁/n₂) · cos(θ₁) - cos(θ₂) ] · N
其中 k₁、k₂ 是光线方向矢量,N 是法线矢量。这样计算更稳定,而且能直接处理全反射的情况。
3.4.2 全反射
当光从光密介质射向光疏介质,入射角大于临界角时,就发生全反射。临界角公式:
θ_c = arcsin(n₂ / n₁)
代码里判断全反射很简单:如果 n₁ / n₂ · sin(θ₁) > 1,那就没有折射光线,直接反射。
3.4.3 菲涅耳公式
斯涅尔定律只告诉你光线往哪走,但没告诉你多少光过去了。菲涅耳公式算的是反射率和透射率。
对于 S 偏振(电场垂直于入射面):
R_s = | (n₁·cos(θ₁) - n₂·cos(θ₂)) / (n₁·cos(θ₁) + n₂·cos(θ₂)) |²
对于 P 偏振(电场平行于入射面):
R_p = | (n₁·cos(θ₂) - n₂·cos(θ₁)) / (n₁·cos(θ₂) + n₂·cos(θ₁)) |²
透射率 T = 1 - R(不考虑吸收时)。
你想想看,如果入射角是布儒斯特角,P 偏振的反射率会降到零。这个特性在激光器窗口设计里特别有用。
3.4.4 多层膜界面
实际镜头表面都有镀膜。单层界面模型不够用了,得用传输矩阵法(TMM)。
每层膜用一个 2×2 矩阵表示:
M_i = [ cos(δ_i), (i / η_i) · sin(δ_i) ]
[ i · η_i · sin(δ_i), cos(δ_i) ]
其中 δ_i = 2π · n_i · d_i · cos(θ_i) / λ,η_i 是修正导纳。
把所有层的矩阵乘起来,就能算出总反射率和透射率。我当年写镀膜优化程序时,这个矩阵乘法循环跑了上万次,每次都要小心数值溢出。
3.5 知识结构图
下面这张图把本章的核心概念串起来了。你一看就明白它们之间的关系。
3.6 实际项目中的注意事项
最后聊几个我踩过的坑,你遇到了能少走弯路。
- 温度影响: 折射率随温度变化。精密系统里,20°C 和 40°C 的折射率差可能让焦面偏移几十微米。我一般会在追迹代码里加一个温度补偿项。
- 应力双折射: 玻璃成型时内部有残余应力,会导致折射率各向异性。高功率激光系统里这个影响特别明显。解决办法是选退火质量好的玻璃。
- 镀膜相位: 多层膜不仅改变反射率,还会引入相位变化。干涉系统里这个相位差必须算进去,否则条纹位置全错。
- 数据一致性: 不同厂商提供的折射率数据测量条件可能不同。我习惯把所有数据统一到 20°C、1 atm 的标准条件下再比较。