内容正文:
Geogebra制作物理课件
机械运动
第九节 赋值与图片图层:飞机投弹动画
由于飞机做匀速直线运动,炸弹在离开飞机后做平抛运动,在炸弹落地之前,二者的运动时间和在水平方向的位移始终相同,炸弹落地后,炸弹静止,飞机保持原有运动状态。想要达到这种效果,方法多种多样,在这里,教大家利用截取时间的方法来完成这个效果。
作为平抛运动的应用,可以接着平抛继续制作。
先修改导出参数:
图1.9-1
增加数值t0,t1,t1’,纯数值参数和滑动条有所区别,为了保证该数值可以取任意数,要将滑动条选项中的最小和最大设为空缺状态,如图1.9-2所示。 图1.9-2
若t0时刻,炸弹开始下落,则落地前炸弹下落时间t1=t-t0,由于炸弹落地后静止,而飞机需要继续运动,所以炸弹坐标的参数当中不能有t,所以用t1’替换t,即炸弹下落时间t1=t1’-t0,这样炸弹和飞机可以处在不同的运动状态。
制作一个布尔值和一个名为“投弹”的按钮,用来控制炸弹运动的开始时间。如图1.9-3所示。
图1.9-3 投弹按钮中的脚本
下面来制作表示飞机和炸弹的点,因为飞机沿水平方向做匀速直线运动,所以飞机的坐标定义如图1.9-4所示。
图1.9-4
为了保证炸弹下落后与飞机不共用时间,将炸弹的水平运动时间分为下落前和下落后,如图1.9-5所示,如果(k,t_1+t_0,t),意思是当布尔值k的值为true时(即炸弹下落后),取t_1+t_0,布尔值k的值为false时,取t。
下面进行截取时间中最重要的环节,在飞机的点中写入脚本:if(y(O)-y(B)<=H,赋值(t_1',t)),意思是在B点距离O点的垂直距离大于飞机高度H时,令t’=t,当不满足这个条件时,t’的值会停留在两点垂直距离等于H时的状态。
此时测试课件,发现点击复位按钮,发现复位之后,后加的布尔值和炸弹位置不受控制,所以我们需要在复位按钮中加入脚本:赋值(k,false)和赋值(t_0,0),用来使控制炸弹的元件恢复初始状态。如图1.9-7所示。
图1.9-7
最后一步,贴图片,完成制作。在贴图的过程中需要找到图片的中心位置,且让该中心点为自由点,图片的三个角点需要直接或间接与该中心点相关联,如图1.9-8所示。
图1.9-8
将飞机的坐标复制到飞机图片的中心点M的定义中,再将炸弹的坐标复制到炸弹图片的中心点N的定义中,飞机投弹的动画就制作完成了。
为了追求完美,我们再来设置一下炸弹飞行时的角度。设炸弹速度与水平方向的夹角为α,可以用指令直接得到α的值:角度(v, e),意思是向量v与向量e的夹角,注意,在此处如果将v和e的位置互换,将会得到一个优角,不利于后续操作。
将炸弹的图片绕其中心点顺时针旋转α,并隐藏原炸弹图片和多余的点。
图1.9-10
由于贴图时的顺序问题,可能会导致炸弹在飞机外侧显示,这时,我们可以采用修改图层的方法来使炸弹被飞机遮挡住,打开飞机图片的属性,在高级菜单中找到图层选项,默认图层为0,只要将飞机的图层改为比0大的数值,都可以使其遮挡住后面的元件,但是,遮挡炸弹图片的同时,也有可能会挡住其他元件,导致其不能被选择或者被点击,如图1.9-11所示。
图1.9-11
此时只需要将图片高级菜单下的“允许选定”前面的对勾取消,该图片就只能从视觉上遮挡,而不影响点击和选择被它挡住的元件了。如图1.9-12所示。
图1.9-12
1.9-5 炸弹坐标的定义
图1.9-6 截取时间脚本
图1.9-9
$