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 知识结构图:费马原理与折射定律的关系

下面这张图,帮你理清本章的核心逻辑链条。

费马原理推导折射定律知识结构图 费马原理 → 折射定律 推导逻辑 费马原理 建立光程函数 L(x) dL/dx = 0 代入 sinθ 关系 n₁ sinθ₁ = n₂ sinθ₂ 关键点 极值条件 + 几何关系 = 折射定律 无需假设光线路径

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 本章小结

好,我们来收个尾。这一章我们干了三件事:

  1. 理解了费马原理的核心:光走极值路径,等价于光程取极值。
  2. 亲手推导了斯涅尔定律:从光程函数出发,求导等于零,一步到位得到 n₁ sin θ₁ = n₂ sin θ₂。
  3. 对比了推导方法:费马原理更简洁、更通用,特别适合计算机辅助设计。

记住,这个推导过程不仅仅是为了得到一个公式。它给你提供了一种思维方式:任何光学问题,都可以转化为一个优化问题。透镜设计,本质上就是找那个让所有光线“皆大欢喜”的曲面形状。后面的章节,我们会把这个思路用到各种具体的透镜设计中去。