2. 几何光学基础回顾:折射定律(斯涅尔定律)的费马原理推导
好,我们正式开始。在动手设计透镜之前,得先把最底层的工具磨利索。折射定律,也就是斯涅尔定律,是几何光学的基石。今天我不打算直接甩公式,而是带你从费马原理的角度,亲手把它“推”出来。
你可能会问:费马原理不就是“光走极值路径”吗?这东西怎么就能推出折射定律?别急,我们一步步来。我个人习惯是先理解物理图像,再动手算数学,这样不容易迷失方向。
2.1 费马原理的核心思想
费马原理,说白了就是一句话:光在两点之间传播,实际走的路径是所需时间取极值的那条。这个极值,大多数情况下是最小值,所以也常叫“最短时间原理”。
为什么会这样?你可以想象光是个“急性子”,总想尽快到达目的地。但光速在不同介质里不一样,所以它不会傻傻走直线,而是会“抄近道”——在快介质里多走点,在慢介质里少走点。
核心公式:光程 L = n × d,其中 n 是折射率,d 是几何路程。光走的时间 t = L / c(c 是真空光速)。所以求时间极值,等价于求光程极值。
2.2 从费马原理到折射定律的推导
好,现在我们来干正事。假设光从介质1(折射率 n₁)中的点 A,射到介质2(折射率 n₂)中的点 B。两种介质的界面是平面。光在界面上发生折射,入射角为 θ₁,折射角为 θ₂。
我们设入射点坐标为 (x, 0),A 点坐标为 (0, y₁),B 点坐标为 (d, -y₂)。注意,y₁ 和 y₂ 都是正数,B 点在界面下方,所以 y 坐标是负的。
光从 A 到 B 的总光程为:
L = n₁ × √(x² + y₁²) + n₂ × √((d - x)² + y₂²)
根据费马原理,实际路径对应的光程取极值,也就是 dL/dx = 0。我们来求导:
dL/dx = n₁ × (x / √(x² + y₁²)) + n₂ × ( -(d - x) / √((d - x)² + y₂²) ) = 0
注意看,x / √(x² + y₁²) 是什么?就是 sin θ₁!同样,(d - x) / √((d - x)² + y₂²) 就是 sin θ₂。于是上式变成:
n₁ × sin θ₁ - n₂ × sin θ₂ = 0
整理一下,就是大名鼎鼎的斯涅尔定律:
n₁ × sin θ₁ = n₂ × sin θ₂
你看,整个过程干净利落。没有复杂的几何作图,没有“光线追迹”的繁琐,仅仅是一个求导,就把折射定律给“变”出来了。这就是费马原理的威力。
我的经验:我在做自由曲面透镜设计时,经常用这个思路来反推曲面形状。给定目标光强分布,用费马原理建立光程方程,然后数值求解曲面点云。比传统方法灵活得多。
2.3 推导过程中的关键点
嗯,这里有几个地方要注意,我当年学的时候也栽过跟头。
- 符号问题:求导时,B 点的 x 坐标是 (d - x),对 x 求导会多一个负号。别搞反了,否则你会得到 n₁ sin θ₁ + n₂ sin θ₂ = 0,那就全乱了。
- 极值类型:我们只求了 dL/dx = 0,没判断是极大值还是极小值。实际上,对于折射,它通常是极小值。但在某些特殊情况下(比如全反射临界角附近),可能是鞍点。不过对于透镜设计,我们基本只关心极小值情况。
- 界面形状:我们假设界面是平面。如果界面是曲面,推导会复杂一些,但核心思想不变——光程取极值。曲面透镜的设计,本质上就是求解一个变分问题。
我曾经踩过的坑:有一次在设计非球面透镜时,我直接用斯涅尔定律逐点追迹,结果发现边缘光线聚焦位置不对。后来检查才发现,我用的折射率是错的——材料在近红外波段的折射率跟可见光差不少。记住,折射率是波长的函数,设计前一定要确认工作波段。
2.4 知识结构图:费马原理与折射定律的关系
下面这张图,帮你理清本章的核心逻辑链条。
2.5 费马原理推导 vs. 传统几何推导
你可能在课本上看过另一种推导方法——用惠更斯原理或者几何作图。我把两种方法对比一下,你就知道费马原理的优势在哪了。
| 对比项 | 费马原理推导 | 传统几何推导 |
|---|---|---|
| 核心思想 | 光程取极值 | 波前重建 / 几何相似 |
| 数学工具 | 微积分(求导) | 三角学、相似三角形 |
| 推导过程 | 直接、简洁、一步到位 | 需要构造辅助线,步骤多 |
| 可扩展性 | 容易推广到曲面、非均匀介质 | 推广困难,需要重新作图 |
| 物理直觉 | 需要理解“极值”概念 | 直观,符合日常经验 |
我个人更偏爱费马原理的推导方式。你想想看,在透镜设计里,我们经常要处理非球面、自由曲面,甚至渐变折射率材料。如果用传统几何方法,每换一种曲面就得重新画图、重新找几何关系,累都累死了。但费马原理呢?只要你能写出光程函数,求个导就完事了。程序化、可复用,这才是工程师该用的方法。
2.6 一个简单的数值验证
光说不练假把式。我们来写一小段伪代码,验证一下费马原理推导的正确性。假设 n₁=1.0(空气),n₂=1.5(玻璃),入射角 θ₁=30°。
// 输入参数
n1 = 1.0
n2 = 1.5
theta1 = 30° // 转换为弧度: 0.5236 rad
// 斯涅尔定律计算折射角
theta2 = arcsin(n1 * sin(theta1) / n2)
= arcsin(1.0 * 0.5 / 1.5)
= arcsin(0.3333)
= 19.47°
// 费马原理验证:取不同入射点 x,计算光程
// 假设 A(0, 10), B(20, -15)
// 理论入射点 x 应满足 tan(theta1) = x/10, 即 x = 5.77
// 理论出射点水平距离 20-x = 14.23, tan(theta2) = 14.23/15, 成立
// 计算 x=5.77 时的光程
L_min = 1.0 * sqrt(5.77² + 10²) + 1.5 * sqrt(14.23² + 15²)
= 1.0 * 11.55 + 1.5 * 20.66
= 11.55 + 30.99
= 42.54
// 尝试 x=4.0(偏离理论点)
L_test = 1.0 * sqrt(4² + 10²) + 1.5 * sqrt(16² + 15²)
= 1.0 * 10.77 + 1.5 * 21.93
= 10.77 + 32.90
= 43.67 // 大于 L_min,验证了极小值
你看,数值结果完全吻合。实际入射点的光程确实是最小的。这就是费马原理的“物理实在性”——它不是一个数学游戏,而是光传播的真实规律。
实用技巧:在实际的透镜设计软件中(比如 Zemax、Code V),光线追迹的核心算法就是基于费马原理的变分法。你设置一个“评价函数”,软件自动调整曲面参数,让所有光线从物点到像点的光程差最小。说白了,就是计算机在帮你做“dL/dx = 0”的数值求解。
2.7 本章小结
好,我们来收个尾。这一章我们干了三件事:
- 理解了费马原理的核心:光走极值路径,等价于光程取极值。
- 亲手推导了斯涅尔定律:从光程函数出发,求导等于零,一步到位得到 n₁ sin θ₁ = n₂ sin θ₂。
- 对比了推导方法:费马原理更简洁、更通用,特别适合计算机辅助设计。
记住,这个推导过程不仅仅是为了得到一个公式。它给你提供了一种思维方式:任何光学问题,都可以转化为一个优化问题。透镜设计,本质上就是找那个让所有光线“皆大欢喜”的曲面形状。后面的章节,我们会把这个思路用到各种具体的透镜设计中去。