当前位置:文档之家› 工程光学实验报告及程序完美总结

工程光学实验报告及程序完美总结

实验报告
一、实验目的
通过使用一定的处理工具,用软件方式实现光束入射到介质界面上的反射和折射特性模拟。

通过程序实现自定参数以及随机获取参数的光路显示。

最终通过该实验使得自己对光学的折反射定律有更深的了解。

二、实验原理及方法
原理1(光的反射定律):在反射现象中,①反射光线,入射光线和法线都在同一个平面内;②反射光线,入射光线分居法线两侧;③反射角等于入射角;(“三线共面,两线分居,两角相等”)。

原理2(光的折射定律):在折射现象中,①折射光线位于有入射光线和发现所决定的平面内;②折射角的正弦与入射角的正下按之比与入射角大小无关,仅有两种介质的性质决定。

对于一定波长的光线而言,在一定温度和压力下,该比值是一常数,等于入射光所在介质的折射率n与折射光所在介质n’之比,即:n’sinI’=nsinI(其中I,I’分别为入射角与折射角大小)。

在本次实验中,为了实现对光的折反射的模拟,我们采用了Matlab软件,进行仿真。

利用Matlab中的GUI界面,进行效果的显示。

三、实验内容及步骤
首先通过开启Matlab软件,打开其中的GUI窗口,效果如图1.1所示
图1.1 GUI开启界面图
然后通过适当地增添所需按键及选项,绘制如图1.2所示的GUI窗口图。

在图1.2中,ni,nt,thi,thr,tht分别表示入射介质的折射率,折射介质的折射率,入射角大小,反射角大小以及折射角大小。

S1按键的作用:按下S1前需要手动在为“EditText”类型的ni,nt,thi中输入三个参数,当按下S1时,在界面“axes1”中将显示满足上述三个参数的入
射光线反射光线以及折射光线,并且会在其更新显示各个“Edit Text”类型中的值。

S2按键的作用:按下S2按键后,将自动获取“Edit Text”类型中ni,nt,thi 三个参数,并且将thi进行8等分,将入射光线,反射光线,折射光线进行动态显示,并且更新显示结果。

S3按键的作用:按下S3按键后,用鼠标在“axes1”界面中的区域内(当前由于程序的设定,只能获取鼠标在0<X<5且5<Y<10的位置中的值进行光线显示)获取当前的横纵坐标,连接(5,5)作为入射光线,进行光路的显示,并且同时在各个“Edit Text”类型中显示当前的参数以及结果。

在其中按键“Update”作用不大,仅仅是在对界面进行初始化(没有这一按键也可,因为在S1,S2,S3按键中,都有初始化了)。

可以适当删除不需要的按键。

图1.2 GUI仿真界面图
当将一些要实现的功能定好后,就可以通过GUI所产生的M-file进行编程了。

可以通过右击GUI仿真界面图,如图1.3所示。

图1.3 GUI进入M-file编辑示意图
进入M-file后,如图1.4所示。

可以通过各个按键的函数进行编程,并且各个函数之间通过句柄(类似C语言中的指针)进行相互之间的访问以及数据的调用。

图1.4 M-file编辑界面图
最后通过适当的调节与不断的修该,可以达到较好的仿真效果。

四、实验结果
当按下S1按键后,结果如图1.5所示。

图1.5 S1按键后结果显示效果图
当按下S2按键后,结果如图1.6(其中动态显示一步的截图)所示。

当按下S3按键后,结果如图1.6所示。

图1.6 S3按键后结果的效果显示图
在实验过程中,通过三个按键可以进行自定参数以及随机参数的选择,并且将所得参数进行显示以及绘制光路。

在按下S1按键时,实现自定参数的画图,所以需要先在左上角输入3个参数(在实验内容中已有介绍),在参数的输入中,入射角要求小于90度,否则虽然有显示,但是显示出错。

在按下S3按键时,实现随机获取参数的画图,可以自动获取鼠标的位置坐标,但是对鼠标的放置的位置范围有要求(在实验内容中已有介绍),这是由于在绘制光线的过程中的程序设定所限制的。

否则当鼠标的位置超出所设定的要求范围时,将自动按输入的入射角为0度处理(这也是程序设定的)。

这样设定的目的是为了方便一般的视觉
视图,左上部分是入射光线,右上部分是反射光线,右下部分是折射光线。

五、实验分析
在本次实验中,遇到的主要问题有以下几个:
问题1、参数的限定条件。

在实验过程中,按下S1按键后,只能通过设定3个参数(ni,nt,thi)进行定参数的光线光路绘制,而不能通过其他参数的设定如ni,nt,tht或者ni,thi,tht等进行光路的绘制。

问题2、光路中的箭头表示。

在仿真图中,当入射角度过大(或者说折射角过大时),出现在折射光线上的箭头很小甚至消失。

现象如图1.7所示。

图1.7 箭头问题示意图
可以看到,在图1.7中,折射光线上的箭头已经看不见了。

对于问题1的解决方法可以在GUI界面中增加按键进行指定参数的选择,这个问题并不能反应多少实质性的光路问题,所以没有对该问题进行过多的探讨。

有时间可以通过增加按键进行参数的设定选择。

对于问题2的解决方法,因为光是矢量,没有方向就不能称之为光线,所以应该对其进行详细的解决。

目前由于没有做过合适的检测,只能是通过优化矢量函数quiver()来对达到预初效果。

修改如图1.8 所示。

图1.8 箭头问题修改后光路图
可以明显看到修改后在入射角56.0257(图1.7中的入射角为54.9841)比之前的入射角还大的情况下,折射光线的箭头很明显可以观察到。

这是因为在处
理问题2中,利用了quiver()进行了优化处理。

为详化分析有必要将此函数进行简单说明。

quiver(x,y,u,v,n,’m’)函数,是画二维矢量的函数,其中x,y,表示矢量的起点;u,v分别表示在矢量方向上的x,y方向上的增量;n表示对u,v的增量,并且该参数影响箭头显示的大小,系统默认是1(实际上是0.9),可以通过调节n的值进行箭头大小的调节,m表示进行矢量画线的颜色(b表示蓝色,r表示红色等等)。

该函数使用的效果不理想的最终原因就是因为在选定n以后,对于不同的u,v给出的箭头大小不理想,而如何优化箭头大小以及箭头显示的位置成了一对矛盾的统一体。

由于该函数没有确定终点,所以在进行画线的时候没有办法准确定好箭头所在的位置,当u,v较小时,如果(x,y)离(5,5)也很近,此时会使得箭头接近折射光线的起点,使得箭头看起来不明显,效果如图1.9所示。

图1.9 变量偏小时的问题示意图
当然,在增量u,v(此处指u,v的绝对值)较大的情况下,虽然(x,y)离(5,5)较近时会有较明显的效果,但是当(x,y)离(5,5)在远离一点点,便会发生很大的偏差,可能突然就没有了箭头。

不过,在此次编写的程序中,我们固定了折射光线的起点,即选择(x,y)=(5,5)进行折射光的光路绘制。

显然,当u,v有较大的值,即在程序中折射角过大时,容易产生图1.7中的现象,所以,我们选择了在不同的角度下,选择不同的矢量增量,即优化了u,v的选择,以及在不同的u,v情况下,对n给予不同的值,防止箭头在某些情况下过大或者过小。

当然解决问题2的方法有很多,这只是其中的一种,也可以使用annotation()函数,但是由于该函数需要对GUI窗口进行归一化,难以建立鼠标坐标与GUI窗口的对应关系,所以没有用该方法。

对问题2的细节描述在程序中都有较详细的说明(可以在M-file文件中的232至236即pushbutton4的Callback函数中查看)。

六、实验总结
通过本次实验加深了对光的折反射定律的理解以及对于Matlab中关于相关绘图和仿真的应用操作的了解。

相关主题