用scratch模拟物理现象之——小球自由落体弹跳系列3

网友投稿 2019-12-02 14:47

接着上期的小球自由落体弹跳,我们说到了想要让小球弹跳时呈现出对称的抛物线轨迹,我们也寻找了原因——小球在弹到顶点和落到最低点的瞬间,速度的大小和方向每次都可能不一样,并且难以通过条件的设置达到合适的纠正值,导致在转换瞬间已经偏离了中点。同时,也提出了一个改进方向:不明确区分“反弹”和“下落”算法表达。

按照这个方向探索,总是止步于一个问题——时间变量【t】。只要以【t】来确定速度和位移,在小球下落、上升的转换瞬间必须重新计时【t】,这样就必须明确区分“小球下落”和“小球上升”两个不同阶段。因此,需要对时间变量【t】做改造!!我们让它不再是连续累积计时,而是作为一个时间间隔用,事实上我们让小球做出运动轨迹,就是在不同的时间点运动到相应的坐标位置。

因此,我们让时间变量【t】变为【时间间隔】!(这是来自于成都都江堰的刘老师的算法,我对他的算法进行了修整和清晰化)

在给出核心脚本程序前先设置初始条件:小球【水平抛出速度】为4,忽略空气摩擦阻力;以【时间间隔】替代原来的时间变量【t】;变量重力加速度【g】=-9.8(给定了方向);设一个【y坐标】的变量,为方便小球在纵向位置的调节;小球初始位置为(-130,120)。

https://cdn.china-scratch.com/timg/191204/144F62103-0.jpg

这一次先不画抛物线了,试试用“图章”表达小球的运动轨迹——每过一个时间间隔就会有“图章”印下小球的图像!

上脚本!

https://cdn.china-scratch.com/timg/191204/144FB4E-1.jpg

 主体程序表达意思:

1、小球下落,触地后反复弹跳,直到弹跳到边缘(x坐标>=240)要求:反复调试设置好水平抛出速度、反弹速度系数。同时与触地后的矫正y坐标也有一定关系。2、下落时,下落的位移并不完全按照受重力加速度影响来计算。而是用s=vt(匀速运动位移公式)来计算,优点是小球反弹后可以继续按照这个公式来计算,并且在表达上更优美——基本以均等的间隔来体现小球运动变化。3、小球触地后(y坐标<-150),改变速度方向,发出撞击地面声音。可以用下一个造型来换小球颜色,区分小球不同弹跳阶段。由于能量损耗,反弹速度为下落时速度的0.85(【反弹速度】可以仍然用【下落速度】来表达)。由于小球每一次触地时的位置不同(由速度变化带来的),触地后可以矫正一下y坐标。来看看效果!

果然,轨迹漂亮了很多!

当然,我们还可以画线。可以在初始化的时候设置好画笔。

https://cdn.china-scratch.com/timg/191204/144F62117-2.jpg

 在主体程序中拿掉图章,再试验一遍!

可以清晰地看到:小球每次“触底反弹”位置都不太一样,同时受时间间隔的影响抛物线不平滑,有点呈锯齿状。所以用印章表达更为美观!

到这里,我们的小球自由落体弹跳3系列就结束了。很快蓝桥杯要开赛了,下一期我们来谈谈蓝桥杯scratch组的题!


转发自“启迪少儿”公众号的原创文章

作者:北京通州的迪迪妈





















--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com