第三章 数学基础(二):坐标系、法向量与曲率分析

好,我们接着聊数学。上一章我们把向量、矩阵、微分几何的基本概念过了一遍。这一章,咱们要动真格的了——把坐标系、法向量、曲率这些工具,真正用到自由曲面设计里。

说实话,我刚入行那会儿,觉得坐标系不就是个参考系嘛,有啥好讲的?直到有一次,我在设计一个离轴三反系统时,全局坐标和局部坐标搞混了,结果光线追迹全乱套。嗯,从那以后,我再也不敢小看坐标系转换了。

3.1 全局坐标系与局部坐标系

自由曲面设计里,我们通常用两套坐标系:

  • 全局坐标系(Global Coordinate System, GCS):固定在光学系统上的世界坐标系。所有光学元件、光线、像面的位置,最终都要用全局坐标来描述。
  • 局部坐标系(Local Coordinate System, LCS):附着在每个光学曲面上的坐标系。曲面的数学表达式、法向量、曲率,都是在局部坐标系里定义的。

为什么要搞两套?你想想看,一个自由曲面在空间里可能是倾斜、偏心的。如果直接在全局坐标里写曲面方程,那方程会复杂到让人崩溃。但在局部坐标里,曲面方程可以写得很简洁,比如:

z(x, y) = Σ A_ij * x^i * y^j

然后通过一个旋转平移矩阵,把局部坐标映射到全局坐标。这就是标准做法。

核心概念:局部坐标系是曲面的"母语",全局坐标系是系统的"通用语"。两者之间的桥梁就是刚体变换矩阵(旋转 + 平移)。

3.1.1 坐标系变换的数学表达

假设局部坐标系原点在全局坐标系中的位置为 t = (tx, ty, tz),三个坐标轴的方向由旋转矩阵 R 给出。那么,一个点在局部坐标下的坐标 p_local,转换到全局坐标就是:

p_global = R * p_local + t

反过来,从全局到局部:

p_local = R^T * (p_global - t)

这里 R 是正交矩阵,所以逆矩阵等于转置。这个性质在计算中非常有用。

变换方向 公式 说明
局部 → 全局 p_global = R·p_local + t 先旋转,再平移
全局 → 局部 p_local = R^T·(p_global - t) 先平移,再旋转

我的习惯:在代码里,我通常把旋转矩阵和平移向量打包成一个 4×4 齐次变换矩阵。这样一次矩阵乘法就能完成变换,既快又不容易出错。

3.2 曲面法向量与切平面计算

法向量,说白了就是曲面在某一点的"朝向"。在自由曲面设计里,法向量的重要性怎么强调都不过分——光线追迹、反射/折射定律、曲率计算,全都离不开它。

3.2.1 显式曲面的法向量

对于显式曲面 z = f(x, y),法向量可以这样求:

n = (-∂f/∂x, -∂f/∂y, 1)

然后归一化:

n_hat = n / ||n||

举个例子,如果曲面是 z = x² + y²,那么在点 (1, 1, 2) 处:

∂f/∂x = 2x = 2
∂f/∂y = 2y = 2
n = (-2, -2, 1)
n_hat = (-2/3, -2/3, 1/3)

3.2.2 隐式曲面的法向量

对于隐式曲面 F(x, y, z) = 0,法向量就是梯度:

n = ∇F = (∂F/∂x, ∂F/∂y, ∂F/∂z)

这个形式更通用,因为很多自由曲面是用隐式方程定义的。

3.2.3 切平面

有了法向量,切平面就很简单了。过曲面上一点 p0,法向量为 n,切平面方程为:

n · (p - p0) = 0

切平面有什么用?我举个例子:在优化自由曲面时,我们经常需要判断一个点是否在曲面"附近"。用切平面做局部线性逼近,可以快速估算。

我曾经踩过的坑:有一次,我在计算非均匀有理B样条(NURBS)曲面的法向量时,直接用了数值差分。结果在曲面边界附近,法向量方向完全错了。后来才发现,NURBS的基函数在边界处导数不连续,必须用解析法求导。所以,能用解析就别用数值,除非你很清楚自己在做什么。

3.3 曲率分析:高斯曲率与平均曲率

曲率,描述的是曲面"弯曲的程度"。在自由曲面设计里,曲率分析是评估曲面质量的核心手段。

3.3.1 主曲率

过曲面上一点,可以作无数条曲线。每条曲线在该点都有一个法曲率。这些法曲率中,最大值和最小值称为主曲率,记作 κ₁ 和 κ₂。对应的方向称为主方向。

主曲率怎么求?需要用到曲面的第一基本形式和第二基本形式。这里我直接给结论:

对于显式曲面 z = f(x, y):
E = 1 + f_x²
F = f_x * f_y
G = 1 + f_y²

L = f_xx / sqrt(1 + f_x² + f_y²)
M = f_xy / sqrt(1 + f_x² + f_y²)
N = f_yy / sqrt(1 + f_x² + f_y²)

主曲率是方程 (EG - F²)κ² - (EN + GL - 2FM)κ + (LN - M²) = 0 的根

嗯,公式看着有点吓人。但别怕,实际编程时,这些都有现成的库函数。

3.3.2 高斯曲率与平均曲率

有了主曲率,两个重要的综合曲率指标就出来了:

  • 高斯曲率 K = κ₁ × κ₂
  • 平均曲率 H = (κ₁ + κ₂) / 2

这两个指标能告诉我们什么?

曲率类型 数学定义 几何意义 在自由曲面设计中的应用
高斯曲率 K κ₁ × κ₂ K > 0:椭圆点(如球面)
K = 0:抛物点(如柱面)
K < 0:双曲点(如马鞍面)
判断曲面类型,避免出现不可制造的负高斯曲率区域
平均曲率 H (κ₁ + κ₂) / 2 衡量曲面在一点的平均弯曲程度 最小曲面(H=0)在光学设计中用于减少像散

关键洞察:在自由曲面光学设计中,我们通常希望高斯曲率变化平缓。剧烈的曲率变化会导致光线追迹困难,甚至产生无法用传统工艺加工的曲面。我个人的经验是,在设计阶段就做曲率云图分析,可以提前发现很多问题。

3.3.3 曲率分析的实际应用

我记得有一次,我在设计一个自由曲面透镜,优化出来的面型看着挺漂亮。但当我用曲率分析工具一看,发现边缘区域的高斯曲率突然变成了负值。这意味着曲面从"碗状"变成了"马鞍状",这种面型用单点金刚石车床根本加工不出来。后来我加了曲率约束,重新优化,才得到可制造的设计。

所以,我的建议是:曲率分析不是可选项,而是必选项。每次设计完成后,至少检查以下三点:

  1. 高斯曲率是否处处为正(或至少不出现剧烈跳变)
  2. 平均曲率是否在可加工范围内
  3. 主曲率方向是否与加工路径方向匹配

3.4 本章知识体系总览

下面这张图,把本章的核心知识点串起来了。你可以把它当作一个快速索引,复习时对照着看。

第三章 数学基础(二)知识体系 第三章 数学基础(二)知识体系 坐标系 法向量与切平面 曲率分析 全局坐标系 (GCS) 局部坐标系 (LCS) 刚体变换 (R, t) 显式曲面法向量 隐式曲面法向量 切平面方程 主曲率 κ₁, κ₂ 高斯曲率 K = κ₁·κ₂ 平均曲率 H = (κ₁+κ₂)/2 自由曲面设计核心应用 光线追迹 反射/折射定律 可制造性评估 优化约束

学习建议:这一章的公式比较多,我不建议你死记硬背。更好的方法是:理解每个概念的几何意义,然后写一个小程序验证一下。比如,写一个函数计算任意曲面上任意点的法向量和曲率,用已知曲面(球面、柱面)验证结果是否正确。这样做一遍,比看十遍书都管用。

好了,这一章的内容就到这里。坐标系、法向量、曲率,这三个工具是自由曲面设计的"三驾马车"。后面的章节里,我们会反复用到它们。如果你现在觉得有些地方还不太清楚,没关系,先有个印象,后面用到的时候再回来翻翻。