前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >空气阻力对乒乓球运动轨迹的影响

空气阻力对乒乓球运动轨迹的影响

作者头像
DechinPhy
发布2022-05-06 14:21:23
9980
发布2022-05-06 14:21:23
举报
文章被收录于专栏:Dechin的专栏

技术背景

乒乓球作为国球,不仅仅是在奥运等众多赛场上为中国收纳了多枚奖牌,更是在民间广为大家所好。在上一篇博客中主要讲述了马格努斯力在乒乓球的运动过程中的应用,并且从俯视图的角度看到了乒乓球的各种旋转下的弧圈轨迹。本文主要讲述的是空气阻力对乒乓球的运动过程的影响。

空气阻力的模拟

我们所了解到的空气阻力的表达式为:

`$F=C\rho Sv^2

$`

其中C是一个常数,对于不同的物质参数有可能不同,这个需要在实验中进行测定,而这里我们就简单取一个假设值即可。\rho 表示空气密度,S表示迎风面积,对于一个乒乓球而言,迎风面积其实就是乒乓球的投影面积,v表示速度,空气阻力与速度的平方成正比。至于阻力的方向,那肯定是跟乒乓球的运动方向相反的,来拒去留。相关的模拟测试代码如下:

代码语言:javascript
复制
import numpy as np
from tqdm import trange
import matplotlib.pyplot as plt

vel = np.array([4.,4.])
vel0 = vel.copy()
steps = 100
r = 0.02
rho = 1.29
mass_min = 2.53e-03
mass_max = 2.70e-03
dt = 0.01
g = 9.8
C = 0.1
s0 = np.array([0.,0.])
s00 = np.array([0.,0.])

s1 = [s0.copy()]
for step in trange(steps):
    s0 += vel*dt
    s1.append(s0.copy())
    # print (vel)
    vel += np.array([0.,-g])*dt
s1 = np.array(s1)

s2 = [s00.copy()]
for step in trange(steps):
    s00 += vel0*dt
    s2.append(s00.copy())
    vel_norm = np.linalg.norm(vel0)
    DampF = C*rho*np.pi*r**2*vel_norm**2
    DampA = DampF/mass_min
    # print (vel)
    vel0 -= np.array([DampA*vel0[0]/vel_norm, DampA*vel0[1]/vel_norm])*dt
    vel0 += np.array([0.,-g])*dt
s2 = np.array(s2)

plt.figure()
plt.plot(s1[:,0], s1[:,1], 'o', color='orange')
plt.plot(s2[:,0], s2[:,1], 'o', color='black')
plt.savefig('damping.png')

代码的运行结果如下图所示,其中橙色轨迹表示未添加阻力的曲线,黑色轨迹表示考虑了空气阻力:

可以看到,在加了空气阻力之后,乒乓球的速度逐渐降低,就不再是一个漂亮的抛物线形式了。需要注意的是,这里我们的轨迹是从y-z平面来观察的侧视图。

加转弧圈带来的影响

我们在上一个章节中主要考虑的是空气阻力对乒乓球运动轨迹的影响,其中并未考虑到乒乓球本身的旋转。这里我们考虑一个弧圈球的场景:加转弧圈或者叫高吊弧圈球的轨迹,在这个乒乓球活动的轨迹中需要加入上旋的旋转,上旋会给乒乓球带来一个向下压的马格努斯力,使得乒乓球运动轨迹的弧线更小。具体的马格努斯力的形式参考如下Nasa提供的Kutta-Joukowski理论:

相关的模拟代码如下所示,这里为了方便调用,我们把生成轨迹的模块包装成了一个简单的函数:

代码语言:javascript
复制
import numpy as np
from tqdm import trange
import matplotlib.pyplot as plt

vel = np.array([4.,4.])
vel0 = vel.copy()
steps = 100
r = 0.02
rho = 1.29
mass_min = 2.53e-03
mass_max = 2.70e-03
dt = 0.01
g = 9.8
C = 0.1
f0 = 0.
f1 = 0.
omega0 = 4
s0 = np.array([0.,0.])
s00 = np.array([0.,0.])

def F(vel, omega, r, rho):
    return 4*(4*np.pi**2*r**3*omega*vel*rho)/3

def Trace(steps, s0, vel0, f0, f1, dt, mass, omega0, r, rho, damping=False, KJ=False):
    s = [s0.copy()]
    tmps = s0.copy()
    for step in trange(steps):
        tmps += vel0*dt+0.5*f0*dt**2/mass
        s.append(tmps.copy())
        vel_norm = np.linalg.norm(vel0)
        if KJ:
            vel0 += np.array([np.sqrt(vel0[1]**2*(f0*dt/mass)**2/(vel0[0]**2+vel0[1]**2)),
                             -np.sqrt(vel0[0]**2*(f0*dt/mass)**2/(vel0[0]**2+vel0[1]**2))])
        if damping:
            vel0 -= np.array([f1*vel0[0]/vel_norm, f1*vel0[1]/vel_norm])*dt/mass
        vel0 += np.array([0.,-g])*dt
        f0 = F(np.linalg.norm(vel0), np.abs(omega0), r, rho)
        f1 = C*rho*np.pi*r**2*vel_norm**2
    return np.array(s)

s1 = Trace(steps, s0, vel0.copy(), f0, f1, dt, mass_min, omega0, r, rho, damping=False, KJ=False)
s2 = Trace(steps, s0, vel0.copy(), f0, f1, dt, mass_min, omega0, r, rho, damping=True, KJ=False)
s3 = Trace(steps, s0, vel0.copy(), f0, f1, dt, mass_min, omega0, r, rho, damping=True, KJ=True)

plt.figure()
plt.plot(s1[:,0], s1[:,1], 'o', color='orange')
plt.plot(s2[:,0], s2[:,1], 'o', color='black')
plt.plot(s3[:,0], s3[:,1], 'o', color='red')
plt.savefig('damping.png')

运行结果如下,其中黄色的轨迹表示不考虑空气阻力和马格努斯力的效果,而黑色的轨迹表示考虑空气阻力不考虑马格努斯力作用的结果,相关内容在上一个章节中已经进行了介绍,最后还有一条红色的轨迹表示同时考虑了空气阻力和马格努斯力的结果,也就是正常拉出来的高吊弧圈球的效果:

从这个结果中我们可以了解到,高吊弧圈球不仅旋转强烈,在轨迹上也会更加的低平,在赛场上具有很强的威胁性。

削球弧线

在上一个章节中我们模拟的是高吊弧圈球的结果,也就是上旋转的球,而在赛场上还有另外一种非弧圈的打法:削攻结合。其中的削球技术,能够给球带来一个强烈的下旋转,也就是改变了马格努力的方向,相关的模拟代码如下:

代码语言:javascript
复制
import numpy as np
from tqdm import trange
import matplotlib.pyplot as plt

vel = np.array([4.,4.])
vel0 = vel.copy()
steps = 100
r = 0.02
rho = 1.29
mass_min = 2.53e-03
mass_max = 2.70e-03
dt = 0.01
g = 9.8
C = 0.1
f0 = 0.
f1 = 0.
omega0 = 4
s0 = np.array([0.,0.])
s00 = np.array([0.,0.])

def F(vel, omega, r, rho):
    return 4*(4*np.pi**2*r**3*omega*vel*rho)/3

def Trace(steps, s0, vel0, f0, f1, dt, mass, omega0, r, rho, damping=False, KJ=False, down_spin=False):
    s = [s0.copy()]
    tmps = s0.copy()
    for step in trange(steps):
        tmps += vel0*dt+0.5*f0*dt**2/mass
        s.append(tmps.copy())
        vel_norm = np.linalg.norm(vel0)
        if KJ and not down_spin:
            vel0 += np.array([np.sqrt(vel0[1]**2*(f0*dt/mass)**2/(vel0[0]**2+vel0[1]**2)),
                              -np.sqrt(vel0[0]**2*(f0*dt/mass)**2/(vel0[0]**2+vel0[1]**2))])
        if KJ and down_spin:
            vel0 += np.array([-np.sqrt(vel0[1]**2*(f0*dt/mass)**2/(vel0[0]**2+vel0[1]**2)),
                              np.sqrt(vel0[0]**2*(f0*dt/mass)**2/(vel0[0]**2+vel0[1]**2))])
        if damping:
            vel0 -= np.array([f1*vel0[0]/vel_norm, f1*vel0[1]/vel_norm])*dt/mass
        vel0 += np.array([0.,-g])*dt
        f0 = F(np.linalg.norm(vel0), omega0, r, rho)
        f1 = C*rho*np.pi*r**2*vel_norm**2
    return np.array(s)

s1 = Trace(steps, s0, vel0.copy(), f0, f1, dt, mass_min, omega0, r, rho, damping=True, KJ=False)
s2 = Trace(steps, s0, vel0.copy(), f0, f1, dt, mass_min, omega0, r, rho, damping=True, KJ=True)
s3 = Trace(steps, s0, vel0.copy(), f0, f1, dt, mass_min, omega0, r, rho, damping=True, KJ=True, down_spin=True)

plt.figure()
plt.plot(s1[:,0], s1[:,1], 'o', color='orange')
plt.plot(s2[:,0], s2[:,1], 'o', color='black')
plt.plot(s3[:,0], s3[:,1], 'o', color='red')
plt.savefig('damping.png')

在这次的模拟中,我们对比了不加弧圈(橙色轨迹)、高吊弧圈(黑色轨迹)和削球弧线(红色轨迹),如下图所示:

从结果中我们发现,由于强烈的下旋转为乒乓球带来了上升的马格努斯力,因此乒乓球的弧线轨迹被拉长了,相对而言会更加容易控制弧线。比如朱世赫,还有中国队的马特,以及前国家队的侯英超,都是削球名将。

总结概要

在前一篇博客中我们介绍了加侧旋的乒乓球弧圈技术的模拟,本文我们关注的是高吊弧圈和削球弧线这两种轨迹原理,并且引入了空气阻力对乒乓球运动轨迹的影响。通过对空气阻力和马格努斯力的模拟,我们可以看到不同的弧线曲线。对于乒乓球爱好者而言,可以通过这种模拟的结果,来制定比赛中有可能用到的策略,比如低长弧圈球、高短弧圈球等等。先从科学的角度出发制定战略,再通过日常训练和巩固提高技术水平,最后再使用到正式的赛场上去。

版权声明

本文首发链接为:https://cloud.tencent.com/developer/article/1993091

作者ID:DechinPhy

更多原著文章请参考:https://www.cnblogs.com/dechinphy/

打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 技术背景
  • 空气阻力的模拟
  • 加转弧圈带来的影响
  • 削球弧线
  • 总结概要
  • 版权声明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档