1. 三角函数与钟摆运动的奇妙结合
第一次在Scratch里尝试用三角函数做动画时,我盯着那个左右摇摆的小球看了足足十分钟。那种感觉就像发现了新大陆——原来枯燥的数学公式真的能让角色"活"起来!钟摆运动是最适合入门三角函数的案例,因为它完美展现了正弦函数的周期性变化。
你可能在物理课上看过老式挂钟的钟摆,它的运动轨迹就像被施了魔法一样规律。其实这个魔法就是正弦函数在起作用。想象一下,当你把钟摆拉到最高点松开时,它会先加速下落,经过最低点时速度最快,然后逐渐减速上升到另一侧。这个过程中,摆球的高度变化正好符合sin(角度)的曲线。
在Scratch里,我们不需要复杂的物理引擎,只需要三个关键变量就能模拟这个现象:
- 角度:从0开始不断增加的度数
- 幅度:决定钟摆能摆多远的系数
- 高度:实时计算得出的y坐标值
具体怎么操作呢?我们先用当绿旗被点击启动程序,然后创建一个重复执行循环。在循环里让角度变量每步增加5(这个值决定摆动速度),然后用将高度设为幅度*sin(角度)计算出当前位置。最后用将y坐标设为高度让角色动起来。就这么简单的几行积木,一个活灵活现的钟摆就诞生了!
2. 从零开始搭建钟摆动画
2.1 创建基础角色与背景
打开Scratch时,我建议先删除默认的小猫角色,新建一个圆形精灵作为钟摆球。选择纯色填充更方便后续添加颜色特效。背景最好用渐变色的,比如从上到下的浅蓝到深蓝渐变,这样能更清楚地观察小球的垂直运动轨迹。
设置角色大小时有个小技巧:按住Shift键拖动角上的缩放点可以等比例调整。我通常会把小球直径控制在50-80像素之间,太小看不清运动细节,太大又会影响动画流畅度。位置方面,先把小球拖到舞台正中央(x=0,y=0),这是我们钟摆的静止点。
2.2 初始化关键变量
点击"变量"分类,新建三个变量:
- 角度:初始值设为0
- 幅度:建议设为100-150之间
- 高度:不需要设初始值,它会被实时计算
这里有个初学者常踩的坑:忘记把角度变量设置为"适用于所有角色"。如果设成了"仅适用于当前角色",当你想添加多个钟摆时就会出问题。我建议所有控制动画的变量都设为全局变量。
初始化脚本应该这样写:
当绿旗被点击 将 [角度 v] 设为 [0] 将 [幅度 v] 设为 [120] 隐藏变量 [高度 v] // 这个变量不需要显示在舞台上3. 让钟摆真正摆动起来
3.1 核心运动逻辑实现
现在来到最激动人心的部分——编写运动脚本。在角色脚本区添加以下积木:
当绿旗被点击 重复执行 将 [角度 v] 增加 (5) 将 [高度 v] 设为 ( (幅度) * ( [sin v] 中 (角度) ) ) 将y坐标设为 (高度) 等待 (0.05) 秒 end运行后你会看到小球开始上下摆动,但可能不太自然。这是因为:
- 角度增量太大(一次加5)会导致动画卡顿
- 没有考虑物理世界中的减速效果
- 等待时间固定会让不同电脑上速度不一致
改进方案是用更小的角度增量(比如1)和更短的等待时间(0.01秒)。还可以加入加速度效果:
将 [角度 v] 增加 ( (90) - ( [绝对值 v] 中 ( (角度) mod (180) ) ) ) / (20) )3.2 添加视觉效果增强体验
单纯的上下摆动有点单调,我们可以用Scratch的图形特效来增加视觉吸引力。在运动循环里添加:
将 [颜色 v] 特效增加 ( ( [绝对值 v] 中 (高度) ) / (5) )这样小球会在摆动过程中渐变颜色,摆得越高颜色越鲜艳。如果想更炫酷,可以同时修改虚像特效:
将 [虚像 v] 特效设为 ( (100) - ( [绝对值 v] 中 (高度) ) )现在小球会在接近最高点时变得半透明,模拟真实钟摆的速度变化。这些特效虽然简单,但能让数学概念的学习过程变得生动有趣。
4. 深入理解三角函数原理
4.1 正弦函数的可视化理解
很多同学背过"正弦函数图像是波浪线",但直到用Scratch做钟摆时才真正理解这句话的含义。我们可以在项目中添加一个画笔角色,让它实时绘制高度值的变化曲线:
- 新建角色,添加画笔扩展
- 编写脚本:
当绿旗被点击 擦除 落笔 将笔的颜色设为 [#FF0000] 无限循环 移动到 x: ( (角度) / (2) ) y: (高度) end运行后会看到一条标准的正弦曲线慢慢展开。这个实时可视化工具能帮助学生直观理解:
- 每360度完成一个完整周期
- 波峰和波谷对应钟摆的最高点
- 过零点对应钟摆经过中心点的时刻
4.2 调整参数观察变化
现在我们来做个实验:在绿旗脚本里添加按键控制,让我们能实时调整幅度值:
当 [上箭头 v] 被按下 将 [幅度 v] 增加 (10) 当 [下箭头 v] 被按下 将 [幅度 v] 增加 (-10)按上/下箭头时,你会发现:
- 幅度值越大,小球摆得越高
- 但摆动周期(来回一次的时间)保持不变
- 正弦曲线的振幅变化,但波长不变
这引出了三角函数的一个重要特性:振幅影响波动范围,但不影响周期。这个概念在声波、光波等物理现象中都有体现。
5. 创意扩展与项目升级
5.1 制作双摆系统
掌握了单摆后,可以挑战更复杂的双摆系统。复制当前角色,修改第二个小球的脚本:
将 [高度 v] 设为 ( (幅度) * ( [sin v] 中 ( (角度) * (0.8) ) ) )这个0.8的系数会让第二个摆比第一个慢一些。运行后你会看到两个钟摆开始同相摆动,然后逐渐出现相位差,最后又回归同步。这个现象在真实世界的钟摆群中也能观察到。
5.2 添加用户交互功能
让项目更具互动性,可以添加这些功能:
- 鼠标控制初始幅度:
当角色被点击 将 [幅度 v] 设为 ( (鼠标y) / (2) )- 空格键暂停/继续:
当 [空格 v] 被按下 如果 <(暂停) = [0]> 那么 将 [暂停 v] 设为 [1] 停止 [全部 v] 否则 将 [暂停 v] 设为 [0] end5.3 导出为可分享项目
完成所有功能后,点击"文件→保存到电脑"可以导出.sb3文件。如果想在线分享,需要注册Scratch官网账号。上传时记得:
- 填写详细的项目说明
- 添加"数学"、"物理"、"动画"等标签
- 在注释里写明操作说明
我经常在课堂上让学生互相体验对方的钟摆项目,你会发现同样的原理能做出千变万化的效果——有的加了背景音乐,有的让钟摆撞响铃铛,还有的做成了艺术装置。这就是Scratch的魅力所在。