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)