当一个光学系统所获得的像能够与物完全相似,而且每个物点都刚好汇聚于一个像点,这样的成像称为完善成像。
绝大部分光学成像系统设计的目的就是为了获得完善成像。
根据费马原理,如果物点和像点之间的所有光线都能获得相等光程,那么这样的系统既符合光的传播规律,又达到了完善成像条件。
在椭球面反射镜中,对它的两个焦点符合等光程条件,如下图所示:
对两定点距离之和等于常数的点的轨迹,是以该两定点为焦点的椭圆。所以,椭球面反射镜对它的两个焦点等光程。
当光程为正时,物点和像点都是实的,对应的反射面为凹面;如果光程为负,物点和像点都是虚的,对应的反射面为凸面。
现在,已知一个镜面为椭球面,光线由A点发出,B点为接收点,如下图所示:
其中各点坐标为A(-40,0),B(40,0),P(0,30),反射镜直径为60mm,在Python中仿真满足条件的反射镜。
(1)用几何的方法仿真
椭圆示意图如下:
根据解析几何,焦点为F1(-c,0)和F2(c,0)且椭圆满足以下方程:
用Python脚本实现如下:
import numpy as np
import matplotlib.pyplot as plt
import math
# 设置matplotlib以支持中文显示和负号
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 椭圆参数
c = 40
b = 30
a = math.sqrt(b**2 + c**2)
# 椭圆方程
x = np.arange(-40, 40, 0.1)
y = b * np.sqrt(1 - (x**2) / (a**2))
# 绘制椭圆
plt.plot(x, y, 'k', linewidth=4)
# 画椭球面(只取上半部分,且连接左右两侧)
x1 = np.arange(-40, 0, 5)
y1 = b * np.sqrt(1 - (x1**2) / (a**2))
# 绘制椭球面上的点(连接x=-40和x=40的点)
for i in range(len(x1)):
plt.plot([-40, x1[i]], [0, y1[i]], 'b')
plt.plot([40, x1[i]], [0, y1[i]], 'b')
# 绘制坐标轴
plt.plot([-40, 40], [0, 0], '*k') # x轴上的点
plt.plot([-40, 40], [0, 0], ':r') # x轴
plt.plot([0, 0], [-10, 40], ':r') # y轴
# 设置坐标轴比例和标题
ax = plt.gca()
ax.set_aspect('equal')
plt.xlim(-50, 50)
plt.ylim(-15, 45)
plt.title('理想椭圆面镜完善成像')
plt.xlabel('x/mm')
plt.ylabel('y/mm')
# 显示图形
plt.show()