sine wave(少儿编程|Scratch实例14圆周运动投影正弦曲线的数学动画)

在本文中,我们将完成一个“正弦曲线与圆周运动关系原理”的数学原理演示动画。 正弦曲线或正弦波(Sinusoid/Sine wave)是一种来自数学三角函数中的正弦比例的曲线。 正弦曲线的形状就像完...

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

在本文中,我们将完成一个“正弦曲线与圆周运动关系原理”的数学原理演示动画。

正弦曲线或正弦波(Sinusoid/Sine wave)是一种来自数学三角函数中的正弦比例的曲线。

正弦曲线的形状就像完美的海上波浪般,以三角函数正弦比例改变而形成。

**的纯正弦函数公式为:

y=sin(x)

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

而一般应用的正弦曲线公式为:

y=Asin(ωt+θ)

其中,sin为正弦符号,A为波幅(纵轴),ω为角**,t为时间(横轴),θ为相偏移(横轴左右)。

—— wikipedia

好了,初中数学知识复习就到这里。

下面我们开始这次的编程内容吧。数学书在讲解正弦曲线的含义时提到,“正弦波是一个圆周运动在直线上的投影”,这个定义并不容易理解,不如我们编写一个程序,动态的演示这个**,帮助初中生们理解吧~

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

00 软件**

需求说明:

编写一个动画程序,有一个点在匀速的围绕圆运动,有另外一个点在x轴上匀速运动、同时在y轴上与前一个点的高度一致。最好留下这两个点的运动轨迹。

由以上内容描述,我们可以将需求人为拆分成两部分,第一步,画一个圆;第二步,画正弦波。这就用到了《Scratch视频课程1|什么是少儿编程、为什么要学、学什么?》中第7部分提到的“计算思维”中的“分解”:将一个复杂问题拆分成几个更小、更容易处理的问题。(计算思维4要素是:分解、**识别、抽象、算法**)

现在我们再根据这个思路继续进行设计。

软件设计:

第一个角色“半径”,动画**中围绕圆点匀速旋转。画圆的动画放在舞台左侧;第二个角色“端点”,即,圆周上的点,随着半径的**在圆周上**;第三个角色“正弦波上的点”,我们就简称它“正弦波”吧,它在每一次动画中在x坐标上都**2π,而y坐标和“端点”的y坐标一致。画正弦波的动画放在舞台右侧;第二和第三个角色在每一次动画中匀速**n次,我们将这个**定义成变量,取名“采样**”,预设值100。01 更换舞台背景

因为我们要做的是数学原理动画,并且涉及到坐标系,所以我们将舞台背景改成如下图片。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

02 添加角色

按照上面的**,添加半径、端点和正弦波,这三个角色都需要我们手工绘制。

1、如图点击添加角色图标,选中【绘制】,添加三个角色,并分别改名为:半径、端点、正弦波。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

2、删除不需要的默认“角色1”小黄猫。

03 绘制角色

绘制“半径”

找到角色中心点,把它当做圆心,从它开始往正右侧画直线。直线长度应该适中,因为要确保使用它画的圆不要超过舞台左侧区域,同时,又要确保画的圆也不能太小,免得不容易查看。建议先画长一点,当编码调试发现超长的时候,用橡皮擦一点点擦除进行**。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

绘制“端点”

找到角色中心点,点一个黑点,也可以是画一个极小的实心圆。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

绘制“正弦波”

操作步骤同绘制“端点”,颜色可以相同,也可以不同。

04 创建变量

画圆和正弦波的动画看似是连续、**的动画,但是,其实仍然是一步一步的小动画组成的,只是这些小动画被分割的越小,停顿时间极短,所以给人的视觉感觉是连贯的。(我们以前的文章已经介绍过动画成像的原理《【Scratch工具介绍】扩展知识:画面是怎么“动”起来的?》,这里不再赘述)

既然“动画是一段一段的”,我们可以定义2个变量来表述这个含义:一个控制一次动画的时长,一个控制被分成多少段。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

注意,这两个变量是几个角色公用的,所以创建时请选择“适用于所有角色”。

也许还需要其他的变量,等到编程遇到的时候再说吧。

05 左侧圆周的编码

将“半径”的圆点放在靠近左侧中心的位置,即尽量圆点放在坐标(-120, 0)处。

“半径”围绕圆点旋转,每次旋转角度(360/取样**),重复旋转(取样**)次,二者相乘**圆周360度,即,“半径”的外侧点运动轨迹就是一个圆。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

代码不多,咱们重点看两个地方:

1、发送【广播】,它的作用是通知角色“端点”**,实现了“端点”和“半径”**同步。关于【广播】可以查阅《Scratch编程 | 事件积木》。下面是创建广播的**,

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

2、每次**之间等待一段时间,否则程序运行太快根本无法看到动画**。等待时间是(动画时长/采样**)。

06 圆周端点的编码

想实时**“半径”的外侧点坐标不是易事,所以,我才想着**一个“端点”角色,让“端点”跟随“半径”运动,以便于我们**圆周上点的坐标。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

讲解一下部分代码:

1、**(80)步,这里的(80)是“半径”的长度,是从坐标系中读出来的,每个人画的不同,所以,这个值应该也是不同的。

2、“端点”是怎么做圆周运动的呢?

代码是【当接收到旋转】之后的3个蓝色积木。文字解释乏力,看图吧

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

3、发送【广播】,它的作用是通知角色“正弦波”**,实现了“正弦波”和“端点”**同步。

07 给右侧正弦波编码

我们先约定正弦波的一个周期,在x轴方向上长度200,即,10秒钟(变量“动画时长”)内在x轴**100次(变量“取样**”)累计长度200,这样x轴上的逻辑就出来了。

再看在y轴方向上,角色“正弦波”的y坐标和“端点”角色的y坐标始终一致。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

试运行程序,点击舞台左上角的小旗子。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

圆周运动和正弦波**都能清晰的演示了,如果能够留下它们的轨迹就更好了。

08 留下运动轨迹

现在,我们暂停讲解,请各位读者尝试思考这个问题:

如何在“端点”和“正弦波”运动的时候,留下它们的**痕迹??

思考倒计时……

10

9

8

7

6

5

4

3

2

1

0

答案是,使用“图章”积木。

编码如下:

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

关于“图章”积木的更多内容,可以查阅历史文章《【Scratch工具介绍】画笔积木》。

09 完工!运行程序

至此,我们完成了“需求说明”中的全部内容。

点击舞台左上角的小旗子运行程序,看看效果吧。

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

PS:直到完成本文才感觉到这个例子可能有些偏难了,如果你没有看懂……多看几遍吧~~

附加练习思考:为什么绘制“半径”时,要从角色中心点的那个十字星开始画直线?

tag:#Scratch编程、#少儿编程、#儿童编程、#趣味编程、#青少年编程、#软件编程

少儿编程|Scratch实例14:“圆周运动投影正弦曲线”的数学动画

  • 发表于 2022-12-03 11:37:09
  • 阅读 ( 114 )
  • 分类:科技

0 条评论

请先 登录 后评论
武文新
武文新

417 篇文章

你可能感兴趣的文章

相关问题