Scratch编程:牛顿的苹果——地心引力
牛顿的苹果
同学们,你们知道牛顿的苹果的故事吗?
传说1665年秋季,牛顿坐在自家院中的苹果树下苦思着行星绕日运动的原因。这时,一只苹果恰巧落下来,它落在牛顿的脚边。就是这个偶尔的瞬间,牛顿发现了苹果下落的原因——地心引力的作用。
从此,这个苹果被视为科学探索精神的象征。那么,同学们,我们也来探索一下,我们在Scratch中,如何模拟物体的下落?
就像牛顿发现了苹果下落的道理一下,我们需要对于重力的效果进行模拟从而制作出来下落的过程。
对于简单的程序,可使用均速下降的方式。即每隔一段进行将Y坐标增加一个固定的值,就可以了。
对于一些要求比较高的程序,需要使用算法来进行比较准确的模拟。
在重力的作用下运动,一般称为自由落体。根据物理学的知识,物体从0速度开始的自由落体,使用如下的公式进行描述:
式中的t为时间,一般单位为秒; s为位移(或者说下降的距离)单位为米;u为速度,单位为米/秒; 其中的g为重力加速度,单位为米/秒^2,体现了重力对于自由落体的影响。在不同的星球上,重力加速度的数值是不同的。
在地球上,重力加速度的数值约为9.81米/秒^2,而在月球上,重力加速度的数值约为1.633米/秒^2。所以在月球上,自由落体的下落速度会比地球上慢得多。
我们再对上面的两个公式进行一点深入的解释。
第一个公式表示了自由落体下降速度随时间的变化。也就是“速度=时间*加速度”,所以物体在自由下落的过程中,速度会越来越快,而如果加速度大,则相同时间下速度变化得更大。
速度与时间之间是直线的关系。
而位移与时间的关系则是一条抛物线,可以看到随时间的增加,位移变化得越来越快。在1秒时,下降了4.9米,而在2秒时,已下降了19.6米。
在我们的程序中,应该如何对重力进行模拟呢?
下面我们在Scratch中模拟一个小球的下落,来检查算法的正确性。
基本程序如下,放置一个小球。编写如下的程序。
当然,上面这个程序是匀速下降的,下面我们对自由落体的加速过程进行模拟。
方法1:直接使用位移公式
结果如下,可以看到球运动得越来越快。如果改变时间的间隔,能够使得位置变化的更平滑一些。如果改变加速度g,就可以看到下降的速度会增快或减慢。
应该说明,这里直接使用下降的距离作为Y值的变化,即将一个像素当成了1米,可以看到10秒钟下降了397米,即397个像素。
方法2 考虑速度的变化
上面这种方法对于一次下落是很好的,但如果涉及到反弹等的模拟,还是需要考虑速度的变化。
这时使用的公式实际上是在每个时间的间隔Δt时,速度都增加g*Δt,而在同时,位移基本上变化Δt*u。这样就可以比较灵活地对抛物等进行模拟了。例如下面的程序就可以完成弹球的模拟。
其中tstep为时间间隔,xSpeed为X方向运行的速度,0.95表示每次反弹,速度都降为原来的0.95倍(模拟损失了能量)。
效果如下:
可以看到,模拟了自由落体的弹跳。
总结
结论:
1 模拟重力是很多程序中需要使用的功能。
2 根据自由落体的公式,给出了在SCRATCH中模拟自由落体的实现方式。
3 使用自由落体的算法,可以准确地模拟物体的下落过程及弹跳过程等。
4 数学和物理是进行程序模拟的基础,为了更好地对自然界进行模拟,学好数学和物理是必须的。
Scratch编程:牛顿的苹果——地心引力的更多相关文章
- 少儿编程|Scratch编程教程系列合集,总有一款适合你
如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...
- 《陪孩子像搭积木一样学编程》,一起来玩Scratch(1)使用Scratch编程的基本流程
编程是一件很有趣的事情.初次接触编程,你可能不知所措,别担心,这并不复杂.首先,为了让读者对编程有大概的了解,可以把编写Scratch程序的过程分成7个步骤(如图1.8).注意,这是理想状态.在实际的 ...
- Scratch编程小案例:愤怒的小牛
愤怒的小鸟曾经很热门,网上还说他是程序员最喜欢玩的游戏.最先我是WIKIOI的评测页面看到他的,后来在2014年全国信息学奥林匹克联赛第一天第三题飞扬的小鸟也看到了它.因此,突然想做一个类似愤怒的小鸟 ...
- Scratch编程与高中数学算法初步
scratch编程与高中数学算法初步 一提到编程,大家可能觉得晦涩难懂,没有一定的英语和数学思维基础的人,一大串的编程代码让人望而步,何况是中小学生. Scratch是一款由麻省理工学院(MIT) ...
- Scratch编程:游来游去的鱼(二)
“ Scratch编程学习环境搭建好了吗?让我们一起来进行游戏吧!” 01 — 游戏介绍 这是一款简单的小游戏,实现了一条小鱼在池塘里游来游去. 02 — 设计思路 1,这个游戏主要由一个池塘背景和一 ...
- Scratch少儿编程系列:(十一)Scratch编程之简单见解
一.Scratch官网的说明 With Scratch, you can program your own interactive stories, games, and animations ...
- Scratch编程:绘制七色花(七)
“ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 绘制一朵美丽的七色花. 02 — 设计思路 使用画笔功能 ...
- Scratch编程:初识Scratch及编程工具安装(一)
“ Scratch是一款由美国麻省理工学院(MIT)设计开发的少儿编程工具.” Scratch采用可视化.模块化的编程方式,非常适合青少年作为初次接触编程的工具和语言来学习,进而用其编写充满趣味的小程 ...
- 少儿编程 | 02.Scratch编程环境
上次课程介绍了Scratch的基本概念和一些特点,最后还给出了一些有趣的例子.本次课程介绍Scratch的两种编程环境以及在Scratch官网注册个人账号的步骤. Scratch 3.0的两种编程环境 ...
随机推荐
- BZOJ4237稻草人——单调栈+CDQ分治
题目描述 JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典. 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地.和启示中的一样,田地需要满足以下条件: ...
- 拼图游戏(8 puzzle)
如图所示,这是一个九宫格(这倒是让我想起了小时候老师在黑板上教导我们的如何通过一系列的拼凑,将横行,竖行,以及斜行都拼到和相等),格子中有一个格子是空的,另外八个格子分别有数字1--8,我们的任务是将 ...
- Spring家族主流成员介绍
摘 要:Spring 就像一个大家族,有众多衍生产品例如 Boot,Security,JPA等等.但他们的基础都是Spring 的 IOC 和 AOP,IOC提供了依赖注入的容器,而AOP解决了面向切 ...
- 20165223《网络对抗技术》Exp7 网络欺诈防范
目录 -- 网络欺诈防范 实践说明 实践目标 基础知识问答 实验工具学习 实践内容 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术,用DNS spoof引导特定 ...
- arcgis python 不知道一个工具怎么用
完整的工具帮助信息 import arcpy print(arcpy.Usage("Buffer_analysis")) print(arcpy.Usage("MakeF ...
- C# [ThreadStatic] 标记静态字段对多线程执行的影响
类的静态字段在类的实例中是共享的.多个线程修改实例字段的值在对其它线程来说是可见的,这也是clr默认的行为.对静态字段添加ThreadStaticAttribute标记可以改变这种默认的行为. Thr ...
- Ionic 的安装运行
1.学习前准备工作 1.必须得安装 nodejs (建议安装最新的稳定版本) 2.必须有 Angular 基础:https://www.loaderman.com/goods-1047.html 2. ...
- SQL语句里合并两个select查询结果
SQL UNION 操作符UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 ...
- EasyUI动态生成菜单
业务需求:不同角色有不同的权限,我们根据角色加载页面时展示不同的菜单.在easyUI中,菜单一般采用手风琴accordion组件进行展示,一级菜单下可以加载二级菜单,效果如下: 普通用户看到的菜: 管 ...
- 123457123457#0#-----com.cym.shuXueWangGuo1--前拼后广--儿童数学
123456123456#1#-----com.cym.shuXueWangGuo1--前拼后广--儿童数学