咨询电话:0577-86602010

新闻详情

咨询热线

MATLAB模拟乒乓球回滚原来U型魔鬼发球是这个原因

网站编辑:u乐网址-u乐平台注册-u乐平台 │ 发表时间:2020-06-08 09:16:10 

  经常看球类比赛的同志们一定知道一句话,叫做“国足谁都赢不了,国乒谁都赢不了!”,这句话内涵相当丰富(笑ing)。曾有过这样一名国乒队员,凭一手“魔鬼回旋球”,成就“发球一次得一分,一直发球一直得分”的神线年北京奥运会上过五关斩六将,赢得男子乒乓球单打金牌的老球员——马琳

  所谓“魔鬼回旋球”,也叫“零式发球”,是让乒乓球在发出后“不出台”,反而向球网回滚的急下旋发球。这种球过网高度低,前冲性小,下旋强烈,一般的反胶选手很容易“扎网吃球”。

  这个“U”形“魔鬼回旋球”究竟是如何做到的?乒乓球被发出后又是如何形成“U”形轨迹的呢?这样的问题激发了很多物理学者的好奇心。但是,这些问题研究起来有一定的难度。我们看到,乒乓球在运动过程中会与球台发生碰撞,并且在碰撞时还会受到摩擦力的作用,运动情况相当复杂。而物理学力求“简单美”,我们也希望所研究的物理模型更加简单但不失严格性。我们就不妨先不去研究乒乓球与球台的那十分复杂的碰撞过程,转而去研究一种类似的但同样十分奇妙的运动——乒乓球在水平面内的“回滚”运动,这个运动就相对地简单了许多。

  乒乓球的“回滚”运动很容易就能实现: 我们把乒乓球放在桌子上,按压乒乓球的中后部,把乒乓球“搓”出去。只要我们“搓”的力度足够大,乒乓球就会发生“回滚”现象。就像这样:

  乒乓球的回滚问题是理论力学中的一个典型应用题。现在,我们就来仔细研究一下。

  我们假设乒乓球被按压出去后能够迅速恢复形变,并把乒乓球在之后的运动看做平面刚体的运动。假设乒乓球初始时刻质心的速度为,其绕中心轴逆时针旋转的角速度为. 以质心初速度方向为轴正向,竖直向上为轴正向,建立本征坐标系,如下图所示:

  在这个阶段,乒乓球是一直在“打滑”的,也就是不满足无滑条件。我们对乒乓球进行受力分析并列出方程:

  其中是乒乓球相对于初始时刻的转角,是乒乓球的质量,是乒乓球的半径。我们看到,这些方程中未知数有5个,分别是:. 很明显,光靠这三个方程是解不出来的,还需要补充下面这两个方程:

  我们清楚地看到:质心位置和转角都是关于时间的二次函数,并且二次项系数都是负值。这就说明,乒乓球在运动到一定时刻后,就会“掉头回转”,跑回来。但是……

  我们需要明确一个问题——微分方程解的“有效性”,像式(4)这样的解,不是一直都成立的。当乒乓球达到无滑滚动的状态时,我们的最原始的受力分析就出现问题了:无滑滚动时地面对乒乓球的摩擦力可不等于动摩擦因数与正压力的乘积啊!而这一式子应当换成无滑条件:

  我们不妨来想一个简单的问题:对于任意给定的初速度和初始角速度,乒乓球都能回滚吗?答案是否定的。我们来继续研究乒乓球达到无滑滚动后的运动。我们将无滑条件代入(3)式,求出达到无滑滚动的时刻

  从这两个式子中我们就可以看到,乒乓球并不是总能滚回来的,它还有可能停止滚动或者继续向前滚动,这些都取决于初始时刻的转动角速度和质心速度。

  实际上,这样的图像很好理解:当球的质心初速度很大的时候,乒乓球就不能回滚,而是达到纯滚动后继续向前滚动;若是条件控制得当的话,乒乓球也能停下来,静止在质心速度和乒乓球转动角速度同时减小至零的位置。

  以上便是未达到纯滚动时乒乓球的运动状态。达到纯滚动后的运动很容易理解,若乒乓球质心速度不为零,则质心作匀速直线运动,乒乓球相对质心转动的角速度则为定值

  至此 ,乒乓球“回滚”的物理图像就已经十分清晰了。我们看到:乒乓球“回滚”只是其中的一种运动,它达到纯滚后还有可能继续向前运动,或者原地“站住”,静止不动。

  如果哪位同志有幸参加了2016年北京师范大学第十五届青年教师基本功大赛,就会看到这样的一个画面。物理学系教师涂展春以“乒乓球回滚”为核心问题讲授了《刚体平面平行运动动力学》一课,详细讲述了刚体平面平行运动的知识,并深入浅出地分析了乒乓球“回滚”的过程。

  当然,这里呈现的是一个动画模拟图。如果各位真的打算去拍摄乒乓球的回滚的视频,就会发现,由于乒乓球运动太快,手机或者普通的摄影机根本捕捉不到清晰的图像,必须使用高速摄影机才能将过程拍摄下来。高速摄影机不是一般的贵。于是,参赛选手就利用了强大的多媒体技术,将221张图片叠成一副1/8倍速动画,展示在了大家面前。为了能够区分“乒乓球”在旋转,选手还特意在绘制的圆上添加了一些几何图形,这样就显得很直观了。

  这确实有点难度。除了技术上存在困难,这个模拟图上还存在一个不大又不小的问题,也是平面动画的“通病”——少了些必要的“立体感”。这就使得动画看上去不像是乒乓球在“回滚”,而是一个类似圆柱体的物体在“回滚”。于是,笔者决定,用强大的工具——MATLAB,通过编程来重制乒乓球回滚的模拟图!

  要想让图动起来,就需要一个容易操控的静态图,之后,改变其中的参数,使之伴随时间变化,就可以达到动画的效果,比如这样:

  这里面用到了MATLAB四维作图,当然,第四维度没法直接画出来,MATLAB就用颜色来表示了,这也正好为我们观察乒乓球的旋转提供了方便。剩下的事情,便是做运算,而后控制动画的绘制,运算的方程在这里就不陈述了,大家可以翻前文来看哈!有一些难度的是动画的绘制。比如,我们想让这个球体转起来,怎么实现呢?我们能够直接想到的是用rotate命令。但是,这个命令有一个致命的缺点,就是要先画出原图形,再进行旋转。当使用循环画图的时候,图形窗口没有时间来相应rotate命令,就会出现图形颤动或者“看上去不旋转”的问题。

  但是,车到山前必有路。其实,我们完全可以不用MATLAB里面内置的指令,而是自己去写一个函数,让这个函数先将坐标“旋转”好,再用surf指令绘图。

  大家一定学过线性代数,知道若将一个点绕着某个轴旋转,可以由一个线性变换矩阵来实现,比如令其绕着轴旋转,就是这样:

  那么,令其绕着一条直线旋转呢?我们假设这条直线平行于轴,那么,决定这个直线的参数只有两个,便是这条直线的坐标和坐标。此时,旋转后的点就可以这样表示:

  大家应该会发现,,这也能看出直线的纵坐标对旋转没有影响,我们也就不需要传入直线的纵坐标参数了。考虑到要计算的数据是矩阵形式,我们把上面的矩阵等式写成三个数量等式,并使其返回值为旋转后的坐标。根据这个原理,我们就能做出乒乓球绕其瞬时轴旋转的动画啦!就像这样:

  就差把计算加入进去啦!只需要经历一段严谨的逻辑性的书写过程,程序就会大功告成!我们来看看最后的结果!