Python光学仿真举例---椭球面完善成像

当一个光学系统所获得的像能够与物完全相似,而且每个物点都刚好汇聚于一个像点,这样的成像称为完善成像

绝大部分光学成像系统设计的目的就是为了获得完善成像。

根据费马原理,如果物点和像点之间的所有光线都能获得相等光程,那么这样的系统既符合光的传播规律,又达到了完善成像条件。

在椭球面反射镜中,对它的两个焦点符合等光程条件,如下图所示:

对两定点距离之和等于常数的点的轨迹,是以该两定点为焦点的椭圆。所以,椭球面反射镜对它的两个焦点等光程。

当光程为正时,物点和像点都是实的,对应的反射面为凹面;如果光程为负,物点和像点都是虚的,对应的反射面为凸面。

现在,已知一个镜面为椭球面,光线由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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vsropy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值