3. 透镜与成像:薄透镜公式、焦距与光焦度、实像与虚像、透镜组合
透镜这东西,说白了就是让光拐个弯。我入行那会儿,第一个项目就是设计一套激光准直系统,结果被一个简单的凸透镜折腾了两周。后来才明白,薄透镜公式看着简单,用起来全是坑。今天咱们就把这块彻底捋清楚。
3.1 薄透镜公式——成像的数学骨架
先给公式:
1/f = 1/v - 1/u
其中:
- f —— 焦距(透镜中心到焦点的距离)
- v —— 像距(透镜到像的距离)
- u —— 物距(透镜到物的距离)
符号规则我建议你死记:实物实像为正,虚物虚像为负。具体来说:
| 参数 | 正值 | 负值 |
|---|---|---|
| 物距 u | 实物在透镜左侧 | 虚物在透镜右侧 |
| 像距 v | 实像在透镜右侧 | 虚像在透镜左侧 |
| 焦距 f | 凸透镜(会聚) | 凹透镜(发散) |
⚠ 我曾经踩过的坑:符号搞反,算出来的像距差好几倍。有一次给客户做投影系统,我忘了把凹透镜的焦距写负号,结果像距算出来是正的,实际怎么调都成不了像。后来查了三天才找到这个低级错误。
3.2 焦距与光焦度——透镜的"度数"
焦距决定了透镜的会聚或发散能力。焦距越短,光弯得越厉害。工程上更常用的是光焦度:
Φ = 1/f
单位是屈光度(D),1 D = 1/m。你配眼镜时说的"度数",其实就是光焦度乘以100。比如200度的近视镜,光焦度是-2 D,焦距是-0.5 m。
| 透镜类型 | 焦距符号 | 光焦度符号 | 典型应用 |
|---|---|---|---|
| 凸透镜(会聚) | 正 | 正 | 放大镜、相机镜头 |
| 凹透镜(发散) | 负 | 负 | 近视眼镜、扩束镜 |
💡 个人习惯:我设计光学系统时,会先把所有透镜的光焦度列出来,正负一加,大概就知道整个系统是会聚还是发散的。这招在初步方案阶段特别管用。
3.3 实像与虚像——你能看到,但不一定能拍到
实像和虚像的区别,我打个比方:
- 实像:光真的汇聚到那个点了。你放一张白纸在那,能看到清晰的像。投影仪、相机传感器上成的都是实像。
- 虚像:光没有真正汇聚,只是你的眼睛"觉得"光是从那个方向来的。放大镜看东西,你看到的正立放大的像就是虚像,它不能呈现在屏幕上。
判断方法很简单:
- 像距 v > 0 → 实像(倒立)
- 像距 v < 0 → 虚像(正立)
🔍 工程应用案例:我在做激光打标机时,需要把激光束聚焦到工件表面。这里必须用实像,因为只有实像才能把能量集中到一点。如果用虚像,激光根本打不出标记。
3.4 透镜组合——两个透镜能做的事,远不止一个
单个透镜的成像能力有限。两个透镜组合,能实现更多功能。比如:
- 扩束镜:一个短焦凸透镜 + 一个长焦凸透镜,把细光束变成粗光束
- 显微镜物镜:短焦物镜 + 长焦目镜,放大微小物体
- 望远镜:长焦物镜 + 短焦目镜,拉近远处景物
组合透镜的计算方法是逐次成像法:
- 先算第一个透镜对物体成的像
- 把这个像当作第二个透镜的"物"
- 再算第二个透镜成的像
- 依此类推
注意:第一个透镜成的像如果在第二个透镜右侧,那就是虚物,物距要取负值。
# 逐次成像计算示例
# 透镜1: f1 = 100 mm, 物距 u1 = 150 mm
# 透镜2: f2 = -50 mm, 间距 d = 50 mm
# 第一步:透镜1成像
v1 = 1/(1/100 - 1/150) # = 300 mm (实像)
# 第二步:透镜2的物距
u2 = d - v1 # = 50 - 300 = -250 mm (虚物)
# 第三步:透镜2成像
v2 = 1/(1/(-50) - 1/(-250)) # = -62.5 mm (虚像)
⚠ 注意:虚物这个概念,很多新手会搞混。你想想看,第一个透镜成的实像在第二个透镜后面,光还没到第二个透镜就已经汇聚过一次了,那第二个透镜"看到"的其实是一个虚拟的光源。这就是虚物。
3.5 知识结构图
下面这张图把本章的核心逻辑串起来了:
3.6 避坑指南
最后,我把自己这些年踩过的坑总结一下:
- 符号规则不统一:不同教材用的符号规则可能不一样。我建议你选定一套,从头到尾用到底。我自己一直用"实物实像为正,虚物虚像为负"这套,十几年没出过问题。
- 忽略透镜厚度:薄透镜公式假设透镜厚度远小于焦距。如果透镜很厚(比如一些大功率聚焦镜),必须用厚透镜公式,否则误差会很大。
- 组合透镜的间距:两个透镜之间的距离不是随便放的。间距变了,等效焦距和成像位置都会变。设计时一定要留出调节余量。
- 虚像的"位置":虚像虽然不能呈现在屏幕上,但它的位置是确定的。你在设计目镜系统时,虚像的位置决定了人眼观察的舒适度。
💡 我的建议:刚开始学透镜成像,别急着用软件仿真。拿一张纸、一支笔,手算几个典型例子。算错了不要紧,关键是理解每一步的物理意义。等你手算熟练了,再用Zemax或Code V去优化,效果会好很多。