ただのメモ

他の人に見せても良い方のメモ

ナックルボール

流体シミュレーションをしてみる。

マグヌス効果を考えたくないので、今回は、無回転(ナックルボール)とする。

(本当は乱流などもあるが、今回は空気抵抗と重力だけとする)

 

 

 

 

#%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math

T=100;
###initial condition###

alpha=0.3
beta=0.5
gamma=0.2
dt=0.003
h=0.1525
x_temp=0;vx_temp=20;y_temp=h*1.5;vy_temp=-0.5
x=[0]*T;vx=[0]*T;y=[0]*T;vy=[0]*T
rho=1.29;a=0.02;g=9.8;m=0.0027;Cd=0.47
x[0]=x_temp;vx[0]=vx_temp;y[0]=y_temp;vy[0]=vy_temp

for t in range(T-1):
    x_temp2=x_temp+vx_temp*dt 
    vx_temp2=vx_temp+(-Cd*math.pi*a**2*rho*(vx_temp**2+vy_temp**2)**0.5*vx_temp/(2*m))*dt
    y_temp2=y_temp+vy_temp*dt
    vy_temp2=vy_temp+(-g-Cd*math.pi*a**2*rho*(vx_temp**2+vy_temp**2)**0.5*vy_temp/(2*m))*dt
    x[t+1]=x_temp2;vx[t+1]=vx_temp2;y[t+1]=y_temp2;vy[t+1]=vy_temp2
    x_temp=x_temp2;vx_temp=vx_temp2;y_temp=y_temp2;vy_temp=vy_temp2
import matplotlib.pyplot as plt
# プロット範囲のxを用意
time1=[0.01*k for k in range(157)]
time2=[0.01*k for k in range(157,314)]
H = [for _ in range(len(time1))]
G = [0 for _ in range(len(time1))]
# xに対応するyの値を用意
plt.plot(time1,G,"r-..")
plt.plot(time1,H,"g-.")
plt.plot(time2,G,"b--")
plt.plot(x,y,"purple")
plt.xlabel("x")
plt.ylabel("y")
plt.title("PingPong Analysis")
# plt.show()で画面に表示
plt.show()
print((2.74**2+1.5**2)**0.5)

 

f:id:medical-science:20220315024540p:plain

卓球台の対角線の長さは3.13メートルほど、赤が自陣、青が敵陣。

緑は、卓球のネットの高さを表す。この線と交差する軌道は、敵陣に入らない。

今回は、自陣の奥からナックルボールを打つことを考えた。

かなり、余裕がない。ましてや、もっと速度が速くなると、厳しい。

これを逆手にとると、敵陣の奥にネットの高さほどのバウンドの高さのボールを送ると、まず、ナックル強打されることはない、と考えてよい、ということになる。

となると、カットで来るか、上回転をかけるか、というのが無難だ。

バイバイ!