数学基础(一):多项式表示法、坐标系与法向量计算
各位同学,欢迎来到《自由曲面光学设计核心技巧》的第一章。说实话,每次讲数学基础,我都怕把大家吓跑。但请相信我,这部分内容就像盖房子的地基——你看着不起眼,可要是没打好,后面盖多高都悬。
今天咱们聊三个核心话题:多项式表示法、坐标系,还有法向量计算。这三样东西,几乎贯穿了自由曲面设计的每一个环节。我自己做了十几年自由曲面,回头想想,当初踩的坑,十有八九都跟这些基础概念没吃透有关。
1. 多项式表示法:自由曲面的“语言”
自由曲面不像球面,没法用一个简单的半径来描述。那怎么办?我们用数学函数来“说”出它的形状。最常用的两种“语言”就是XY多项式和Zernike多项式。
1.1 XY多项式:最直白的表达
XY多项式长这样:
z(x, y) = c·(x² + y²) / (1 + sqrt(1 - (1+k)·c²·(x²+y²))) + Σ A_ij · x^i · y^j
前面那一大串是二次曲面基底,后面那个求和项就是自由曲面的“自由”所在。说白了,就是用x和y的幂次组合,去一点点逼近你想要的形状。
我个人习惯,在初始设计阶段先用XY多项式。为什么?因为它直观。x的2次项对应什么?说白了就是像散。xy交叉项呢?那是离轴像差。你看着系数大小,基本能猜出这个面在矫正什么像差。
1.2 Zernike多项式:更“光学”的表达
Zernike多项式是另一个常用工具。它长这样:
z(ρ, θ) = Σ C_n^m · Z_n^m(ρ, θ)
这里ρ和θ是极坐标。Zernike多项式有个特别好的性质——它在单位圆内是正交的。这意味着什么呢?你调整一个系数,基本不影响其他系数。这在优化时太方便了。
我记得有一次,一个项目要求矫正特定阶数的球差。用XY多项式调了半天,总是牵一发而动全身。换成Zernike后,直接锁定对应的项,几轮优化就搞定了。
| 多项式类型 | 优点 | 缺点 | 我常用的场景 |
|---|---|---|---|
| XY多项式 | 直观、与像差对应清晰 | 高阶项容易振荡 | 初始设计、离轴系统 |
| Zernike多项式 | 正交性好、优化稳定 | 只适用于圆形孔径 | 优化后期、公差分析 |
2. 坐标系:别让“方向”害了你
自由曲面设计里,坐标系是个容易出幺蛾子的地方。咱们主要用两种:局部坐标系和全局坐标系。
2.1 全局坐标系:整个系统的“地图”
全局坐标系就是整个光学系统的参考系。所有元件的位置、方向,都相对于这个坐标系来描述。一般把光轴方向定为Z轴,X和Y轴根据系统布局来定。
举个例子,一个离轴三反系统,每个反射镜的位置和倾斜,都是在全局坐标系里定义的。
2.2 局部坐标系:每个面的“小天地”
每个光学面都有自己的局部坐标系。原点通常在这个面的顶点,Z轴沿着面的法线方向。这样做的好处是,描述面形时不用考虑它放在哪里、转了多少度。
你想想看,如果一个面在全局坐标系里是倾斜的,你用全局坐标去描述它的面形,那表达式会复杂到让你怀疑人生。但用局部坐标系,面形表达式就简单多了。
我曾经带过一个新人,他直接把局部坐标系里的面形数据用到全局坐标系里,结果光线追迹全乱了。排查了两天才找到原因——坐标系搞混了。从那以后,我要求团队所有人在代码里明确标注每个变量是哪个坐标系下的。
3. 曲面法向量计算:光线追迹的“方向盘”
法向量决定了光线在曲面上的反射或折射方向。算错了法向量,后面的所有计算都是错的。
3.1 显式曲面的法向量
如果曲面用z = f(x, y)表示,法向量可以这样算:
N = (-∂f/∂x, -∂f/∂y, 1) / sqrt((∂f/∂x)² + (∂f/∂y)² + 1)
说白了,就是先求偏导,再归一化。对于XY多项式,求偏导就是多项式求导,很简单。对于Zernike多项式,需要用到递推关系,稍微复杂一点。
3.2 隐式曲面的法向量
有些曲面用隐式方程F(x, y, z) = 0表示。这时法向量就是梯度:
N = (∂F/∂x, ∂F/∂y, ∂F/∂z) / |∇F|
嗯,这里要注意,隐式曲面的法向量方向需要小心。我一般会检查一下法向量是否指向光线入射的那一侧,不对就取反。
4. 知识体系总览
下面这张图,是我自己总结的本章知识结构。你可以把它当作一个“地图”,随时回来看看。
这张图把今天讲的内容串起来了。你看,多项式表示法是描述曲面的“语言”,坐标系是描述位置的“框架”,法向量计算则是连接设计与仿真的“桥梁”。三者缺一不可。
好了,第一章的内容就到这里。数学基础看起来枯燥,但真的值得花时间吃透。下一章咱们会聊更具体的曲面设计方法,到时候这些基础就会派上大用场。