Angry Birds 物理学
【本文原载:《连线》,作者:Rhett Allain ,原文链接】
你知道这个游戏的,我晓得你知道。没错,Angry Birds 。我已经对这样的游戏着迷了。你可以一次只玩一点点(比如一两关)并且每次当你「发射」,得到的结果都会稍微有那么点不同。等等,你还没玩过 Angry Birds ?恩,好吧。这个游戏简单创意是,用一支弹弓发射一些小鸟(它们看上去有些生气),就像投垒球一样扔出一个弧线,目标是把对面的绿猪们打翻撞倒。这个游戏就这么简单。
不过,如果从物理学的角度来看呢?这些发射的小鸟垂直方向的加速度是恒定的吗?水平方向的运动速度呢?让我们来一探究竟,好吗?噢,你可能会问,我为什么要这样做?我为什么就不能老实呆着好好玩两盘这个游戏呢?可这不是我的作风,我就是要分析一下,你可别拦我。
我原以为,要对 Angry Birds 进行分析,我需要自己先录制一些视频。不过,现在我决定直接用 Rovio(Angry Birds 开发商)提供的「游戏攻略」里的视频。尤其是下面的这段(谜底揭晓):
你怎么才能从飞行中的鸟儿身上获取数据呢?我将会使用我最喜欢的 Tracker Video analysis 。这个漂亮的追踪软件(除了免费之外,它还能在 Windows 、Mac 和 Linux 三个平台运行)有一个很棒的功能,可以自己排除视频中镜头移动和缩放带来的误差——较准点配对(calibration point pairs)。它的原理是,在一段视频中同时标记的两个「特征对象」,并且由始自终追踪这两个对象。通过追踪视频中每一帧画面里这两个对象的位置,Tracker 将会测量、计算、生成所需的数据。
另外一个需要知道的东西是视频中的比例尺。比例尺是多大?这谁知道呢?让我们从一个在每一关中都会出现的对象开始——用来发射鸟的弹弓。我先把这只弹弓的高度设定为 1 个 AB 。
然后回到数据。下面的测绘图,这只鸟儿水平方向 (x) 的位置随时间的变化。
这张图意味着什么呢?简单来说, 它意味着这只鸟儿在在水平 X 轴方向进行匀速运动。在我的实验里,这只鸟的水平速度是 2.46 AB/s (假设视频中的运动是实时的)。这足够了吗?好吧,假设这是真实的物理现象,并且是真实的抛物运动。那么在这个实验中,这只鸟儿中空中的受力示意图将是下面这样:
没错,就这么简单。这只鸟儿(在空中)所受的唯一的力(假设这只鸟儿没有移动的太快的话)就是地球的万有引力。这也是我看到很多初入门者所犯的错误。他们总是试图在水平方向上施加更大力量,因为他们觉得鸟儿是朝着这个方向飞行的。千万别这么做!亚里士多德或许让你这么认为,但你不会想加入他的俱乐部的。在这个例子中,没有水平方向的力——也没有空气阻力。
那么来看看垂直运动?
噢,我忘记指出在这张图表中有一些缺失的数据,就是当鸟儿「飞出」屏幕之外的时候。实际上,在这种情况下垂直方向仍然在进行匀加速运动(因为图形完全符合二次方程式)。这里涉及到的运动方程式是:
上面方程中的「t2」前的因数是加速度的 1/2 ,这意味着这只鸟儿的加速度(在垂直方向)是「2 AB/s2 」。但是如果这只鸟儿真的在地球上呢?在地球上,垂直地球方向的重力加速度是「9.8 m/s2」。那么,我就能算出这只弹弓的高度了。
多大的一只弹弓呢!哇喔,差不多 5 米高!那么,根据比例再测量一下这只红色的鸟儿有多大呢?大约有 70 厘米高!一只大鸟!一只又大又愤怒的鸟!
今天开始,Angry Birds 不该叫愤怒的小鸟了,而是愤怒的大鸟……