光学定位与追踪技术_如何为射线光学仿真创建复杂的透镜几何结构

“射线光学模块”扩展了 COMSOL Multiphysics® 软件的建模功能,允许用户引入射线追踪仿真。有了该模块,在集成软件环境中对复杂光学系统的热性能、结构及其他方面进行高阶研究不再是一个难题。创建几何模型是仿真成功的第一步。本文以 Petzval 透镜为例,探讨了如何创建复杂的透镜几何结构。

定义复杂透镜系统的光学指标

一般复杂光学系统的常见示例之一是带平场透镜的 Petzval 透镜。下图展示了焦距为 100 mm,焦比约为 f/2.4 的多元透镜系统。

66b0a04309f0c6d6376e4fc7174fc16b.png
包含平场透镜的 Petzval 透镜。

下表给出了这款摄影机镜头的光学指标(与参考文献 1 一致)。几何结构由两个双合透镜和一个平场透镜组成。射线总共折射穿过八个不同的表面。图片还显示了另外两个表面:孔径光阑和图像平面。

c7610cf90db44a1b312b89645260809c.png

在使用 COMSOL Multiphysics 及其附加的“射线光学模块”进行射线光学仿真之前,我们首先需要创建模型的几何结构。在下面的章节中,我们将讨论一些可用的选项。

创建 Petzval 透镜的几何模型

在 COMSOL Multiphysics 中创建模型几何结构有很多种方法。一种方法是使用内置的几何体素组合,包括球体、圆柱体、多边形和线段。你可以利用布尔、分割、变换和转换运算将这些简单的几何实体组合成更特别的形状。

95772192e1700bf2c71d0dc0f11d7924.png

528a1ff9331b0288ec47d42257fd9d31.png
各种几何体素(上图)以及布尔和分割运算(下图)。

你很快会发现,即便是创建最简单的光学几何结构(比如单透镜),也需要大量的运算。为了创建完整的几何模型,我们需要采用不同的数值多次重复相同的运算序列。举例来说,不同透镜的创建步骤是相同的,但是每个透镜的表面曲率半径各不相同。为了避免连续多次建立相同的几何序列,我们可以定义一些几何零件。这些零件是参数化序列,能够像几何体素一样调用。通过这种方式,我们每次可以使用零件实例节点来重复创建透镜。在此节点中,相关的输入参数均取自光学指标。

下图示例展示了一个用户自定义的几何零件。此例中,此零件为透镜,它具有任意的前后曲率半径,外径、表面直径和通光孔径具有多个不同的定义。

b63ad1d81a29d41267decfe361aad7fb.png
用户自定义几何零件的示例。

“射线光学模块”提供了一组预定义零件,这些零件拥有光学仿真最常用的形状,包括上文提到的透镜。这些零件都可以直接在“零件库”中调用。下节将讨论“射线光学模块”的“零件库”。

使用“射线光学模块”的“零件库”

“射线光学模块”已经创建了各种二维和三维零件。一个更高级的案例是三维普通球面透镜(下图)。此零件可用于创建各种形式的透镜,包括凹凸透镜表面的任意组合。实际上,我们可以灵活地利用它创建所有的 Petzval 透镜和双高斯透镜。下图中还展示了圆形平面环零件。该零件可方便我们创建孔径光阑并定义图像平面。

2984e4a41bc759227f70c687828bc86d.png

5685ecf7c9b589a4b029b73587cc31be.png
“射线光学模块”的“零件库”中的零件示例:三维普通球面透镜(上图)和圆形平面环(下图)。

“射线光学模块”提供的“零件库”中的零件经常包含一个或多个变量。这些变量是为了方便以各种不同的方式使用相同的基本零件。比如,为三维普通球面透镜指定不同的通光孔径或通光孔径分数。其他零件允许指定中心厚度或边缘厚度,以生成各种变量。我们还可以指定有效焦距(和折射率)来替代曲率半径。

将光学指标参数加载到 COMSOL Multiphysics® 中

Petzval 透镜几何模型已经基本成型。接着,我们继续插入一个三维普通球面透镜的实例,然后直接输入光学指标表格中的几何参数(也就是曲率半径、中心厚度和直径)。不过,我们可以通过调整光学指标的格式,使之作为一个整体(比如文本文件)被加载到当前模型的全局定义 节点中,从而简化上述过程。如此一来,以后只要需要调整光学指标,就可以在一处地方完成所有修改。Petzval 透镜的光学指标参数如下图所示。

465bbc267a87c2ae62a7f5d4738a8aef.png
Petzval 透镜模型的光学指标参数。

现在已经从“零件库”中加载了两个几何零件(三维普通球面透镜和圆形平面环零件),现在插入 Petzval 透镜(“透镜 1”)的第一个单元。上文定义的光学指标参数可用作零件实例 节点的输入参数。每个透镜参数都拥有一个唯一的名称(比如 Tc_1、R1_1、R2_1 等),所以这些值可以直接输入到表达式 字段中。我们也可以加载包含每个透镜单元的相关表达式定义的文本文件,从而简化此过程。

59283b0b8fe90be49133c9d463ab42ee.png
Petzval 透镜几何模型的第一个单元(透镜 1)。

需要注意的是,除了允许定义表面通光孔径外,三维普通球面透镜零件还可用于指定每个表面的物理直径和整个透镜直径。这些功能使得我们可以构建出与计划制造的几何结构非常匹配的几何结构。举例来说,可以轻松创建包含透镜及其四周的镜筒上的力学与热效应的高保真模型。

接下来,如下图所示,插入三维普通球面透镜的第二个实例,它的作用是定义“透镜 2”。当然,这个单元必须被置于几何模型内合适的绝对位置上。标准的光学指标通常指定了当前透镜的入射面与前面透镜的出射面之间的距离。因此,三维普通球面透镜零件的定义中包含可定位每个透镜表面的入射和出射顶点的工作平面。之后,根据位于前面透镜的出射顶点上的工作平面来放置每个透镜零件实例。如下所示,“T_1”是透镜 1 的出射面和透镜 2 的入射面之间的距离(在此例中,间隔正好是 0。由此我们成功创建了双合透镜,但是同样的原理适用于任何给定的间隔)。

aab73e2bb507a9055ccfc5332642e8a1.png
Petzval 透镜模型几何结构的第二个单元(透镜 2)。

多物理场耦合:Petzval 透镜的射线追踪

其他表面可与透镜单元一起添加到定义了孔径光阑和图像平面的 Petzval 透镜几何模型中。为了方便起见,我们可以将整个几何模型另存为几何序列,这样就可以将它应用到其他 COMSOL Multiphysics 仿真中。完整模型(忽略了杂光孔径)如下所示。我们可以看到,“射线光学模块”具有对完全划分网格的几何结构进行射线追踪的特殊功能。相同的网格还可用于求解其他物理量,比如透镜几何结构中的温度和结构位移,借此简化双向耦合多物理场模型的创建过程。

121981ba36264ab1041298f201bfbcfb.png
完整的 Petzval 透镜几何模型,图片显示了表面网格单元。

其他特征可以添加到零件的定义中。比如,工作平面还被定义在三维普通球面透镜零件中,可指示透镜前后边的位置。这些工作平面可用于精确定位阻挡杂光的光阑,或者定位机械装配特征。此外,我们通过定义选择来分离各个透镜零件的通光孔径、障碍物和边。这些选择可用于快速定义几何光学仿真需要的各种物理特征,如下图所示。

fe6a3b15270d7ea84e2a196c707f94a6.png

3b2996dba6ac5800deeb8f53ffe5ce4b.png
Petzval 透镜中用于定义通光孔径(上图)和障碍物(下图)的选择。

在这个射线追踪案例中,我们基于栅格的射线轨迹生成了单个波长(550 nm)和视场角(轴上)上的结果。在后处理过程中,为了增加视觉效果,下图所示的结果利用了定制颜色表达式。左图(射线追踪)的颜色表达式基于图像平面上的射线位置。下图(点图)则基于入射光瞳的射线位置。利用不同颜色表达式有利于直观显示入射光瞳的光线对最终图像质量的相对贡献程度。

087777051b4643d4cde3862f125e501c.png

1492aac7875e0c6180d76af6c2c4214f.png
Petzval 透镜的射线追踪(上图)和点图(下图)。

后续操作

上文的案例展示了如何在进行射线追踪仿真之前创建光学几何结构。点击下方按钮尝试操作此模型。进入“案例下载”页面后,如果您拥有 COMSOL Access 账号和有效的软件许可证,你可以下载 MPH 文件。

Petzval 透镜​cn.comsol.com
ca007ff84b7cdd0c2599c59a02465e50.png

学习更多关于透镜建模的知识

  • 查看另一个透镜案例:
双高斯透镜​cn.comsol.com
7ab4e92459573859354252fce9f84293.png
  • 阅读相关的博客文章:
利用射线追踪仿真分析白瞳中阶梯光栅光谱仪​cn.comsol.com
86236fde9ea06d11f43ed09ef3ff48a2.png
萨格纳克干涉仪和环形激光陀螺仪的射线光学仿真​cn.comsol.com
cd12d1a41f56d36e42c6b119f39c0bdb.png

参考文献

  1. M.J. Kidger, Fundamental Optical Design, SPIE Press, 2001.

经授权转载自cn.comsol.com/blogs,原作者Stuart Barnes

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

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

相关文章

Java与Python:哪一个最适合您? [信息图]

通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控。 参加AppDynamics APM导览! 在软件开发中,很少有问题比选择编程语言更具分裂性或部落性。 软件开发人员经常以自己选择的工具来强烈地认同自己,将客观…

怎么把php查询到的值显示到下拉框中_RazorSQL for Mac(数据库工具查询)8.5.3

razorsql mac版更新日志变化 查询结果:如果有多个查询结果选项卡,则从查询结果选项卡中选择比较查询结果选项将填充比较工具中的两个查询 漏洞修补 不需要重新启动razorsql才能生效的首选项需要重新启动 自动更新程序不适用于Windows计算机 缺少HBase连接…

docker删除es数据_木杉入门Elasticsearch(4):安装ES

木杉入门本系列的目标是在本地搭建一个Elasticsearch的服务集群,通过在阿里云服务器搭建FRP通道对外提供服务,为小规模应用提供一种高性价比的解决思路。系列内容:木杉入门Elasticsearch(1):ESXI虚拟机安装CentOS木杉入门Elastics…

将serversocket 写在按钮事件中连接不上_Java服务器的模型—TCP连接/流量优化

本文很长哦,但请给我一点时间。通常,我们的应用程序不需要并行处理成千上万的用户,也不需要在一秒钟内处理成千上万的消息。我们只需要应付数十或数百个并发连接的用户,就可以在内部应用程序或某些微服务应用程序中承受如此大的负…

ios 开发设置左滑退出_苹果铃声怎么设置自己的歌?教你用手机快速搞定!

苹果手机铃声怎么设置为自己喜欢的歌曲?由于iOS系统的封闭性,想要给苹果手机更换铃声不像在安卓手机一样那么方便,看到网上很多教程也是需要使用电脑才能完成铃声的设置,有没有不复杂的方法来直接帮我们更换手机铃声?别…

基于单片机步进电机ppt答辩_基于MCU和DSP的步进电机控制技术分析

来源 | 控制与传动步进电机已经渗透入我们生活的方方面面,本文介绍了一些重要的步进电机相关技术,为开发人员基本了解步进电机的工作原理提供了足够的信息,同时也介绍了用微控制器或数字信号处理器控制步进电机的方法。步进电机也叫步进器&am…

div获取第一个子节点jquery_【antd】Tree组件子节点不完全勾选获取父节点的值

注意⚠️:这篇文章适用于后台返回的树结构比较多的情况下,如果数据比较少的情况下,可以参考我的上一篇文章,操作起来比较简单我们在实际操作tree组件和后台交互的时候一般都是需要将父节点传过去,如图:点击…

修改value_Python | 快速修改或命名N个文件夹名称,你会吗?

#欢迎交流:shuilinggan163.com#工作中,经常会遇到需要修改或新建很多文件的文件命,是一件重复且头疼的事情,下面一组Python代码,轻松教你快速实现!程序一:根据文件(SSSSSS)新建并命名空文件夹im…

簇的局部变量中布尔类型_java基础2(变量、常量、数据类型)

一、注释(1)什么是注释?解释说明的文字(注释的内容不会被编译)(2)注释的作用①对代码的解释说明 ②便于后期维护(3)注释的分类:①单行注释 //单行注释作用域:只在当前行有…

数位进制转换详解

文章目录进制进制转换二进制和十进制互相转换十进制 → 二进制十进制正整数 → 二进制十进制负整数 → 二进制十进制负小数 → 二进制十进制小数 → 二进制二进制 → 十进制二进制负整数 → 十进制二进制的正整数 → 十进制二进制小数 → 十进制二进制的负小数 → 十进制八进制…

旋转散点图_聚类分析的结果如何用散点图展示出来?

SPSS系统聚类输出的树状图广受用户喜爱,二阶聚类也可以输出一系列美观的可视化图形用来观察聚类效果,但我们发现Kmeans均值聚类没有提供可视化程度高的图形,那怎么办,我们自己来制作。数据小兵推荐使用3D散点图全方位观察K均值聚类…

async 打包异常_重新打包流中的异常

async 打包异常Java 8已有两年历史,但是仍然存在社区尚未为其开发好的解决方案库的用例,甚至边缘用例。 如何处理流管道中的检查异常就是这样一个问题。 Stream操作接受的功能接口不允许实现抛出已检查的异常,但是我们可能要调用许多方法。 显…

补码基础

关于补码,有如下比较有趣的演化过程: 假如计算机中使用 4 位的二进制表示数据,如图-2,最多能表示 0 到 15(10 进制),之后有牛人做了 一个细微改动,如图-3,将所有二进制以 1 开头的数(大于 7 的数)放到 0 之…

身份验证错误错误指定的句柄无效_基于 Web 端的人脸识别身份验证「实践」

作者:沫沫 政采云前端团队转发链接:https://mp.weixin.qq.com/s/fRDpXixnLIy9c0Uh2tMezQ前言近些年来,随着生物识别技术的逐渐成熟,基于深度学习的人脸识别技术取得了突破性进展,准确率显著提高。现阶段,人…

打开 谷歌浏览器exe_专治各种网银不服:两步开启微软Edge浏览器IE兼容模式

此前微软已经预告过Microsoft Edge将支持IE模式,即可以在该浏览器下使用IE模式加载某些特定的需要的网站。不过在后续更新中微软又突然改口不再面向普通用户提供此功能,而企业级用户若要使用还需要管理员提前配置。现在这款浏览器的正式版已经发布&#…

aspose word 获取标题_Word干货|多级标题的自动编号怎么添加?

在对Word文档进行排版时,大家普遍认为的一个难点就是对多级标题添加自动编号,本期Word妹与大家分享相关技巧的使用。1、添加样式选中文本,点击开始——样式——选择标题1,相同的样式则可以借用F4来实现。PS:以同样方式…

Java集合类梳理

文章目录集合框架CollectionListList常用方法ArrayListArrayList常用方法LinkedListLinkedList常用方法VectorVector 常用方法StackStack 常用方法SetHashSetHashSet 常用方法LinkedHashSetLinkedHashSet 常用方法TreeSetTreeSet常用方法EnumSetEnumSet 常用方法MapHashMapHash…

增加第三方插件_AE插件排行!!

大家好是万能的懒懒酱After effects为视觉效果艺术家和动画设计师带来了大量的效果。然而,第三方开发人员提供了更多独特插件,供After Effects使用。在这里可以帮助你了解哪些插件是最流行的最受欢迎的。第10名:Looks(多功能调色插…

mysql 连续签到天数_签到功能实现,没有你想的那么复杂(一)

1 签到定义以及作用签到,指在规定的簿册上签名或写一“到”字,表示本人已经到达。在APP中使用此功能,可以增加用户粘性和活跃度.2 技术选型redis为主写入查询,mysql辅助查询. 传统签到多数都是直接采用mysql为存储DB,在大数据的情况下数据库的压力较大.查…

java包装项目_项目包装组织

java包装项目程序包是Java的基本概念,是您开始用该语言编程时偶然发现的第一件事。 作为一个初学者,您可能不太关注软件包的结构,但是随着您成为经验丰富且成熟的软件开发人员,您开始考虑可以采取哪些措施来提高其效率。 有几个主…