基于zemax的圆孔、矩形衍射、双缝干涉与自定义孔径面型应用分析

news2024/11/23 22:02:32

自学案例节选自某乎

1:圆孔、矩形衍射、双缝干涉与自定义孔径面型应用分析

讨论一些基本的光学衍射、干涉现象,在加深对光学知识理解的同时,重点介绍一下自定义孔径的用法,主要是为了对软件的运用更为了解,并不针对某种具体应用。

与衍射、干涉有关的一些基本现象,常见的名词包括圆孔衍射、矩空衍射、单缝衍射、双缝干涉、爱里斑、泊松亮斑等等。

圆孔的衍射比较简单,也是与爱里斑形成比较关系密切的。圆孔衍射其实是在光学系统中普遍存在的,镜片的尺寸、系统的孔径都是产生圆孔衍射的条件。只不过,通常的孔径都足够大,衍射级次之间的对比度很高,或者说能量集中度很高。导致难以区分或观测。但是,在数学形式上,衍射是一直都存在的,举个简单的例子加以演示。

图1 镜头数据编辑器LDE数据列表

如图1所示,输入镜头面型数据。系统结构主要包含一个光阑面和一个理想透镜,理想透镜的焦距 可随意设定,这里设为50mm即可,像面位置放在理想透镜的焦平面上。光阑位置距离理想透镜为5000mm,即大约为理想透镜焦距的100倍。这样,光阑的成像位置基本就在透镜的焦平面附近,虽然对于圆孔衍射来说,光阑的位置其实不太重要,因为入瞳光束也为圆形(且物面在无穷远),但对于其他形状的光阑来说,某些情况下可能还是有影响,以防万一。

系统参数设置中,入瞳直径设为4mm,其他默认即可,在镜头数据列表中,表面2为光阑面,在面型参数设置中,将孔径类型设为圆形孔径,最小孔径为0,最大圆孔半径为1mm,如图2所示。也就是说,通常要把光阑的孔径设为小于入瞳直径的尺寸,但又不能太小,否则可能会因为计算时采样太小而导致结果失真。

图2 光阑面的参数设置

然后打开点列图,并设置显示爱里斑尺寸,如图3所示,可以看到,爱里斑半径为9um左右。接着,在主菜单中打开分析—>点扩散函数—>惠更斯PSF惠更斯点扩散函数分析窗口。

图3 系统点列图及爱里斑尺寸

设置点扩散函数计算和显示参数,如图4所示。为了使图像显示更为平滑细锐,采样率要设置得适当高一些,尤其是像面图样采样率;而入瞳采样是根据入瞳直径的尺寸进行采样,而不是根据光阑面的尺寸进行采样,所以光阑和入瞳的尺寸差异不能过大。注意,像面采样间距是图样采样步长,默认的情况下,软件根据图像条件自动匹配图样显示尺寸;如果自行设置,图像尺寸由像面采样决定。在显示类型中,为了增强可视效果,采样对数化强度分布,即Log类型,根据自己的喜好选择底数即可。显示方式,可选择灰度、伪彩色等等,也是根据自己的喜好选择。

图4 点扩散函数参数设置

注意观察图8中的衍射图像,第一个暗环的半径为19um左右,与图3中点列图中的爱里斑半径明显不同。这是因为,爱里斑的半径是以系统设置的入瞳直径为基准计算的,不包含后来设置的光阑面的影响;而点扩散函数PSF计算的结果是包含光阑面的影响的。

图5 惠更斯点扩散函数分析

接着,我们将表面2的孔径尺寸修改一下,将最小圆孔半径设为0.8mm,如图6所示,其他保持不变。即将光阑面变为一个环形通光孔径,中间不透光。然后更新惠更斯点扩散函数分析图,如图7所示。可以看到,虽然光阑面是一个圆环,中间是不透光的,但是在像面附近所形成的衍射图形,中间仍然是一个亮斑,这就是著名的泊松亮斑。

图6 光阑面孔径设置

图7 惠更斯点扩散函数分析

接下来,可继续改变光阑的形状,例如矩形孔。如图8所示将面2的光阑孔径类型改为矩形孔径,半径均设为1mm。然后更新惠更斯点扩散分析图,如图9所示。

图8 矩形孔径光阑设置

图9 矩形孔衍射分析

接着,可将矩形光阑变为狭缝,只要将其中一个边长减小到足够小即可。如图10所示,将便面2的矩形孔径减小为0.05mm,Y方向保持为1mm。然后更新点扩散函数分析图,如图11所示,即为狭缝衍射的图形。不过,需要注意的是,孙然矩形狭缝光阑的x方向为窄方向,但经过透镜变换后,衍射条纹的排列确实沿着Y方向,烟味孔径尺寸小,所以聚焦后的衍射极限尺寸反而更大;而Y方向因为孔径尺寸大,所以聚焦后的衍射极限尺寸却更小。

图10 狭缝光阑设置

图11 狭缝光阑衍射分析

以上我们演示了圆孔衍射、矩形衍射以及狭缝衍射的情况。那么,其他形状的孔径如何进行演示呢?尤其像三角形、多边形这样的孔径类型,护着是双缝干涉这样的条件如何实现呢?

在zemax提供的面型孔径类型中,有圆形孔径和矩形孔径,还有托运啊形孔径、但是zemax提供了一种用户自定义面型孔径类型。用户可以通过文件自己编辑孔径类型。该文件孔径以UDA为后缀命名。用户在文本文件中编辑孔径数据。然后文件编辑后的存放路径为...\zemax\objects\apertures。

该路径下已经有一些示例文件,用记事本打开UDA文件,可对文件数据进行编辑,如图12所示复制或新建一个uda文件,编辑数据内容。REC关键字为定义一个矩形孔径,其后的数据定义分别为:中心X坐标、中心Y坐标、X半宽、Y半宽、旋转角度。这里用两个REC关键字定义了两个长方形细长矩形,编辑完毕,假设保存文件名为“双缝1.uda”。

图12 自定义孔径类型编辑

系统入瞳直径仍然为4mm,然后选择孔径类型“用户孔径”,孔径文件选择刚才保存过的文件名“双缝1.UDA”。UDA 缩放为孔径比例缩放,在不清楚缩放条件的情况下,建议不进行缩放。最好是根据实际情况自己重新编辑一个新的孔径文件。确定之后,更新惠更斯点扩散函数分析图,如图14所示,这就是双缝干涉经过透镜变换之后的效果,怎么样?是不是感觉和想象中的双缝干涉不一样?就想单缝衍射被切成片段的感觉。但仔细想想,还是可以理解的,与自由衍射的效果确实是有所不同,其实就是一个单缝被细化,沿着原来单缝的长边从中间劈开成两条缝而已。

图13 自定义孔径类型设置

图14 惠更斯点扩散函数截面分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图说设计模式:单例模式

更多C学习笔记,关注 wx公众号:cpp读书笔记 5. 单例模式 单例模式 模式动机模式定义模式结构时序图代码分析模式分析实例优点缺点适用环境模式应用模式扩展总结 5.1. 模式动机 对于系统中的某些类来说,只有一个实例很重要,例如…

Linux:多线程的操作

多线程操作 进程与线程线程的创建 create_pthread创建线程池给线程传入对象的指针 线程等待 pthread_join退出线程 pthread_exit线程等待参数 retval 与 线程退出参数 retval 线程中断 pthread_cancel获取线程编号 pthread_self线程分离 pthread_detach 进程与线程 进程是资源…

【学习笔记】Kali

纯个人总结,有什么不对的地方欢迎指正。 笔记根据个人学习进度持续更新… 一、 认识Kali 基础了解 Kali是一套基于Debian发行版的一款操作系统。(这里讲一个误区,我以前一直以为kali就属于deepin下的操作系统,但是我知道deepin是…

记录一下:vue3+antd-vue a-form包含a-table实现表格行内校验, 清除 指定行 指定字段 的校验

问题描述下: 目标VLAN值可以输入, 也可以点击后面的按钮进行弹窗选择。由于检验原因,光标失焦但是没有填写就会校验爆红,然后点击选择之后由于没有失焦过程没有触发校验,依然还是红的。这个时候就需要清除 目标VLAN值 …

企业跨境文件传输的核心痛点,怎样保证稳定可靠的传输性能?

随着经济和国际贸易的发展,企业跨境文件传输日趋频繁,多个行业均存在高频且大量的跨境文件传输需求: 跨境电子商务: 跨境电商平台需要进行跨国的订单、支付和物流信息的传输,以便顺利完成交易和配送。涉及跨国企业的内…

Python爬虫实战(实战篇)—18获取【小红书】首页信息写入Excel(仅用于学习-附完整版代码)

文章目录 专栏导读背景1、分析首页页面2、分析获取信息2-1,获取:笔记类型2-2,获取:标题2-3,获取:用户信息2-4,获取:用户ID2-5,获取:用户头像2-6,获取:文章连接完整代码总结专栏导读 文章名称链接Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整…

一篇文章看懂Redission原理

文章目录 ☃️可重入锁原理☃️锁重试和WatchDog机制☃️MutiLock原理 上一篇文章讲解了 Rediision的使用 ,这篇文章讲解其原理 ☃️可重入锁原理 在Lock锁中,他是借助于底层的一个voaltile的一个state变量来记录重入的状态的,比如当前没有人持有这把锁…

Vue配置项之生命周期(组件生命周期)

Lifecycle Hooks 首先说明一下,本人是前端小学生级别的菜鸡,吐槽的话请口下留情,在评论区指出错误或者补充不足,我会很喜欢,互喷不会进步,相互指点才会。。。。谢谢大家啦 目录 Lifecycle Hooks 目录创建…

指针的深入理解(3)(包括数组名的理解、一维数组传参的本质以及指针数组的相关知识及使用)

文章目录 1 数组名的理解2 使用指针访问数组3 一维数组传参的本质4 指针数组5 指针数组的使用 1 数组名的理解 当我们运行以下代码&#xff1a; #include <stdio.h> int main() {int arr[10] { 0 };printf("%p\n", &arr[0]);printf("%p\n", a…

踩坑!被node-sass折磨的一天

文章目录 被node-sass折磨的一天折磨过程了解原因注意事项 被node-sass折磨的一天 折磨过程 起因是要开发一个老项目&#xff0c;照常拉代码、下依赖、启动三步走 依赖开始下载不对了&#xff0c;以为是node版本问题&#xff0c;寻找node-sass对应的node版本 利用nvm&#…

IP地址乱成一团?用Shell一键搞定!

在日常的运维工作中&#xff0c;我们经常需要对各种数据进行处理和分析&#xff0c;其中包括对IP地址的管理和排序。排序后的IP地址列表可以帮助我们更好地进行日志分析、网络流量监控和故障排除。 本文将模拟一个运维场景&#xff0c;展示如何对IP地址进行排序&#xff0c;并探…

云原生应用开发培训,开启云计算时代的新征程

在云计算时代&#xff0c;云原生应用开发技术已经成为IT领域的热门话题。如果您想要转型至云原生领域&#xff0c;我们的云原生应用开发培训将帮助您开启新征程。 我们的课程内容涵盖了云原生技术的基础概念、容器技术、微服务架构、持续集成与持续发布&#xff08;CI/CD&#…

传统零售运营模式有什么缺点?新零售模式下的运营思维好在哪里?

随着科技的进步、消费者需求的多样化以及市场竞争的加剧&#xff0c;传统零售模式已逐渐难以满足现代消费者对购物体验的期待。新零售&#xff0c;作为一个创新的概念&#xff0c;应运而生&#xff0c;它不仅代表着零售行业的未来趋势&#xff0c;更是一种全新的商业思维和运营…

pytest中一个场景测试的demo

注意点1&#xff1a; allure.severity 是一个装饰器&#xff0c;用于设置测试用例的严重性级别。 allure.severity_level.CRITICAL 是Allure提供的严重性级别之一&#xff0c;表示这个测试用例极为重要。allure.severity_level.BLOCKER&#xff1a;阻塞级别的问题&#xff0c…

python发送http请求

python有个内置模块发送请求urllib的request的 openurl()方法&#xff0c;打开一个链接&#xff0c;就是发送一个请求&#xff0c;&#xff0c; 因为内置模块发请求不是那么好用&#xff0c;一般都会使用第三方的请求包&#xff0c;requests模块&#xff0c; 请求头 User-Ag…

Unity基础(一)unity的下载与安装

目录 一:下载与安装 1.官网下载地址 2.推荐直接下载UnityHub 3.选择编辑器版本(推荐长期支持版) 4.在UnityHub安装选择相应的模块 二:创建项目 简介: Unity 是一款广泛应用的跨平台游戏开发引擎。 它具有以下显著特点&#xff1a; 强大的跨平台能力&#xff1a;能将开发的游…

CPI降温仍猛砍降息预期!美联储继续按兵不动,预计今年仅降息一次

要点&#xff1a; 美联储继续保持利率不变&#xff0c;符合市场预期。 决议声明不再说降通胀缺乏进一步进展&#xff0c;改称取得适度的进... 要点&#xff1a; 美联储继续保持利率不变&#xff0c;符合市场预期。 决议声明不再说降通胀缺乏进一步进展&#xff0c;改称取得适度…

Spring Boot集成antlr实现词法和语法分析

1.什么是antlr&#xff1f; Antlr4 是一款强大的语法生成器工具&#xff0c;可用于读取、处理、执行和翻译结构化的文本或二进制文件。基本上是当前 Java 语言中使用最为广泛的语法生成器工具。Twitter搜索使用ANTLR进行语法分析&#xff0c;每天处理超过20亿次查询&#xff1…

【Redis】Redis常见问题——缓存更新/内存淘汰机制/缓存一致性

目录 回顾数据库的问题如何提高 mysql 能承担的并发量&#xff1f;缓存解决方案应对的场景 缓存更新问题定期生成如何定期统计定期生成的优缺点 实时生成maxmemory 设置成多少合适呢&#xff1f;项目类型上来说 新的问题 内存淘汰策略Redis淘汰策略为什么redis要内存淘汰内存淘…

乡村振兴的科技创新引领:加强农业科技研发,推广先进适用技术,提高农业生产效率,助力美丽乡村建设

目录 一、引言 二、农业科技研发的重要性 &#xff08;一&#xff09;提升农业生产效率 &#xff08;二&#xff09;促进农业产业升级 &#xff08;三&#xff09;保障粮食安全 三、加强农业科技研发的策略 &#xff08;一&#xff09;加大投入力度 &#xff08;二&…