APP下载

双棱镜干涉实验虚拟仿真系统设计与开发

2021-07-13施美玲

曲靖师范学院学报 2021年3期
关键词:棱镜条纹光源

施美玲,周 天

(曲靖师范学院 物理与电子工程学院,云南 曲靖 655011)

0 引 言

1801年托马斯·杨完成了著名的双缝干涉实验,为光的波动理论发展奠定了坚实的基础.2002年9月美国《物理世界》杂志将杨氏双缝干涉实验评选为物理学史上最美的十个经典实验之一[1-2].目前杨氏双缝干涉是每个光学学习者都需要掌握的实验,也是大学物理实验教学的难点之一.为了减少缝的衍射对干涉的影响,教学中常用双棱镜干涉实验项目来模拟双缝干涉.采用双棱镜干涉时,需要借助测微目镜来观察实验现象,同步调节单缝宽度、双棱镜倾角和横向位移,借助会聚透镜成像调节共轴、间接测量虚光源宽度和干涉条纹宽度,从而计算入射光波长.实验存在的主要问题是:(1)实验操作要求精细,过程繁琐耗时,在规定课时内很难达到实验教学要求;(2)使用测微目镜观察,视场小,现象不直观;(3)在暗室环境中进行实验,长时间单眼观察、调整测量,容易视觉疲劳,引起人眼刺痛等身体不适状况.本文设计并开发双棱镜干涉实验仿真系统来辅助教学.

1 相关工作

在干涉效果仿真方面,前期已有不少工作.中国科学院物理研究所的曹则贤在《物理学的波概念》一文中给出了用现代仪器得到的双缝干涉条纹图像[3].何坤娜等人[4]精准推导出了干涉条纹空间分布的双叶旋转双曲面方程并基于该方程对传播空间和观察屏上明纹分布进行了理论模拟仿真.翟龙华[5]和李栋玉、时有明等人[6]分别利用LabVIEW编程模拟了双缝干涉的图样和光强分布曲线,并计算条纹间距和对比度.陈华等人[7]用Mathematica软件绘制出光强分布图来测量条纹间距.而更多的光学实验仿真则是用matlab编程模拟的[8-10].其中,毛少娟等人[8]制作了包括干涉、衍射、信息光学、晶体光学实验在内用于光学理论和实验教学的光学实验仿真平台.李玉波等人[9]利用光强分布、光的量子性和波动性的物理原理对光干涉、衍射、牛顿环等物理实验进行了仿真.徐春芳等人[10]对光学单色光杨氏双缝干涉、牛顿环、夫琅禾费衍射以及迈克尔逊干涉仪等光学实验进行可视化模拟.

文献[4-7]只是对干涉现象进行了仿真模拟,在教学中只能用作效果演示.而文献[8-10]在干涉效果仿真时用GUI界面进行了封装,能演示干涉效果随参数的变化,对光干涉理论的教学取到很好的辅助作用.但对光干涉实验的场景和过程都没有模拟,对实验教学没有帮助.本文结合干涉原理及数字图像处理知识对干涉实验进行完整仿真,能同时辅助理论及实验教学.

2 杨氏双缝干涉实验理论基础

杨氏双缝干涉实验模型如图1所示.光源S发出的光传播到缝S1和S2上,形成相干光源.通过双缝S1和S2的光作为波源分别产生一列波动传播到场点P,并各自在P点引起一个振动,形成干涉效果.场点P叠加后的光波振幅为Ap.公式1描述了任意情况下(包含近场区域、远场区域)Ap的光强分布函数[4,6,11-12]:

图1 杨氏双缝干涉实验模型

其中,A1和A2为通过缝S1和S2的光强,λ为光源S的波长,d为双缝S1和S2之间的距离,D为双缝到光屏的距离,x为P点的坐标.

3 双棱镜干涉实验目的及测量数据

为了减少缝光源的衍射对干涉效果的干扰,实验教学中经常用双棱镜对经过单缝的入射光进行折射形成双虚光源并用双虚光源产生干涉效果(见图2).通过双棱镜折射产生的干涉条纹比较窄,需要通过测微目镜来观察.此外双虚光源间的距离d和双虚光源到测微目镜的距离D也要借住凸透镜对虚光源的二次成像结果来计算.

图2 双棱镜干涉实验环境

光干涉实验的目的是通过干涉条纹来计算入射光的波长.通过单缝的光经过双棱镜后在测微目镜中形成干涉条纹,测量出干涉条纹宽度Δx后,按公式2计算出光源波长λ:

为了计算双虚光源间的距离d和双虚光源到测微目镜的距离D,在双棱镜和测微目镜中加入凸透镜,来回移动透镜,在测微目镜中生成两次清晰的虚光源实像,设双虚光源成放大像的间距为d1和缩小像的间距为d2,则有:

其中,a为虚光源生成放大像和缩小像时透镜的位置间距.

4 虚拟仿真系统开发中的关键技术

4.1 以中心对齐的自适合图像大小显示模型

仿真系统中包含大量的图片显示内容.在显示图像的axes组件大小固定的情况下,matlab自带的显示图像函数会自动将图像的尺寸缩放到axes组件的尺寸.当图像尺寸的长宽比与axes组件的长宽比不一致时,图像显示过程中就会出现图像内容被过度拉伸或压扁的畸变.很多程序开发者经常需要耗时地手动调整组件大小来提高图像显示效果.本文提出以中心对齐的自适合图像大小显示模型来解决此问题.该模型保持axes组件的中心位置不变,先将组件的长度和宽度分别设置成图像的长度和宽度,并基于新的大小重新计算axes组件的起点位置坐标,然后按公式(5)模型更新axes组件的位置属性.如图3所示,公式(5)中的pos(1)和pos(2)分别为组件起点的x和y坐标,pos(3)和pos(4)分别为组件的宽度和长度.

图3 以中心对齐的自适合图像大小显示原理

此操作解决了图像长宽比改变缩放引起的图像显示畸变问题,同时也保证axes组件的中心位置保持不变.这种解决方式当图像大小小于axes组件在软件界面上能显示的空间位置时,效果非常好.但如果图像大小非常大,就会使axes组件在软件界面上影响到其上下方向上的组件显示.针对这种情况,系统设置了每个axes的最大长度和宽度,只要图像长度和宽度大于axes的最大长度和宽度,系统就对图像内容进行保持长宽比的缩放.该模型在保证图像显示效果及组件空间利用率的情况下使程序具有axes组件大小与图像大小的自动适应能力,提高编程效率.

4.2 以实验仪器中心为中心的局部区域交互

本文在开发用户交互功能时,通过计算用户交互的鼠标位置点到各元器件中心的距离是否在以该元器件为中心的矩形或椭圆形区域内来驱动鼠标滑动或点击事件,实现了局部区域的交互,方便用户使用.当用户鼠标在某元器件的识别范围内时,系统自动将该范围的图像内容设置成半透明效果(见图4),在该区域点击鼠标左键,启动跳转事件,用户交互非常便捷.

图4 以实验仪器中心为中心的局部区域交互

4.2.1 矩形区域交互

在矩形区域交互设计时,需要知道落在元器件上的矩形区域的中心在图像中的坐标位置C(Cx,Cy),以及矩形区域的长h和宽w.如图5所示,落在矩形区域内的点P(Px,Py)需满足如下条件:

图5 点落在矩形区域内外的示意图

4.2.2 椭圆形区域交互

在椭圆形区域交互设计时,需要知道落在元器件上的椭圆形区域的焦点在图像中的坐标位置F1(F1x,F1y)和F2 (F2x,F2y),以及椭圆形区域的长轴a.如图6所示,落在椭圆形区域内的点P(Px,Py)需满足如下条件:

图6 点落在椭圆形区域内外的示意图

4.2.3 图像内容半透明效果的生成

当鼠标移动到元器件的交互区域时,交互区域内的图像内容呈现半透明效果提醒用户此时可以进行点击来查看元器件的详细信息.这里的半透明效果是由原图像和一幅纯色图像融合生成的(见图7).图像融合模型如下所示:

图7 图像融合生成半透明效果示意图

4.3 实时响应鼠标拖动的实验仪器位置调整

在实验仪器摆放和实验数据测量模块均需要通过鼠标拖动来调整实验仪器的位置.鼠标拖动时对于鼠标按下、移动和弹起三种情况分别做不同的响应.如图8所示,当鼠标被按下时,判断鼠标的位置是否在仪器的单击区域内,若在某个仪器的单击区域内,则将该仪器设置成半透明效果,提醒用户此时可以通过鼠标拖动该仪器来改变其位置.同时将对应仪器的选中状态设置成1,记录下鼠标位置给后面计算鼠标移动距离时使用.

图8 鼠标按下事件流程图

如图9所示,鼠标移动时,先判断是否有仪器处于选中状态,若有仪器处于选中状态,则读取鼠标位置坐标,然后与前面记录的鼠标位置信息进行差计算,根据运动的相对性,鼠标的运动距离和仪器的运动距离相同,由此计算得出选中仪器的新位置.重新绘制显示区中所有的仪器,未选中仪器在原来的位置绘制,选中的仪器在新位置成半透明效果绘制,且通过将选中仪器最后绘制的方法能保证选中仪器总是显示在所有仪器的最上层.最后,将当前鼠标位置更新为鼠标最近一次位置,以备后面计算鼠标移动距离时使用.鼠标弹起时的响应与移动时的响应非常相似.只是不需要将当前鼠标位置更新为鼠标最近一次位置的操作.但要增加将选中仪器的状态设置成未选中状态的操作.

图9 鼠标移动事件流程图

4.4 具有相对位置关系判断的实验仪器摆放

在实验仪器摆放模块,当用户排列好仪器进行结果提交时,如图10所示,系统先判断实验所需仪器是否已全部添加,如果没有则弹出实验所需仪器尚未添加完毕提示框并返回原界面让用户继续完善.如果仪器已添加完成,系统进而判断仪器间的相对位置关系.仪器间相对位置关系从左往右依次判断相连两个仪器的前后关系.若每一对相连仪器的前后位置关系都正确则所有仪器的前后位置关系就正确.在仪器位置关系排列正确后,再具体计算双棱镜与单缝的距离,测微目镜与单缝的距离和所有仪器的高度差.按实验要求如果双棱镜与单缝的距离大于透镜焦距或是测微目镜与单缝的距离小于4倍透镜焦距或是所有仪器的高度差大于预定值则弹出相应出错提示对话框并返回原界面让用户重新排列仪器.如果上述条件都满足则弹出仪器排列已完成对话框,继续下一步实验.

图10 仪器摆放模块系统内部数据测试流程图

4.5 干涉条纹宽度的计算完全正确无误差

根据干涉条纹的宽度是光干涉成像中两个波峰或波谷之间的距离的原理,如图10所示,先对干涉条纹的能量求导,找出导数值发生正负跳变的位置,即为干涉条纹的极值点.再找出干涉条纹中间位置相邻三个极值点间的距离则为干涉条纹的宽度.根据干涉条纹中波峰和波谷交替出现的特点,三个相邻极值点对应的位置可以是波峰-波谷-波峰或是波谷-波峰-波谷,两种情况的宽度是一样的.

对于连续函数来说,极值点出现在一阶导数为0的地方.对于离散的函数来说,极值点出现在相连位置函数差跳变的地方.相反,非极值点中,相连位置的函数差同为正数或是同为负数,故极值点和非极值点的判断可以通过相连位置函数差乘积的正负来判断,如公式(8)所示:

干涉条纹宽度是相连三个极值点对应的位置差,如公式(9)所示:

其中xi均为极值点.

4.6 通过索引的灰度图上色方法来模拟干涉条纹的显示效果

根据公式(1)杨氏双缝干涉光强分布函数,能直接绘制出不同参数下的干涉条纹的灰度图显示效果.但干涉条纹的灰度显示与实际效果相差较大,故本文通过索引方式给灰度图上色来模拟干涉条纹效果.首先,根据实验室观察效果来确定上色条中的颜色,如图11所示.其次,对给定的参数计算杨氏双缝干涉光强分布值,并对光强分布值进行归一化,如公式(10)所示.

图11 上色条及对应的上色颜色值

将归一化后的光强值从0到1近似平分成64份,并以光强值为索引,到上色条中选择相应颜色对灰度干涉条纹上色,索引方式如公式(11)所示,如此干涉条纹的灰度显示就转变成了彩色显示,效果更逼真.

5 双棱镜干涉虚拟仿真实验的设计及部分实现效果

双棱镜干涉实验虚拟仿真软件开始界面如图12所示.该仿真软件主要分为两部分:演示及学习模块和操作及计算模块.其中演示及学习模块又细分为原理阐述、干涉效果演示、实验内容、实验仪器及实验步骤等5个子模块.操作及计算模块又分为实验仪器摆放、实验数据测量和实验数据计算等3个子模块.

图12 双棱镜干涉实验虚拟仿真软件主界面

在软件主界面上单击原理阐述按钮则跳转到如图13所示的原理阐述首界面.原理阐述首界面分成上下两部分,上半部分展示的是光干涉现象图,下半部分展示的是光干涉原理及光干涉中波长的计算公式.原理阐述模块其他页面内容、实验内容和实验步骤等模块的子界面布局均与原理阐述模块的首界面相似.

图13 原理阐述首界面

干涉效果演示的子界面如图14所示.左上角是影响干涉条纹宽窄的物理量在实验中所表示的位置关系示意图.左下角是影响干涉条纹宽度的五个物理量大小调整区.右边是视场中的干涉条纹效果显示区.当拖动滑动条位置调整物理量大小时,相应的干涉条纹显示效果在右边的视场中实时改变.

图14 干涉效果演示模块界面构成示意图

图15是实验仪器模块中的仪器详细介绍子界面.图4是实验仪器模块的首界面,在该界面面中,鼠标移动到仪器上时,仪器成半透明状,此时点击鼠标就跳转到相应仪器详细介绍页面.

图15 双棱镜详细介绍界面构成示意图

图16是仪器摆放模块的子界面.该界面中左侧是仪器添加按钮.点击该按钮则在右侧显示区添加仪器,如果实验仪器添加按钮多次被点击,则弹出仪器已添加过的提示对话框.实验仪器添加到显示区后,鼠标移动到仪器周围时仪器呈现出半透明状,此时按住鼠标左键则可拖动仪器来对仪器进行排列,当把仪器排到合适位置时,点击仪器排列已完成的按钮,系统内部会进行正确性检查,即统计添加仪器总数量、对仪器位置关系进行判断并计算双棱镜与单缝的距离、测微目镜与双棱的距离和各元器件底部的高度差.若有条件不满足则弹出对应提示框,如图15所示.

图16 实验仪器之间的位置关系不正确时,系统弹出的对话框示意图

图17是干涉条纹宽度测量模块.其中,上面第一部分是干涉条纹的能量图,第二部分是干涉条纹的显示效果图.第三部分是实验仪器位置调整区域.在该区域中双棱镜和测微目镜的位置是可以移动的.当鼠标移动到双棱镜和测微目镜上时,仪器呈半透明状,此时按下位鼠标左键拖动能调整双棱镜和测微目镜的位置.同时,干涉条纹的显示效果和能量图也会随之改变.第四部分是参数调整区和实验数据区.在参数调整区可以通过下拉列表来选择实验次数,备选的实验次数共有三次.在双棱镜和测微目镜位置改变时,参数调整区的显示框中数据也会相应地发生改变.当把双棱镜和测微目镜调整到合适位置后,在图上观察并测量出干涉条纹的相关数据,再点击保存按钮.此时系统会检测单条纹宽度的误差范围,并根据误差范围是否合适弹出相应提示对话框.干涉条纹宽度测量好后,可单击“锁定双棱镜和测微目镜测量大像和小像”按钮进入虚光源成大小像测量界面.该界面的上面部分是虚光源大小像的成像及测量区域;中间部分是透镜位置调整区.在这个区域单缝、双棱镜和测微目镜的位置是不能移动的,其位置被锁定在测量干涉条纹时的位置.但透镜的位置是可以通过鼠标拖动来调整的.当透镜调整到合适位置时,上半部分的成像区就能显示出虚光源的大像或小像,如图18所示.此时观察并测量虚光源所成大小像的大小.按公式(3)和公式(4)计算出两虚光源之间的距离d和虚光源到测微目镜的距离D,然后保存.保存时,系统检查各数据的误差是否在合适范围.系统会根据误差情况给出相应的提示.

图17 干涉条纹宽度测量界面示意图

图18 虚光源成大像的测量界面示意图

图19是实验数据计算模块的界面.该界面包含四个部分.前三个部分分别显示之前独立测量的三组实验数据.这里设计比较灵活,用户可以根据自己的需要独立做一次、两次或三次测量.测量保存成功几次,这里显示对应次数的结果.根据前面的测量数据,按照公式 (3)计算光源的波长.点击生成实验结果并提交,则对波长进行检测,并根据波长误差给出相应地提示.

图19 实验数据保存成功时提示对话框示意图

6 结 论

本文针对双棱镜干涉实验开发了虚拟仿真系统.该仿真系统能通过演示及操作等方式对双棱镜干涉部分的理论及实验教学给予有效的辅助.将仿真系统更广泛地应用到教学中并根据教学反馈进一步完善本系统是本文接下来要做的主要工作.

猜你喜欢

棱镜条纹光源
分配正义:以弱势群体为棱镜
通过法律、机器人和社会的棱镜与人工智能共生
光源改变光环境
享受LED光源的卓越色彩 Acer(宏碁)PD1530i
谁是穷横条纹衣服的人
大棱镜温泉
鲜艳迷人的HLD光源4K HDR新贵 BenQ(明基)X12000H
LED照明光源的温升与散热分析
水晶棱镜
条纹回归