周 權 徐海萍 邵 立
(合肥電子工程學院 安徽 合肥 230037)
基于VPython的三維場景構建在光學教學中的應用
周 權徐海萍邵 立
(合肥電子工程學院安徽 合肥230037)
摘 要:VPython是Python語言和三維圖像模塊Visual的組合,可用于快速創(chuàng)建交互式的三維場景和動畫.本文以光的反射折射、薄透鏡成像、球面透鏡像差和光的偏振現(xiàn)象為例,闡述了基于VPython的三維交互場景構建技術在光學課程教學中的應用.三維場景構建在光學課程教學過程中的應用有助于更直觀地展現(xiàn)特定的光學現(xiàn)象并揭示其物理規(guī)律.
關鍵詞:VPython三維場景光學教學
1引言
大學光學課程是物理及相關專業(yè)的主干基礎課,其課程內(nèi)容體系完整,理論性強[1].光學本身是一門以觀察和實驗為基礎的學科.為了在教學過程中能夠幫助學生直觀地了解相關理論的實驗背景,快速建立清晰的物理圖像,利用VPython模塊構建了光學課程內(nèi)容中若干重要理論和現(xiàn)象的三維場景.文中以光的折射反射、薄透鏡成像、球面透鏡的像差和光的偏振現(xiàn)象為例闡述相應場景的實現(xiàn)和功能.
2VPython簡介
VPython是Python語言及其實時三維圖像模塊Visual的組合,可用于快速創(chuàng)建交互式的三維場景和動畫[2].
Python是一種面向對象、動態(tài)的程序設計語言,具有簡潔清晰的語法,學習曲線平緩,可以用來快速開發(fā)程序腳本.在NumPy,SciPy, Matplotlib等程序庫的支持下,Python可以完成專業(yè)的科學計算任務[3].
Visual是基于Python開發(fā)環(huán)境的三維圖像模塊,可以快速創(chuàng)建三維場景和動畫.Visual模塊內(nèi)建了諸如球體、長方體、曲線等簡單的幾何體,利用extrusion函數(shù)還可以生成復雜的三維模型.Visual模塊繼承了Python語言語法簡單、開發(fā)快速的特點.開發(fā)者無須關心場景對象的管理細節(jié),可以將精力集中于場景內(nèi)容的邏輯實現(xiàn).Visual模塊實現(xiàn)了基于wxPython的窗口顯示和消息響應,以實現(xiàn)用戶與程序的實時交互,從而展現(xiàn)更豐富的場景內(nèi)容.
3三維場景實例
3.1光的反射和折射
光的反射和折射是最基本的光學現(xiàn)象,在初高中的物理課程中即有涉及,但大學光學課程對光的反射和折射現(xiàn)象及相關理論的教學有更進一步的要求,主要體現(xiàn)在以下兩點:
(1)準確理解反射定律和折射定律中入射面、法線、入射角和折射角等概念的幾何約定,掌握反射定律和折射定律中各個物理量之間的數(shù)量關系;
(2)了解s光和p光的定義.通過菲涅爾公式的學習,掌握s光和p光在折反射過程中的不同規(guī)律.
為了在教學過程中直觀地演示光的反射和折射現(xiàn)象,幫助學生了解有關概念的定義并掌握相應的物理規(guī)律,構建了如下三維場景.
如圖1所示,折射率分別為n1和n2的兩種介質分別位于場景的上下兩部分,入射光從上層介質入射到分界面處,發(fā)生反射和折射;根據(jù)反射定律和折射定律,繪制了入射光線、反射光線和折射光線,并標記了入射角、反射角、折射角的位置和大小;根據(jù)菲涅爾公式計算反射和折射的透過率并顯示在相應位置.
圖1 光束反射和折射的場景構建
三維場景的觀察視角可以任意調(diào)整,有助于學生從多個角度觀察場景中各個元素的幾何關系,了解反射定律中有關概念的定義,快速建立起直觀的物理圖像;場景中兩種介質的折射率和入射角均可以改變,并同步更新場景中的圖像和數(shù)值顯示,可以直觀地展現(xiàn)折反射定律中的數(shù)量關系,并演示全反射現(xiàn)象;場景中入射光的偏振可調(diào),即可以選擇入射光為s光或p光,偏振光的電場方向用綠色箭頭進行標注,有助于學生明確s光和p光的定義,并能直觀觀察不同入射角和偏振狀態(tài)下,反射率(透過率)的變化情況;場景中入射光的光源面積大小可調(diào),可以體現(xiàn)一定尺寸光束入射界面后折射光的光束形狀變化.
3.2薄透鏡成像
薄透鏡成像是光學課程中幾何光學部分的重要內(nèi)容之一.薄透鏡成像的規(guī)律可由成像公式描述,其形式本身很簡單,但成像過程中涉及物、像距離和焦距的關系、虛實像的變化、物像大小的變化.學生學習過程中往往會陷入數(shù)值公式的固定推演,而難以將成像規(guī)律和成像過程的場景緊密結合.為了在教學過程中更好地闡述薄透鏡成像的規(guī)律,實現(xiàn)該部分內(nèi)容理論和實驗的一體化教學, 構建了如下三維場景.
圖2 薄透鏡成像的場景構建
如圖2所示,薄透鏡位于場景中央,其光軸由綠色直線標出,其前后焦點由藍色色塊標出;物位于透鏡左側,其正立方向如箭頭方向所示;根據(jù)成像公式計算像的位置和大小并顯示在相應位置.
如前所述,場景視角可任意調(diào)整,后文不再贅述;場景中可利用鼠標拖動調(diào)整物的位置、透鏡的焦距,并同步更新場景,以動態(tài)演示薄透鏡成像的規(guī)律;透鏡的孔徑可以進行調(diào)整,其大小會影響像的亮度,場景中通過改變像的透明度來定性演示這一現(xiàn)象.
3.3球面透鏡的像差
像差是所有非理想光學系統(tǒng)設計和應用時要考慮的因素.光學課程中對像差概念的引入目的在于使學生了解像差產(chǎn)生的原因和一些簡單光學系統(tǒng)像差的特點.為使初次接觸像差概念的學生能對像差的成因和特點有更直觀的理解,構建如下三維場景.
如圖3所示,場景中央為待分析像差的球面透鏡,其前后球面的曲率半徑分別為R1和R2;光源位置位于透鏡左側,發(fā)出的多束平行光線構成同心圓環(huán),經(jīng)透鏡前后表面折射后到達觀察面;利用光線追跡的方法計算各束光線的路徑,并繪制觀察面處的光線分布.
圖3 球面透鏡像差的場景構建
場景中球面透鏡的口徑、材料折射率以及前后曲面的曲率半徑可以通過界面賦值進行調(diào)整,以觀察像差隨球面透鏡相關參數(shù)的變化情況;光源的位置可以在透鏡左側任意調(diào)整,其中心位于光軸上和光軸外時,分別對應球差和慧差;觀察面的位置可以在透鏡右側任意調(diào)整, 以觀察不同空間位置的光線分布情況.
3.4光的偏振現(xiàn)象
光的偏振是光學課程波動光學部分中的基本概念.光偏振現(xiàn)象的教學主要涉及線偏振、圓偏振和橢圓偏振的定義,以及偏振光通過偏振片的行為規(guī)律,即馬呂斯定律.光的偏振,尤其是圓偏振和橢圓偏振的物理圖像較為抽象,學生在該部分內(nèi)容的學習過程中需要較強的空間想象力才能將偏振的數(shù)學表達和物理圖像結合.為此,唯象地構建了光偏振現(xiàn)象的三維場景,以幫助學生理解該部分的內(nèi)容.
圖4 光偏振現(xiàn)象的場景構建
光偏振現(xiàn)象的場景構建如圖4所示.線偏振片位于場景中央,其偏振方向由紅色箭頭標記;偏振片左右兩側分別繪制了入射光和出射光在不同空間位置上電場強度的瞬時大小和方向.
場景內(nèi)容按照時間步長推進,以演示光波沿光軸向前傳輸?shù)那闆r.入射光的偏振情況通過改變兩個正交方向電場強度的大小和相位差進行調(diào)整,可以實現(xiàn)線偏振、圓偏振以及橢圓偏振等多種設置.從該三維場景中,學生可以直觀地認識線偏振、圓偏振和橢圓偏振其電場分量在空間上的分布以及隨時間的演變情況,較為簡單地建立起該部分內(nèi)容的物理圖像.
4結束語
以光的反射折射、薄透鏡成像、球面透鏡像差和光的偏振現(xiàn)象為例,介紹了利用VPython構建的三維交互場景在光學課程教學中的應用. 三維場景能夠更充分地展示光學課程內(nèi)容中的主要原理和現(xiàn)象,通過參數(shù)控制實現(xiàn)與場景的實時交互,能夠直觀地展現(xiàn)其物理規(guī)律,從而幫助學生快速建立起相應的物理圖像.
參 考 文 獻
1鐘錫華.現(xiàn)代光學基礎.北京:北京大學出版社,2003
2D.Schere,P.Dubois,B.Sherwood.VPython:3D Inter-
active Science Graphics for Student.Computing System in Engineering,2000(05):55~62
3Summerfield M.Programming in Python 3(Second Edition). Beijing: The People's Posts & Telecommun-
ications Press,2011
Applications on Construction of Three-dimensional
Scene in Optics Teaching Based on VPython
Zhou QuanXu Haiping
(Eletronic Engineering Institute,Hefei,Anhui230037)
Abstract:VPython is a combination of the Python programming language and a 3D graphics module called “Visual”. VPython is designed to create interactive 3D scenes and animations quickly. In this paper, four 3D scenes about reflection and refraction, imaging of the thin lens, aberration of the spherical lens and polarization phenomenon of light are introduced to illustrate application of VPython in optics teaching,which is helpful to show specific optical phenomenon more directly and reveal related physics.
Keywords:VPython;3D scene;optical teaching
收稿日期:(2015-04-09)