接 上一篇
(13) 卢瑟福散射
程序目标描述:
这集要模拟一个量子物理学实验,我们用一个 α粒子,也就是图中的黄色小球,去轰击金原子核,也就是图中的小钻石。α粒子的运动路线,我们用画笔画下轨迹。
英国物理学家卢瑟福就是通过这种照片,确定了一个事实:在微观世界中,物质不是平均充满整个体积的,而是集中在一些稀疏而坚硬的小颗粒上,这些小颗粒就是原子核,它们集中了物质的大部分质量。只有这样,才能形成照片中的景像:大多数 α粒子可以穿越物质而过,但极少数 α粒子会被以很大角度偏折,甚至反弹回去。
场景布置:
舞台背景选择 Scratch 内置的 “Xy-grid-20px”。
角色选择 Scratch 内置的 “Ball” 和 “Crystal”。
把小球摆到屏幕偏左的位置,水晶摆到屏幕偏右的位置。
代码搭建:
在左侧积木分组栏下方,点“添加扩展”按钮,选择“画笔”扩展。之后,为 “Ball” 添加代码:
运行:
如开篇图片所示,小球源源不断地从屏幕左侧射入,高度随机,并向屏幕右侧射去。当碰到钻石之后,将受到“散射”改变轨迹飞走。
“小球”代表的是物理实验中的 α粒子,“钻石”代表的是物质的原子核。但科学家在物理实验室里,不能直接看到“小球”和“钻石”,而只能通过云室摄像技术,记录下 α粒子的轨迹,如同我们程序中小球画出的蓝线。
α粒子的轨迹大部分是平行线,但也有少数呈现大角度偏转,科学家通过这种照片,判断出物质中必然有稀疏而坚硬的小颗粒。通过更精细的定量计算,卢瑟福证明了这些小颗粒是原子核,它们集中了物质的大部分质量,但尺寸及其微小。这个发现开启了物理学的新时代。
讲解:
这个程序再次用到了“克隆(自己)”,让克隆体去执行飞行和画出轨迹的功能,本体则只是重复不断地改变 y坐标的高度。
这样设计程序,可以把一个复杂的任务分解成主程序和子程序,主程序就是小球重复不断地改变高度和克隆自己,子程序是克隆体飞行并画出轨迹。子程序会被主程序中的克隆指令触发,从而被多次调用。
如果不使用克隆,代码将变得复杂,子程序的重复执行将嵌入到主程序的重复执行之内,在搭建时更容易出错。
另一方面,克隆体的程序是可以并行执行的,如果我们缩短主程序中“等待(1)秒”的时间,例如改成 0.2 秒,我们可以看到多个小球同时发射并留下各自的轨迹。这是单线程程序无法实现的效果。