3. 符号规则与光线追迹:国际符号规则、光线追迹的基本流程、近轴光线追迹公式

好,我们进入第三讲。前两讲我们把近轴光学的核心概念——光轴、近轴区、理想像——都聊透了。但光有概念不行,你得能算。怎么算?第一步,就是给光线和光学系统定一套统一的“语言”。

这套语言,就是符号规则。没有它,你算出来的东西别人看不懂,甚至你自己换个方向就算错了。我当年刚入行时,就因为符号搞反,一个简单的双胶合透镜设计,愣是折腾了两天没对上焦。后来发现,就是符号规则没统一。

3.1 国际符号规则:给光线一个坐标系

说白了,符号规则就是给光线在空间中的位置和方向定个正负号。国际上最通用的,是笛卡尔符号规则。它的核心就一句话:光线从左向右传播。

具体怎么定?我习惯这样记:

  • 光轴方向:光线传播方向为正。通常我们设光轴为 Z 轴,从左到右为正。
  • 垂直方向:光轴以上为正,光轴以下为负。这对应 Y 轴。
  • 角度:从光轴(或法线)转向光线,逆时针为正,顺时针为负。这个容易搞混,你想想看,逆时针是数学上的正方向。
  • 曲率半径:球面的曲率中心在顶点右侧时,曲率半径为正;在左侧时为负。
  • 距离:沿光轴方向,从参考点(比如顶点、物点)到下一个参考点,顺光线方向为正,逆光线方向为负。

核心原则:所有几何量(长度、角度)都是有方向的。正负号不是数学游戏,它直接决定了透镜是汇聚还是发散,像是实像还是虚像。

为了让你一眼看明白,我画了张图。这张图把符号规则的核心要素都标出来了,你对照着看,会清晰很多。

图3-1:国际符号规则(笛卡尔符号)示意图 Z(光轴) 光线传播方向(+Z) Y +Y(光轴以上为正) -Y 顶点 O C(曲率中心) R > 0 入射光线 U > 0(逆时针) y 关键记忆点: 1. 光线从左向右(+Z)传播。 2. 光轴以上(+Y)为正。 3. 角度从光轴逆时针转到光线为正。 4. 曲率中心在顶点右侧,R为正;左侧,R为负。 5. 距离顺光线方向为正。

我的小习惯:每次开始一个新的光学设计,我做的第一件事就是在纸上画一条水平线,标上“+Z”和“+Y”。然后所有数据都对着这个坐标系写。这能避免90%以上的低级错误。

3.2 光线追迹的基本流程:从物到像的“行军路线”

有了符号规则,我们就可以开始追迹光线了。光线追迹,说白了就是模拟一条光线从物点出发,经过一个个光学面,最终到达像点的过程。

基本流程是这样的:

  1. 定义初始光线:确定光线的起始点坐标(物点位置)和方向(孔径角或视场角)。
  2. 计算与第一个面的交点:光线从当前位置传播,直到碰到第一个光学面(透镜表面)。求出交点的坐标。
  3. 计算入射角:在交点处,作该表面的法线。计算光线与法线的夹角,即入射角。
  4. 应用折射定律(斯涅尔定律):根据入射角和两侧介质的折射率,计算出折射角。
  5. 确定出射光线:以新的方向和交点作为起点,得到出射光线。
  6. 重复步骤2-5:将出射光线作为下一面的入射光线,继续追迹,直到光线穿过所有光学面。
  7. 到达像面:最后一条出射光线与像面的交点,就是这条光线的像点位置。

核心思想:光线追迹就是一个“传递-折射-再传递”的循环过程。每一步都只关心当前面和下一个面,不关心全局。这种“局部计算、全局串联”的思路,是光学计算的基础。

这个流程,我用一张流程图帮你梳理一下。你跟着箭头走一遍,就能理解整个逻辑链条。

图3-2:光线追迹基本流程图 1. 定义初始光线 2. 计算与当前面交点 3. 计算入射角 4. 应用折射定律 → 出射光线 到像面? 输出像点坐标 传递到下一面 是 否 循环

我曾经踩过的坑:在循环判断时,忘记处理“全反射”的情况。当光线从光密介质射向光疏介质,且入射角大于临界角时,就没有折射光线了。程序会直接报错。所以,在“应用折射定律”这一步,一定要加一个全反射判断。

3.3 近轴光线追迹公式:把复杂问题简单化

上面说的是一般光线的追迹流程,计算量很大,涉及三角函数。但在近轴区,我们有个大杀器——近轴近似。

还记得第二讲说的吗?近轴区内,角度很小,所以 sin θ ≈ θ,tan θ ≈ θ,cos θ ≈ 1。这个近似,把复杂的三角函数计算,变成了简单的线性代数运算。

近轴光线追迹的核心公式,其实就两个:

3.3.1 传递公式(Transfer Formula)

光线从一个面传播到下一个面,它的高度会变化。公式很简单:

y₂ = y₁ + d * u₁'

其中:

  • y₁:光线在当前面上的高度
  • u₁':光线离开当前面后的孔径角(近轴角,单位是弧度)
  • d:当前面到下一个面的轴向距离(注意符号!顺光线为正)
  • y₂:光线在下一个面上的高度

3.3.2 折射公式(Refraction Formula)

光线经过一个球面折射,它的角度会改变。公式是:

n' * u' - n * u = - (n' - n) * y / R

或者写成更常用的形式:

n' * u' = n * u - (n' - n) * y / R

其中:

  • n, n':分别为入射介质和出射介质的折射率
  • u, u':分别为入射角和出射角(近轴角)
  • y:光线在球面顶点处的高度
  • R:球面的曲率半径(带符号!)

公式的物理意义:折射公式的本质是“光焦度”的贡献。右边第二项 (n' - n) * y / R 就是球面产生的偏折量。曲率半径 R 越小,折射率差越大,偏折就越厉害。

3.3.3 完整的追迹流程(近轴版)

把传递和折射结合起来,就是近轴光线追迹的完整流程。我习惯用一个表格来记录每一步的计算结果,这样非常清晰。

步骤 操作 输入 公式 输出
1 初始化 物点 y₀, 孔径角 u₀ — 初始光线参数
2 传递到第1面 y₀, u₀, 距离 d₀ y₁ = y₀ + d₀ * u₀ 第1面高度 y₁
3 在第1面折射 y₁, u₀, n₀, n₁, R₁ n₁*u₁ = n₀*u₀ - (n₁-n₀)*y₁/R₁ 出射角 u₁
4 传递到第2面 y₁, u₁, 距离 d₁ y₂ = y₁ + d₁ * u₁ 第2面高度 y₂
5 在第2面折射 y₂, u₁, n₁, n₂, R₂ n₂*u₂ = n₁*u₁ - (n₂-n₁)*y₂/R₂ 出射角 u₂
... ... ... ... ...
N 传递到像面 y_last, u_last, d_last y_img = y_last + d_last * u_last 像点高度 y_img

你看,整个过程就是反复套用这两个公式。没有三角函数,没有复杂运算。这就是近轴光学的魅力——用最简单的数学,描述最核心的光学行为。

我的建议:刚开始学的时候,别急着写代码。拿一支笔,一张纸,对着一个单透镜,手动算一遍从物点到像点的完整追迹。算完三个面,你就能彻底理解这两个公式是怎么工作的。我当年就是这么干的,效果比看十遍书都好。

3.4 一个完整的计算示例

光说不练假把式。我们来看一个具体的例子。

系统参数:

  • 一个单透镜,折射率 n = 1.5
  • 第一面曲率半径 R₁ = +100 mm(凸面朝左)
  • 第二面曲率半径 R₂ = -100 mm(凸面朝右)
  • 透镜厚度 d = 10 mm
  • 物在透镜前 200 mm 处,物高 y₀ = 10 mm
  • 初始孔径角 u₀ = 0(轴上物点发出的平行光?不,这里是有限远物点,我们取一条从物点出发到第一面顶点的光线,其角度 u₀ = y₀ / (-200) = -0.05 rad)

追迹过程:

步骤1:初始化
  y₀ = 10 mm, u₀ = -0.05 rad, n₀ = 1.0 (空气)

步骤2:传递到第一面
  d₀ = 200 mm (物到第一面)
  y₁ = y₀ + d₀ * u₀ = 10 + 200 * (-0.05) = 10 - 10 = 0 mm
  (嗯,这条光线刚好打到第一面的顶点上,简化计算)

步骤3:在第一面折射
  n₁ = 1.5, R₁ = +100 mm
  n₁ * u₁ = n₀ * u₀ - (n₁ - n₀) * y₁ / R₁
  1.5 * u₁ = 1.0 * (-0.05) - (1.5 - 1.0) * 0 / 100
  1.5 * u₁ = -0.05
  u₁ = -0.03333 rad

步骤4:传递到第二面
  d₁ = 10 mm (透镜厚度)
  y₂ = y₁ + d₁ * u₁ = 0 + 10 * (-0.03333) = -0.3333 mm

步骤5:在第二面折射
  n₂ = 1.0 (空气), R₂ = -100 mm
  n₂ * u₂ = n₁ * u₁ - (n₂ - n₁) * y₂ / R₂
  1.0 * u₂ = 1.5 * (-0.03333) - (1.0 - 1.5) * (-0.3333) / (-100)
  u₂ = -0.05 - ( -0.5 * -0.3333 / -100 )
  u₂ = -0.05 - (0.16665 / -100)
  u₂ = -0.05 - (-0.0016665)
  u₂ = -0.04833 rad

步骤6:传递到像面(假设像面在透镜后某处,我们需要求像距)
  设像距为 d₂,像点高度 y_img = 0(轴上点)
  y_img = y₂ + d₂ * u₂ = 0
  -0.3333 + d₂ * (-0.04833) = 0
  d₂ = -0.3333 / -0.04833 ≈ 6.896 mm
  像在透镜后约 6.9 mm 处。

注意:这个例子中,我们追迹的是一条从物点出发、经过透镜顶点的光线。实际追迹时,你需要追迹多条不同高度的光线,才能确定像的大小和位置。但原理完全一样,就是反复套用传递和折射公式。