scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(1)

推实心球是学生体测必考项目,我们向空中斜向抛出一个实心球,根据重力和速度的关系,在空中划出一道弧线后落地,这样一条弧线就是抛物线,实心球做的运动就是斜抛运动。斜抛运动的定义是物体以一定的初速度斜向射出去,在空气阻力可以忽略的情况下,物体所做的匀变速曲线运动。今天我们用编程来模拟初速度和角度对抛物线的影响(图1)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(2)

在模拟的过程中要使用抛物线公式,搜索“斜抛运动”一词,获得抛物线的公式,有足够数学知识的可以更仔细的了解公式解析。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(3)

在Scratch编程,创建一个小球Ball角色,初始的位置(-180,-140)。程序开始前通过滑杆调整发射速度和发射角度的值,将这两个变量显示形式调整为“滑杆”。在小球发射前,需要设置画笔的状态,移动到初始位置,设置落笔状态,画笔的粗细,将页面中内容全部擦除。计算初始的速度Vx和Vy(Vx等于速度乘角度的cos值;Vy等于速度乘角度的sin值)并且增加变量t用于统计小球运动的时间(图2)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(4)

小球按照设定变量发射后,为了方便观察运动轨迹,每隔0.01秒标记一次小球的位置,首先计算垂直距离dy,如果dy小于0,说明小球已经扔落到地面,程序结束。反之计算水平距离dx,需要把小球的实际飞行距离转换成在舞台上的坐标位置,其实就是把(dx,dy)转换成(xPos,yPos)。因为舞台默认垂直长度为320(-140至180)水平长度为420(-180至240)将两者都转化为实际长度100之内(图3)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(5)

完成代码后,添一个背景图片,这样一幅完美的抛物线运动轨迹就完了(图4)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(6)

Scratch是一件神奇的工具,当它和科学知识结合时你就可以实现更多意想不到的乐趣。

1.掌控板之板载加速度计

虽然我们已经用掌控板完成了不少作品,但它还有不少好用的功能等着我们去发掘呢。掌控板的背面藏着一块板载加速度计,可以用来测试加速度传感器的数值。

加速度传感器是一种能够感受加速度并转换为输出信号的电子设备。在地球上物体自由下落因重力产生的加速度称为重力加速度,重力G可表示为G=mg,m是物体质量,g表重力加速度,通常g取9.80 m/s2,通常说飞行员能承受几个g就是指这个重力加速度。

在地球上某点的重力加速度是常量,但我们对掌控板施加外力产生的加速度就是变量了,掌控板可以帮我们读取自身X、Y、Z三个轴向上的加速度值,单位是mg。用Mind 对掌控板编程,显示三轴当前的加速度值(图1)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(7)

当掌控板水平放置屏幕朝上时,Z值最小,接近-1000;当掌控板水平左短边侧立时,Y值最小,接近-1000;当掌控板长边侧立按键在上时,X值最大,约为1000。

大家想想为什么会这样呢?因为掌控板的加速度芯片受到重力加速度影响,向下的方向是1g的加速度,因此:当板子水平放置时,z轴就会收到1000mg左右的重力加速度。同理板子竖直放置时,x轴有1000mg左右加速度,侧立放置时,y轴有1000mg左右加速度(图2)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(8)

知道了加速传感器这些特性有什么作用呢?它可以用来感知掌控板的位置状态,当知道XYZ三个方向上的加速度时,通过三个方向上的分力,即可得知板子的状态。当板子处于静止的状态时,合力也就是重力,加速度总是朝下的,当板子甩起来的时候,掌控板对应方向就会出现加速度增加或者减少的情况了,这个时候就可以得知掌控板是静止还是运动(之前介绍过的水平仪就是利用这个原理实现的)。同样在我们手机使用摇一摇功能时也是使用手机中类似的传感器功能。下面用Mind 编写简单的代码用摇一摇的方式通过加速度传感器的控制掌控板的灯光。掌控板虽小但它集成了优秀的硬件模块,足够我们实现各种创意小发明(图3、图4)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(9)

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(10)

2.Python解高考数学题两例

Python是一门语法简洁优美,功能强大,应用领域广泛,并且具有强大完备的第三方库,可移植,可扩展,可嵌入的解释型编程语言。由于Python强大的功能,Python不仅仅可以帮助我们处理一些复杂的事情比如人工智能,自动化运维节约我们的时间,还可以帮助我们解决数学上的一些难题,来看看如何用Python解决这两道高考数学题吧,分别涉及到“集合”和“排列组合”。

题一:设集合A={X|1≤X≤3},B={X|2<X<4},则A∪B等于?

这道题涉及到集合,如果用普通的方法通过画圈法就可以求出正确的范围,其实用Python也可以快速解决这道问题。这里需要导入Sympy库,SymPy是一个符号计算的库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。SymPy支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等功能(图1)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(11)

首先导入sympy库,图中sympy下面有一条红波浪线(一些编程环境的辅助功能),运行中报错“ModuleNotFoundError”,表示系统中没有检测到这个库,需要手动安装才可以(pip install sympy)。接下来我们将题目转换成数学形式。A={X|1≤X≤3},A的范围在1≤X≤3。转换成sympy.Interval(1,3)。B={X|2<X<4},B的范围在2<X<4,转换成sympy.Interval.open(2,4)。A和B的区别在于开区间和闭区间取值。则A∪B等于1≤X<4。

这里给你留一个小思考,如果出现1<X≤3或1≤X<3这种情况如何表示呢?

题二:6名同学到甲、乙、丙三个场馆做志愿者,每个同学只能去一个场馆,甲场馆安排1名同学,乙场馆安排2名同学,丙场馆安排3名同学,则有多少种不同的安排方法?

一般我们用组合方法=6×10便可以计算出最后的结果为60种。在Python中我们需要导入scipy库便可以解决这个问题了。Scipy又称为高级科学计算库,一般用于科学计算、统计分析等(图2)。

scratch2.0如何设置抛物线(Scratch实心球抛物线运动轨迹)(12)

先从6个人中挑选一人,然后从剩下的5人中挑选两人,最后剩下的三个人自动成一组,最终的搭配方法也是有60种。

不管是排列组合还是集合,Python都有合适的库帮你高效获得答案。在掌握Python的核心语法后,你就需要根据自己的需求去找寻和能够解决你问题的库了。

,