施美玲,周 天
(曲靖師范學(xué)院 物理與電子工程學(xué)院,云南 曲靖 655011)
1801年托馬斯·楊完成了著名的雙縫干涉實驗,為光的波動理論發(fā)展奠定了堅實的基礎(chǔ).2002年9月美國《物理世界》雜志將楊氏雙縫干涉實驗評選為物理學(xué)史上最美的十個經(jīng)典實驗之一[1-2].目前楊氏雙縫干涉是每個光學(xué)學(xué)習(xí)者都需要掌握的實驗,也是大學(xué)物理實驗教學(xué)的難點之一.為了減少縫的衍射對干涉的影響,教學(xué)中常用雙棱鏡干涉實驗項目來模擬雙縫干涉.采用雙棱鏡干涉時,需要借助測微目鏡來觀察實驗現(xiàn)象,同步調(diào)節(jié)單縫寬度、雙棱鏡傾角和橫向位移,借助會聚透鏡成像調(diào)節(jié)共軸、間接測量虛光源寬度和干涉條紋寬度,從而計算入射光波長.實驗存在的主要問題是:(1)實驗操作要求精細(xì),過程繁瑣耗時,在規(guī)定課時內(nèi)很難達(dá)到實驗教學(xué)要求;(2)使用測微目鏡觀察,視場小,現(xiàn)象不直觀;(3)在暗室環(huán)境中進(jìn)行實驗,長時間單眼觀察、調(diào)整測量,容易視覺疲勞,引起人眼刺痛等身體不適狀況.本文設(shè)計并開發(fā)雙棱鏡干涉實驗仿真系統(tǒng)來輔助教學(xué).
在干涉效果仿真方面,前期已有不少工作.中國科學(xué)院物理研究所的曹則賢在《物理學(xué)的波概念》一文中給出了用現(xiàn)代儀器得到的雙縫干涉條紋圖像[3].何坤娜等人[4]精準(zhǔn)推導(dǎo)出了干涉條紋空間分布的雙葉旋轉(zhuǎn)雙曲面方程并基于該方程對傳播空間和觀察屏上明紋分布進(jìn)行了理論模擬仿真.翟龍華[5]和李棟玉、時有明等人[6]分別利用LabVIEW編程模擬了雙縫干涉的圖樣和光強分布曲線,并計算條紋間距和對比度.陳華等人[7]用Mathematica軟件繪制出光強分布圖來測量條紋間距.而更多的光學(xué)實驗仿真則是用matlab編程模擬的[8-10].其中,毛少娟等人[8]制作了包括干涉、衍射、信息光學(xué)、晶體光學(xué)實驗在內(nèi)用于光學(xué)理論和實驗教學(xué)的光學(xué)實驗仿真平臺.李玉波等人[9]利用光強分布、光的量子性和波動性的物理原理對光干涉、衍射、牛頓環(huán)等物理實驗進(jìn)行了仿真.徐春芳等人[10]對光學(xué)單色光楊氏雙縫干涉、牛頓環(huán)、夫瑯禾費衍射以及邁克爾遜干涉儀等光學(xué)實驗進(jìn)行可視化模擬.
文獻(xiàn)[4-7]只是對干涉現(xiàn)象進(jìn)行了仿真模擬,在教學(xué)中只能用作效果演示.而文獻(xiàn)[8-10]在干涉效果仿真時用GUI界面進(jìn)行了封裝,能演示干涉效果隨參數(shù)的變化,對光干涉理論的教學(xué)取到很好的輔助作用.但對光干涉實驗的場景和過程都沒有模擬,對實驗教學(xué)沒有幫助.本文結(jié)合干涉原理及數(shù)字圖像處理知識對干涉實驗進(jìn)行完整仿真,能同時輔助理論及實驗教學(xué).
楊氏雙縫干涉實驗?zāi)P腿鐖D1所示.光源S發(fā)出的光傳播到縫S1和S2上,形成相干光源.通過雙縫S1和S2的光作為波源分別產(chǎn)生一列波動傳播到場點P,并各自在P點引起一個振動,形成干涉效果.場點P疊加后的光波振幅為Ap.公式1描述了任意情況下(包含近場區(qū)域、遠(yuǎn)場區(qū)域)Ap的光強分布函數(shù)[4,6,11-12]:
圖1 楊氏雙縫干涉實驗?zāi)P?/p>
其中,A1和A2為通過縫S1和S2的光強,λ為光源S的波長,d為雙縫S1和S2之間的距離,D為雙縫到光屏的距離,x為P點的坐標(biāo).
為了減少縫光源的衍射對干涉效果的干擾,實驗教學(xué)中經(jīng)常用雙棱鏡對經(jīng)過單縫的入射光進(jìn)行折射形成雙虛光源并用雙虛光源產(chǎn)生干涉效果(見圖2).通過雙棱鏡折射產(chǎn)生的干涉條紋比較窄,需要通過測微目鏡來觀察.此外雙虛光源間的距離d和雙虛光源到測微目鏡的距離D也要借住凸透鏡對虛光源的二次成像結(jié)果來計算.
圖2 雙棱鏡干涉實驗環(huán)境
光干涉實驗的目的是通過干涉條紋來計算入射光的波長.通過單縫的光經(jīng)過雙棱鏡后在測微目鏡中形成干涉條紋,測量出干涉條紋寬度Δx后,按公式2計算出光源波長λ:
為了計算雙虛光源間的距離d和雙虛光源到測微目鏡的距離D,在雙棱鏡和測微目鏡中加入凸透鏡,來回移動透鏡,在測微目鏡中生成兩次清晰的虛光源實像,設(shè)雙虛光源成放大像的間距為d1和縮小像的間距為d2,則有:
其中,a為虛光源生成放大像和縮小像時透鏡的位置間距.
仿真系統(tǒng)中包含大量的圖片顯示內(nèi)容.在顯示圖像的axes組件大小固定的情況下,matlab自帶的顯示圖像函數(shù)會自動將圖像的尺寸縮放到axes組件的尺寸.當(dāng)圖像尺寸的長寬比與axes組件的長寬比不一致時,圖像顯示過程中就會出現(xiàn)圖像內(nèi)容被過度拉伸或壓扁的畸變.很多程序開發(fā)者經(jīng)常需要耗時地手動調(diào)整組件大小來提高圖像顯示效果.本文提出以中心對齊的自適合圖像大小顯示模型來解決此問題.該模型保持axes組件的中心位置不變,先將組件的長度和寬度分別設(shè)置成圖像的長度和寬度,并基于新的大小重新計算axes組件的起點位置坐標(biāo),然后按公式(5)模型更新axes組件的位置屬性.如圖3所示,公式(5)中的pos(1)和pos(2)分別為組件起點的x和y坐標(biāo),pos(3)和pos(4)分別為組件的寬度和長度.
圖3 以中心對齊的自適合圖像大小顯示原理
此操作解決了圖像長寬比改變縮放引起的圖像顯示畸變問題,同時也保證axes組件的中心位置保持不變.這種解決方式當(dāng)圖像大小小于axes組件在軟件界面上能顯示的空間位置時,效果非常好.但如果圖像大小非常大,就會使axes組件在軟件界面上影響到其上下方向上的組件顯示.針對這種情況,系統(tǒng)設(shè)置了每個axes的最大長度和寬度,只要圖像長度和寬度大于axes的最大長度和寬度,系統(tǒng)就對圖像內(nèi)容進(jìn)行保持長寬比的縮放.該模型在保證圖像顯示效果及組件空間利用率的情況下使程序具有axes組件大小與圖像大小的自動適應(yīng)能力,提高編程效率.
本文在開發(fā)用戶交互功能時,通過計算用戶交互的鼠標(biāo)位置點到各元器件中心的距離是否在以該元器件為中心的矩形或橢圓形區(qū)域內(nèi)來驅(qū)動鼠標(biāo)滑動或點擊事件,實現(xiàn)了局部區(qū)域的交互,方便用戶使用.當(dāng)用戶鼠標(biāo)在某元器件的識別范圍內(nèi)時,系統(tǒng)自動將該范圍的圖像內(nèi)容設(shè)置成半透明效果(見圖4),在該區(qū)域點擊鼠標(biāo)左鍵,啟動跳轉(zhuǎn)事件,用戶交互非常便捷.
圖4 以實驗儀器中心為中心的局部區(qū)域交互
4.2.1 矩形區(qū)域交互
在矩形區(qū)域交互設(shè)計時,需要知道落在元器件上的矩形區(qū)域的中心在圖像中的坐標(biāo)位置C(Cx,Cy),以及矩形區(qū)域的長h和寬w.如圖5所示,落在矩形區(qū)域內(nèi)的點P(Px,Py)需滿足如下條件:
圖5 點落在矩形區(qū)域內(nèi)外的示意圖
4.2.2 橢圓形區(qū)域交互
在橢圓形區(qū)域交互設(shè)計時,需要知道落在元器件上的橢圓形區(qū)域的焦點在圖像中的坐標(biāo)位置F1(F1x,F1y)和F2 (F2x,F2y),以及橢圓形區(qū)域的長軸a.如圖6所示,落在橢圓形區(qū)域內(nèi)的點P(Px,Py)需滿足如下條件:
圖6 點落在橢圓形區(qū)域內(nèi)外的示意圖
4.2.3 圖像內(nèi)容半透明效果的生成
當(dāng)鼠標(biāo)移動到元器件的交互區(qū)域時,交互區(qū)域內(nèi)的圖像內(nèi)容呈現(xiàn)半透明效果提醒用戶此時可以進(jìn)行點擊來查看元器件的詳細(xì)信息.這里的半透明效果是由原圖像和一幅純色圖像融合生成的(見圖7).圖像融合模型如下所示:
圖7 圖像融合生成半透明效果示意圖
在實驗儀器擺放和實驗數(shù)據(jù)測量模塊均需要通過鼠標(biāo)拖動來調(diào)整實驗儀器的位置.鼠標(biāo)拖動時對于鼠標(biāo)按下、移動和彈起三種情況分別做不同的響應(yīng).如圖8所示,當(dāng)鼠標(biāo)被按下時,判斷鼠標(biāo)的位置是否在儀器的單擊區(qū)域內(nèi),若在某個儀器的單擊區(qū)域內(nèi),則將該儀器設(shè)置成半透明效果,提醒用戶此時可以通過鼠標(biāo)拖動該儀器來改變其位置.同時將對應(yīng)儀器的選中狀態(tài)設(shè)置成1,記錄下鼠標(biāo)位置給后面計算鼠標(biāo)移動距離時使用.
圖8 鼠標(biāo)按下事件流程圖
如圖9所示,鼠標(biāo)移動時,先判斷是否有儀器處于選中狀態(tài),若有儀器處于選中狀態(tài),則讀取鼠標(biāo)位置坐標(biāo),然后與前面記錄的鼠標(biāo)位置信息進(jìn)行差計算,根據(jù)運動的相對性,鼠標(biāo)的運動距離和儀器的運動距離相同,由此計算得出選中儀器的新位置.重新繪制顯示區(qū)中所有的儀器,未選中儀器在原來的位置繪制,選中的儀器在新位置成半透明效果繪制,且通過將選中儀器最后繪制的方法能保證選中儀器總是顯示在所有儀器的最上層.最后,將當(dāng)前鼠標(biāo)位置更新為鼠標(biāo)最近一次位置,以備后面計算鼠標(biāo)移動距離時使用.鼠標(biāo)彈起時的響應(yīng)與移動時的響應(yīng)非常相似.只是不需要將當(dāng)前鼠標(biāo)位置更新為鼠標(biāo)最近一次位置的操作.但要增加將選中儀器的狀態(tài)設(shè)置成未選中狀態(tài)的操作.
圖9 鼠標(biāo)移動事件流程圖
在實驗儀器擺放模塊,當(dāng)用戶排列好儀器進(jìn)行結(jié)果提交時,如圖10所示,系統(tǒng)先判斷實驗所需儀器是否已全部添加,如果沒有則彈出實驗所需儀器尚未添加完畢提示框并返回原界面讓用戶繼續(xù)完善.如果儀器已添加完成,系統(tǒng)進(jìn)而判斷儀器間的相對位置關(guān)系.儀器間相對位置關(guān)系從左往右依次判斷相連兩個儀器的前后關(guān)系.若每一對相連儀器的前后位置關(guān)系都正確則所有儀器的前后位置關(guān)系就正確.在儀器位置關(guān)系排列正確后,再具體計算雙棱鏡與單縫的距離,測微目鏡與單縫的距離和所有儀器的高度差.按實驗要求如果雙棱鏡與單縫的距離大于透鏡焦距或是測微目鏡與單縫的距離小于4倍透鏡焦距或是所有儀器的高度差大于預(yù)定值則彈出相應(yīng)出錯提示對話框并返回原界面讓用戶重新排列儀器.如果上述條件都滿足則彈出儀器排列已完成對話框,繼續(xù)下一步實驗.
圖10 儀器擺放模塊系統(tǒng)內(nèi)部數(shù)據(jù)測試流程圖
根據(jù)干涉條紋的寬度是光干涉成像中兩個波峰或波谷之間的距離的原理,如圖10所示,先對干涉條紋的能量求導(dǎo),找出導(dǎo)數(shù)值發(fā)生正負(fù)跳變的位置,即為干涉條紋的極值點.再找出干涉條紋中間位置相鄰三個極值點間的距離則為干涉條紋的寬度.根據(jù)干涉條紋中波峰和波谷交替出現(xiàn)的特點,三個相鄰極值點對應(yīng)的位置可以是波峰-波谷-波峰或是波谷-波峰-波谷,兩種情況的寬度是一樣的.
對于連續(xù)函數(shù)來說,極值點出現(xiàn)在一階導(dǎo)數(shù)為0的地方.對于離散的函數(shù)來說,極值點出現(xiàn)在相連位置函數(shù)差跳變的地方.相反,非極值點中,相連位置的函數(shù)差同為正數(shù)或是同為負(fù)數(shù),故極值點和非極值點的判斷可以通過相連位置函數(shù)差乘積的正負(fù)來判斷,如公式(8)所示:
干涉條紋寬度是相連三個極值點對應(yīng)的位置差,如公式(9)所示:
其中xi均為極值點.
根據(jù)公式(1)楊氏雙縫干涉光強分布函數(shù),能直接繪制出不同參數(shù)下的干涉條紋的灰度圖顯示效果.但干涉條紋的灰度顯示與實際效果相差較大,故本文通過索引方式給灰度圖上色來模擬干涉條紋效果.首先,根據(jù)實驗室觀察效果來確定上色條中的顏色,如圖11所示.其次,對給定的參數(shù)計算楊氏雙縫干涉光強分布值,并對光強分布值進(jìn)行歸一化,如公式(10)所示.
圖11 上色條及對應(yīng)的上色顏色值
將歸一化后的光強值從0到1近似平分成64份,并以光強值為索引,到上色條中選擇相應(yīng)顏色對灰度干涉條紋上色,索引方式如公式(11)所示,如此干涉條紋的灰度顯示就轉(zhuǎn)變成了彩色顯示,效果更逼真.
雙棱鏡干涉實驗虛擬仿真軟件開始界面如圖12所示.該仿真軟件主要分為兩部分:演示及學(xué)習(xí)模塊和操作及計算模塊.其中演示及學(xué)習(xí)模塊又細(xì)分為原理闡述、干涉效果演示、實驗內(nèi)容、實驗儀器及實驗步驟等5個子模塊.操作及計算模塊又分為實驗儀器擺放、實驗數(shù)據(jù)測量和實驗數(shù)據(jù)計算等3個子模塊.
圖12 雙棱鏡干涉實驗虛擬仿真軟件主界面
在軟件主界面上單擊原理闡述按鈕則跳轉(zhuǎn)到如圖13所示的原理闡述首界面.原理闡述首界面分成上下兩部分,上半部分展示的是光干涉現(xiàn)象圖,下半部分展示的是光干涉原理及光干涉中波長的計算公式.原理闡述模塊其他頁面內(nèi)容、實驗內(nèi)容和實驗步驟等模塊的子界面布局均與原理闡述模塊的首界面相似.
圖13 原理闡述首界面
干涉效果演示的子界面如圖14所示.左上角是影響干涉條紋寬窄的物理量在實驗中所表示的位置關(guān)系示意圖.左下角是影響干涉條紋寬度的五個物理量大小調(diào)整區(qū).右邊是視場中的干涉條紋效果顯示區(qū).當(dāng)拖動滑動條位置調(diào)整物理量大小時,相應(yīng)的干涉條紋顯示效果在右邊的視場中實時改變.
圖14 干涉效果演示模塊界面構(gòu)成示意圖
圖15是實驗儀器模塊中的儀器詳細(xì)介紹子界面.圖4是實驗儀器模塊的首界面,在該界面面中,鼠標(biāo)移動到儀器上時,儀器成半透明狀,此時點擊鼠標(biāo)就跳轉(zhuǎn)到相應(yīng)儀器詳細(xì)介紹頁面.
圖15 雙棱鏡詳細(xì)介紹界面構(gòu)成示意圖
圖16是儀器擺放模塊的子界面.該界面中左側(cè)是儀器添加按鈕.點擊該按鈕則在右側(cè)顯示區(qū)添加儀器,如果實驗儀器添加按鈕多次被點擊,則彈出儀器已添加過的提示對話框.實驗儀器添加到顯示區(qū)后,鼠標(biāo)移動到儀器周圍時儀器呈現(xiàn)出半透明狀,此時按住鼠標(biāo)左鍵則可拖動儀器來對儀器進(jìn)行排列,當(dāng)把儀器排到合適位置時,點擊儀器排列已完成的按鈕,系統(tǒng)內(nèi)部會進(jìn)行正確性檢查,即統(tǒng)計添加儀器總數(shù)量、對儀器位置關(guān)系進(jìn)行判斷并計算雙棱鏡與單縫的距離、測微目鏡與雙棱的距離和各元器件底部的高度差.若有條件不滿足則彈出對應(yīng)提示框,如圖15所示.
圖16 實驗儀器之間的位置關(guān)系不正確時,系統(tǒng)彈出的對話框示意圖
圖17是干涉條紋寬度測量模塊.其中,上面第一部分是干涉條紋的能量圖,第二部分是干涉條紋的顯示效果圖.第三部分是實驗儀器位置調(diào)整區(qū)域.在該區(qū)域中雙棱鏡和測微目鏡的位置是可以移動的.當(dāng)鼠標(biāo)移動到雙棱鏡和測微目鏡上時,儀器呈半透明狀,此時按下位鼠標(biāo)左鍵拖動能調(diào)整雙棱鏡和測微目鏡的位置.同時,干涉條紋的顯示效果和能量圖也會隨之改變.第四部分是參數(shù)調(diào)整區(qū)和實驗數(shù)據(jù)區(qū).在參數(shù)調(diào)整區(qū)可以通過下拉列表來選擇實驗次數(shù),備選的實驗次數(shù)共有三次.在雙棱鏡和測微目鏡位置改變時,參數(shù)調(diào)整區(qū)的顯示框中數(shù)據(jù)也會相應(yīng)地發(fā)生改變.當(dāng)把雙棱鏡和測微目鏡調(diào)整到合適位置后,在圖上觀察并測量出干涉條紋的相關(guān)數(shù)據(jù),再點擊保存按鈕.此時系統(tǒng)會檢測單條紋寬度的誤差范圍,并根據(jù)誤差范圍是否合適彈出相應(yīng)提示對話框.干涉條紋寬度測量好后,可單擊“鎖定雙棱鏡和測微目鏡測量大像和小像”按鈕進(jìn)入虛光源成大小像測量界面.該界面的上面部分是虛光源大小像的成像及測量區(qū)域;中間部分是透鏡位置調(diào)整區(qū).在這個區(qū)域單縫、雙棱鏡和測微目鏡的位置是不能移動的,其位置被鎖定在測量干涉條紋時的位置.但透鏡的位置是可以通過鼠標(biāo)拖動來調(diào)整的.當(dāng)透鏡調(diào)整到合適位置時,上半部分的成像區(qū)就能顯示出虛光源的大像或小像,如圖18所示.此時觀察并測量虛光源所成大小像的大小.按公式(3)和公式(4)計算出兩虛光源之間的距離d和虛光源到測微目鏡的距離D,然后保存.保存時,系統(tǒng)檢查各數(shù)據(jù)的誤差是否在合適范圍.系統(tǒng)會根據(jù)誤差情況給出相應(yīng)的提示.
圖17 干涉條紋寬度測量界面示意圖
圖18 虛光源成大像的測量界面示意圖
圖19是實驗數(shù)據(jù)計算模塊的界面.該界面包含四個部分.前三個部分分別顯示之前獨立測量的三組實驗數(shù)據(jù).這里設(shè)計比較靈活,用戶可以根據(jù)自己的需要獨立做一次、兩次或三次測量.測量保存成功幾次,這里顯示對應(yīng)次數(shù)的結(jié)果.根據(jù)前面的測量數(shù)據(jù),按照公式 (3)計算光源的波長.點擊生成實驗結(jié)果并提交,則對波長進(jìn)行檢測,并根據(jù)波長誤差給出相應(yīng)地提示.
圖19 實驗數(shù)據(jù)保存成功時提示對話框示意圖
本文針對雙棱鏡干涉實驗開發(fā)了虛擬仿真系統(tǒng).該仿真系統(tǒng)能通過演示及操作等方式對雙棱鏡干涉部分的理論及實驗教學(xué)給予有效的輔助.將仿真系統(tǒng)更廣泛地應(yīng)用到教學(xué)中并根據(jù)教學(xué)反饋進(jìn)一步完善本系統(tǒng)是本文接下來要做的主要工作.