Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475目录

  • 技术背景
  • 空气阻力的模拟
  • 加转弧圈带来的影响
  • 削球弧线
  • 总结概要
  • 版权声明

回到顶部# 技术背景

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

回到顶部# 空气阻力的模拟

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import numpy as np
from tqdm import trange
import matplotlib.pyplot as pltvel = 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*dts1.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*dts2.append(s00.copy())vel_norm = np.linalg.norm(vel0)DampF = C*rho*np.pi*r**2*vel_norm**2DampA = DampF/mass_min# print (vel)vel0 -= np.array([DampA*vel0[0]/vel_norm, DampA*vel0[1]/vel_norm])*dtvel0 += 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理论:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import numpy as np
from tqdm import trange
import matplotlib.pyplot as pltvel = 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)/3def 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/masss.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/massvel0 += np.array([0.,-g])*dtf0 = F(np.linalg.norm(vel0), np.abs(omega0), r, rho)f1 = C*rho*np.pi*r**2*vel_norm**2return 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')

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

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

回到顶部# 削球弧线

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import numpy as np
from tqdm import trange
import matplotlib.pyplot as pltvel = 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)/3def 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/masss.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/massvel0 += np.array([0.,-g])*dtf0 = F(np.linalg.norm(vel0), omega0, r, rho)f1 = C*rho*np.pi*r**2*vel_norm**2return 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://blog.csdn.net/dechinphy/p/damping.html

作者ID:DechinPhy

更多原著文章请参考:https://blog.csdn.net/dechinphy/

打赏专用链接:https://blog.csdn.net/dechinphy/gallery/image/379634.html

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

空气阻力对乒乓球运动轨迹的影响相关推荐

  1. 数字逻辑电路与系统 课程设计:基于FPGA的乒乓球游戏

    设计目的 使用FPGA实验班设计一个数字逻辑系统,巩固数字逻辑电路的相关知识,锻炼熟练使用FPGA设计软件和硬件和独立完成项目设计的能力. 二.设计内容 2.1摘要 设计一个乒乓球游戏,实现游戏功能和 ...

  2. 2023五一杯数学建模A题全网免费思路分享

    持续更新 群号:http://点击链接加入群聊[五一杯冲冲冲!]:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=oRPLvNWO-qfREs6T0BZMi ...

  3. 数学建模美赛、国赛真题训练——滑雪场的设计(原创)

    摘要 本文分析研究单板滑雪过程,设计出了能使熟练运动员最大限度产生垂直腾空的半管滑道形状,并结合运动员在空中完成翻转等动作的要求检测优化了该滑道的形状. 首先,根据调查所得资料,半管滑道是具有一定倾斜 ...

  4. 互补性:从不同的角度思考同一个事物时,发现它同时具有不同甚至相互矛盾的性质...

    来源:混沌巡洋舰 检验一流智力的标准是头脑中能同时持有两种截然相反的观点,却能并行不悖. --弗朗西斯·斯科特·菲茨杰拉德 显然,这种互补性推翻了学术的本体论.真理是什么?我们之所以要提出彼拉多的问题 ...

  5. 静电场的有限差分法与matlab 仿真课程设计,计算物理和MATLAB课程设计--自激振动系统的MATLAB仿真.doc...

    东北石油大学课程设计任务书 课程 计算物理和MATLAB课程设计 题目 自激振动系统的MATLAB仿真 专业 姓名 学号 主要内容.基本要求.主要参考资料等 主要内容: 研究范?德?波耳(Van de ...

  6. 【Unity】11.2 刚体(Rigidbody)

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力,使游戏对象像在真实世界中那样 ...

  7. 浅谈工业机器人的运动停止

    德系的工业机器人系统中,对于机器人停止运动,定义了3种模式,比如 KUKA 的工业机器人分别定义了 Stop 0 ,Stop 1,Stop 2 (*注1).这种定义模式是与机器人的机械结构和电气结构相 ...

  8. (十四:2020.08.28)CVPR 2014 追踪之论文纲要(译)

    CVPR 2020 追踪之论文纲要(修正于2020.08.28) 讲在前面 论文目录 讲在前面 论坛很多博客都对论文做了总结和分类,但就医学领域而言,对这些论文的筛选信息显然需要更加精细的把控,所以自 ...

  9. 深度学习-CV方向基本原理

    算法 一.卷积 卷积的基本含义 本质上就是相乘求和 功能上拥有数据过滤和增强作用 对于相乘求和,是通用的使用卷积核每个像素点与对应的像素点相乘得到的结果求和作为中心点Result 对于分类:在深度学习 ...

  10. Unity学习笔记—二次元日系游戏制作(理论篇)

    原教程:siki:二次元日系游戏制作工具 - live2dSDK入门教程 http://www.sikiedu.com/my/course/282 一.准备工作 1.下载安装:Live2D_Cubis ...

最新文章

  1. php带帽接口_利用php自包含特性上传webshell
  2. 记WinCE下调试SIM900 GSM module
  3. boost::planar_face_traversal用法的测试程序
  4. Redis Hash 哈希 结构
  5. win 2008 server 更改远程桌面端口的方法
  6. 去广州见了我大学老师标哥
  7. Java之类的构造器(反射)
  8. IOS 学习笔记 2015-03-27 我理解的OC-代理模式
  9. Web Hacking 101 中文版 五、HTML 注入
  10. Objective-c 中 nil, Nil, NULL和NSNull的区别
  11. 使用celery出现async的报错的解决方法
  12. sql 2005中全文索引的使用
  13. 为什么你很努力,进步却很慢?
  14. 16位顶尖对冲基金大佬:畅谈量化投资的下个10年!
  15. button执行onclick函数_可能你的react函数组件从来没有优化过
  16. 华硕笔记本电池0%充不进电_华硕笔记本电池不充电怎么办
  17. js加载flv格式视频
  18. 三菱q系列plc连接电脑步骤_SERVER和三菱Q系列PLC通讯设置步骤
  19. win10系统word2016出现错误 “429 ActiveX部件不能创建对象”
  20. Reflection conclusion

热门文章

  1. Eclipse中导入项目前有红叉提示但是项目内容不报错解决办法
  2. android中生成 PDF,Android PDF生成
  3. icm20602姿态解算
  4. 您已购买此 App 内购买项目。此项目将免费恢复。This In-App purchase has already been bought.It will be restored for free.
  5. horizon2206+A6000显卡 vGPU桌面经验分享
  6. js月份的计算公式_js判断某年某月有多少天(闰年计算方法)
  7. Ai实现毛茸茸的字体
  8. [GNSS] GNSS原理:多模导航卫星精密定轨理论
  9. 原罪(Original sin):gluttony,greed,sloth,lust,pride,envy and wrath
  10. w10计算机名重新启动此计算机后,win10电脑关机后自动重启怎么回事?原因与解决办法...