LightPipes透镜传播 文章目录透镜和柱透镜透镜传播模型透镜和柱透镜【Lens】是LightPipes中的透镜类其功能是模拟光场穿过一个理想薄透镜如果入射光场是高斯光束则采用ABCD理论。否则根据Fourier光学经过Lens的光场将被乘以一个相位F o ( x , y ) exp ⁡ [ − j 2 π λ ( x − x 0 ) 2 ( y − y 0 ) 2 2 f ] F i ( x , y ) F_o(x,y) \exp\left[-j\frac{2\pi}{\lambda}\frac{(x-x_0)^2(y-y_0)^2}{2f}\right]F_i(x,y)Fo​(x,y)exp[−jλ2π​2f(x−x0​)2(y−y0​)2​]Fi​(x,y)【CylindricalLens】是个柱透镜。由于采用了薄透镜假设所以光场再通过透镜前后强度分布并未发生变化变化的是相位分布即传播方向。为了查看其强度变化可在通过透镜之后再传播一段距离效果如下在仿真过程中需要注意计算窗口尺寸需要满足D ⩽ N λ f D\leqslant\sqrt{N\lambda f}D⩽Nλf​其中N NN是采样点数λ \lambdaλ是波长f ff是透镜焦距。代码为fromLightPipesimport*importmatplotlib.pyplotaspltdefdrawDct(dct,st):fori,keyinenumerate(dct):axplt.subplot(sti)ax.imshow(Intensity(dct[key]))plt.title(key)plt.axis(off)plt.show()FinBegin(1.5*mm,532*nm,512)FinPlaneWave(Fin,w1*mm)f20*mm L22*mm dct{}dct[PlaneWave]Fin dct[Lens]Forvard(Lens(Fin,f),L)dct[CylindricalLens]Forvard(CylindricalLens(Fin,f),L)drawDct(dct,131)透镜传播模型LightPipes提供了三种透镜传播模型分别是【LensFarfield】使用直接FFT方法计算输入场的远场即焦点处的光场分布【LensForvard】使用Forvard传播器计算经过透镜传播到任意距离z处的光场【LensFresnel】使用Fresnel传播器计算经过透镜传播到任意距离z处的光场注意不能传播到焦点后面示例如下需要注意在LensFresnel中会对z 1 − z f z − f z_1\frac{-zf}{z-f}z1​z−f−zf​进行判断若z 1 0 z_10z1​0会报错。代码为FinBegin(1.5*mm,532*nm,128)FinPlaneWave(Fin,w1*mm)f50*mm z40*mm dct{}dct[LensFarfield]LensFarfield(Fin,f)dct[LensForvard]LensForvard(Fin,f,z)dct[LensFresnel]LensFresnel(Fin,f,z)drawDct(dct,131)

相关新闻

最新新闻

JMeter接口自动化:数据分离与CSV数据驱动测试实战指南

JMeter接口自动化:数据分离与CSV数据驱动测试实战指南

1. 项目概述:为什么数据分离是接口自动化的“分水岭”?做接口测试的朋友,尤其是用Jmeter搞自动化的,肯定都踩过这个坑:脚本写好了,参数也配好了,跑第一次测试,完美通过。然后你兴冲冲…

2026/7/10 23:50:29
SpringBoot 整合 MyBatis-Plus 分页插件完整教程

SpringBoot 整合 MyBatis-Plus 分页插件完整教程

SpringBoot 整合 MyBatis-Plus 分页插件完整教程一、前置说明MP 分页必须手动注册分页拦截器,不配置会出现分页 total 总条数为 0、不分页的问题;适配 MP 3.5 新版写法(MybatisPlusInterceptor 统一插件入口),废弃旧版…

2026/7/10 23:50:29
Linux dhcpd命令超全详解|DHCP服务搭建、调试与排错实战教程

Linux dhcpd命令超全详解|DHCP服务搭建、调试与排错实战教程

1. 命令简介 dhcpd 是 Internet Systems Consortium (ISC) DHCP 服务器软件的核心守护进程。它实现了动态主机配置协议(DHCP),用于在局域网中自动分配 IP 地址、子网掩码、默认网关、DNS 服务器等网络配置参数给客户端设备。该服务支持 IPv4…

2026/7/10 23:50:29
一文读懂openeuler/vectorBlas架构设计:从VectorBLAS类到分层接口实现

一文读懂openeuler/vectorBlas架构设计:从VectorBLAS类到分层接口实现

一文读懂openeuler/vectorBlas架构设计:从VectorBLAS类到分层接口实现 【免费下载链接】vectorBlas A high performance Blas Library Based on JDK vector API 项目地址: https://gitcode.com/openeuler/vectorBlas 前往项目官网免费下载:https:…

2026/7/10 23:50:29
Deepin升级工具代码贡献指南:如何为开源项目提交Pull Request

Deepin升级工具代码贡献指南:如何为开源项目提交Pull Request

Deepin升级工具代码贡献指南:如何为开源项目提交Pull Request 【免费下载链接】deepin-upgrade-tool Deepin upgrade tool 项目地址: https://gitcode.com/openeuler/deepin-upgrade-tool 前往项目官网免费下载:https://ar.openeuler.org/ar/ De…

2026/7/10 23:50:29
学生信息管理系统 结构化需求分析:从3类用户需求到7个核心数据流图实战

学生信息管理系统 结构化需求分析:从3类用户需求到7个核心数据流图实战

学生信息管理系统实战指南:从需求分析到数据流图的全流程解析 在软件工程的学习过程中,学生信息管理系统是一个经典而实用的课程设计项目。它不仅涵盖了软件开发的完整生命周期,还能帮助初学者建立起系统化思维。本文将带你深入理解如何从零开…

2026/7/10 23:45:29

月新闻