投射運動

投射運動とは、例えばボールを投げた時にボールが描く軌跡のことです。
ここでは簡略化のため、水平方向の力にかかる空気抵抗などは省略しています。

ボールが地面に落ちるまでの時間(秒)は、
2 * (初速 * sin(ボールを投げる角度)) / 9.8
で求められます。


from matplotlib import pyplot as plt, axis
import math
def draw_graph(x, y):
plt.axis(ymax=x[len(x)-1])
plt.plot(x, y)

def frange(start, end, interval):
numbers = []
while start < end:
numbers.append(start)
start = start + interval
return numbers

def draw_trajectory(u, theta):
theta = math.radians(theta)
g = 9.8
# 地面に落ちるまでの時間
t_flight = 2 * u * math.sin(theta) / g
intervals = frange(0, t_flight, 0.001)
x = []
y = []
for t in intervals:
x.append(u * math.cos(theta) * t)
y.append(u * math.sin(theta) * t - 0.5 * g * t * t)
draw_graph(x, y)

# 初速25m/sでボールを角度45度で投げた時の軌跡
draw_trajectory(25, 45)
# 初速40m/sでボールを角度45度で投げた時の軌跡
draw_trajectory(40, 45)
# 初速60m/sでボールを角度45度で投げた時の軌跡
draw_trajectory(60, 45)
plt.show()



実行結果は、以下のようになります。



0 件のコメント:

コメントを投稿