Scratch编程与物理-用Scratch学习“光的折射”
一、什么是光的折射?
光的折射是指,光从一种介质斜射入另一种介质时,传播方向发生改变,从而使光线在不同介质的交界处发生偏折。
在生活中,我们把筷子或者笔插入水中,看到笔在水面处发生了弯折,这就是由于光的折射引起的。
如下图所示,一束光从A点斜射入水中,在水面处发生偏折,垂直于水面画一条法线,入射光线与法线之前的夹角就是入射角,折射光线与法线之间的夹角就是折射角。
光的折射有哪些特性呢?
1、当光线从空气斜射入其它介质时,角的性质:折射角(折射率大的一方)小于入射角(折射率小的一方)。
2、光的折射率为:光从介质1射入介质2发生折射时,入射角与折射角
的正弦之比叫做介质2相对介质1的折射率,即“相对折射率”,也就是说
水、空气、玻璃的折射率由小到大的排列顺序是:
空气的折射率<水的折射率<玻璃的折射率。
空气的折射率约是1。
水的折射率约是1.33。
透明玻璃的折射率约是1.5。
3、在光的折射现象中,光路是可逆的。
二、鱼在水中发生的折射现象
我们在陆地上看到水中的“鱼”,如果往“鱼”看到的地方刺去,可能会刺不中“鱼”。但是如果往“鱼”的更深处刺去,就可以刺到鱼,这就是光的折射引起的。
我们要看到鱼,就是鱼反射的光线进入我们的眼睛。当光从水中传入空气中,发生了折射,我们顺着折射光线看去,看到的鱼其实是“鱼”的像,比真实的鱼的位置要浅。
现在,我们人眼看到了鱼的“像”,已知人眼的位置和“鱼像”的位置,我们来求得鱼的真实位置,用Scratch来模拟这个过程吧。
三、程序的设计
1、计算入射角的大小
已知鱼像的位置和眼睛的位置,可以确定入射角,计算入射角的大小
根据直线方程y = ax + b,已知直线上的两点:眼睛和鱼像,
求得a和b的值,即可确定这条直线。
a = (y1-y0)/(x1-x0),求得直线的斜率。
这条直线与水面的交点,就是光线发生偏折的位置,也就可以确定法线。
上面求得的直线的斜率 a = tan(90+入射角),即可求得入射角
2、计算折射角。
根据上面介绍的相对折射率的公式,
已知n1为空气中的折射率(n1=1),n2为水中的折射率(n2 = 1.33)
为入射角,求得折射角。
3、求鱼的真实位置
根据折射角,法线的位置,即可求得折线光线的路径。
已经鱼的x值 = 鱼像的x值,带入直线方程,即可求得鱼的y值。
四、程序的实现
程序的主要逻辑代码如下:
用Scratch模拟光的折射原理,是不是很有趣啊,赶快动手试试吧
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com