基于VPython的三维场景构建在光学教学中的应用
2016-01-12徐海萍
周 权 徐海萍 邵 立
(合肥电子工程学院 安徽 合肥 230037)
基于VPython的三维场景构建在光学教学中的应用
周 权徐海萍邵 立
(合肥电子工程学院安徽 合肥230037)
摘 要:VPython是Python语言和三维图像模块Visual的组合,可用于快速创建交互式的三维场景和动画.本文以光的反射折射、薄透镜成像、球面透镜像差和光的偏振现象为例,阐述了基于VPython的三维交互场景构建技术在光学课程教学中的应用.三维场景构建在光学课程教学过程中的应用有助于更直观地展现特定的光学现象并揭示其物理规律.
关键词:VPython三维场景光学教学
1引言
大学光学课程是物理及相关专业的主干基础课,其课程内容体系完整,理论性强[1].光学本身是一门以观察和实验为基础的学科.为了在教学过程中能够帮助学生直观地了解相关理论的实验背景,快速建立清晰的物理图像,利用VPython模块构建了光学课程内容中若干重要理论和现象的三维场景.文中以光的折射反射、薄透镜成像、球面透镜的像差和光的偏振现象为例阐述相应场景的实现和功能.
2VPython简介
VPython是Python语言及其实时三维图像模块Visual的组合,可用于快速创建交互式的三维场景和动画[2].
Python是一种面向对象、动态的程序设计语言,具有简洁清晰的语法,学习曲线平缓,可以用来快速开发程序脚本.在NumPy,SciPy, Matplotlib等程序库的支持下,Python可以完成专业的科学计算任务[3].
Visual是基于Python开发环境的三维图像模块,可以快速创建三维场景和动画.Visual模块内建了诸如球体、长方体、曲线等简单的几何体,利用extrusion函数还可以生成复杂的三维模型.Visual模块继承了Python语言语法简单、开发快速的特点.开发者无须关心场景对象的管理细节,可以将精力集中于场景内容的逻辑实现.Visual模块实现了基于wxPython的窗口显示和消息响应,以实现用户与程序的实时交互,从而展现更丰富的场景内容.
3三维场景实例
3.1光的反射和折射
光的反射和折射是最基本的光学现象,在初高中的物理课程中即有涉及,但大学光学课程对光的反射和折射现象及相关理论的教学有更进一步的要求,主要体现在以下两点:
(1)准确理解反射定律和折射定律中入射面、法线、入射角和折射角等概念的几何约定,掌握反射定律和折射定律中各个物理量之间的数量关系;
(2)了解s光和p光的定义.通过菲涅尔公式的学习,掌握s光和p光在折反射过程中的不同规律.
为了在教学过程中直观地演示光的反射和折射现象,帮助学生了解有关概念的定义并掌握相应的物理规律,构建了如下三维场景.
如图1所示,折射率分别为n1和n2的两种介质分别位于场景的上下两部分,入射光从上层介质入射到分界面处,发生反射和折射;根据反射定律和折射定律,绘制了入射光线、反射光线和折射光线,并标记了入射角、反射角、折射角的位置和大小;根据菲涅尔公式计算反射和折射的透过率并显示在相应位置.
图1 光束反射和折射的场景构建
三维场景的观察视角可以任意调整,有助于学生从多个角度观察场景中各个元素的几何关系,了解反射定律中有关概念的定义,快速建立起直观的物理图像;场景中两种介质的折射率和入射角均可以改变,并同步更新场景中的图像和数值显示,可以直观地展现折反射定律中的数量关系,并演示全反射现象;场景中入射光的偏振可调,即可以选择入射光为s光或p光,偏振光的电场方向用绿色箭头进行标注,有助于学生明确s光和p光的定义,并能直观观察不同入射角和偏振状态下,反射率(透过率)的变化情况;场景中入射光的光源面积大小可调,可以体现一定尺寸光束入射界面后折射光的光束形状变化.
3.2薄透镜成像
薄透镜成像是光学课程中几何光学部分的重要内容之一.薄透镜成像的规律可由成像公式描述,其形式本身很简单,但成像过程中涉及物、像距离和焦距的关系、虚实像的变化、物像大小的变化.学生学习过程中往往会陷入数值公式的固定推演,而难以将成像规律和成像过程的场景紧密结合.为了在教学过程中更好地阐述薄透镜成像的规律,实现该部分内容理论和实验的一体化教学, 构建了如下三维场景.
图2 薄透镜成像的场景构建
如图2所示,薄透镜位于场景中央,其光轴由绿色直线标出,其前后焦点由蓝色色块标出;物位于透镜左侧,其正立方向如箭头方向所示;根据成像公式计算像的位置和大小并显示在相应位置.
如前所述,场景视角可任意调整,后文不再赘述;场景中可利用鼠标拖动调整物的位置、透镜的焦距,并同步更新场景,以动态演示薄透镜成像的规律;透镜的孔径可以进行调整,其大小会影响像的亮度,场景中通过改变像的透明度来定性演示这一现象.
3.3球面透镜的像差
像差是所有非理想光学系统设计和应用时要考虑的因素.光学课程中对像差概念的引入目的在于使学生了解像差产生的原因和一些简单光学系统像差的特点.为使初次接触像差概念的学生能对像差的成因和特点有更直观的理解,构建如下三维场景.
如图3所示,场景中央为待分析像差的球面透镜,其前后球面的曲率半径分别为R1和R2;光源位置位于透镜左侧,发出的多束平行光线构成同心圆环,经透镜前后表面折射后到达观察面;利用光线追迹的方法计算各束光线的路径,并绘制观察面处的光线分布.
图3 球面透镜像差的场景构建
场景中球面透镜的口径、材料折射率以及前后曲面的曲率半径可以通过界面赋值进行调整,以观察像差随球面透镜相关参数的变化情况;光源的位置可以在透镜左侧任意调整,其中心位于光轴上和光轴外时,分别对应球差和慧差;观察面的位置可以在透镜右侧任意调整, 以观察不同空间位置的光线分布情况.
3.4光的偏振现象
光的偏振是光学课程波动光学部分中的基本概念.光偏振现象的教学主要涉及线偏振、圆偏振和椭圆偏振的定义,以及偏振光通过偏振片的行为规律,即马吕斯定律.光的偏振,尤其是圆偏振和椭圆偏振的物理图像较为抽象,学生在该部分内容的学习过程中需要较强的空间想象力才能将偏振的数学表达和物理图像结合.为此,唯象地构建了光偏振现象的三维场景,以帮助学生理解该部分的内容.
图4 光偏振现象的场景构建
光偏振现象的场景构建如图4所示.线偏振片位于场景中央,其偏振方向由红色箭头标记;偏振片左右两侧分别绘制了入射光和出射光在不同空间位置上电场强度的瞬时大小和方向.
场景内容按照时间步长推进,以演示光波沿光轴向前传输的情况.入射光的偏振情况通过改变两个正交方向电场强度的大小和相位差进行调整,可以实现线偏振、圆偏振以及椭圆偏振等多种设置.从该三维场景中,学生可以直观地认识线偏振、圆偏振和椭圆偏振其电场分量在空间上的分布以及随时间的演变情况,较为简单地建立起该部分内容的物理图像.
4结束语
以光的反射折射、薄透镜成像、球面透镜像差和光的偏振现象为例,介绍了利用VPython构建的三维交互场景在光学课程教学中的应用. 三维场景能够更充分地展示光学课程内容中的主要原理和现象,通过参数控制实现与场景的实时交互,能够直观地展现其物理规律,从而帮助学生快速建立起相应的物理图像.
参 考 文 献
1钟锡华.现代光学基础.北京:北京大学出版社,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)