はじめに
matplotlibのFuncAnimationにより、鉛直投げ上げのアニメーションを表示する。
コード
解説
モジュールのインポート
3Dグラフの設定
球データの生成
[matplotlib 3D] 18. 3D surfaceプロットで球を表示
matplotlibのmplot3dをつかって、3Dグラフ上にsurface plotで球を表示する方法について解説する。
上記の記事に基づいて、球データを作成する。底面に接するようにzに+rしている。(rは半径)
各種パラメータの設定
初速度をv0、重力加速度を9.8とすると、発射してから戻ってくるまでの時間(t)は、
$$t = \frac{2v_0}{g}$$グリッドと軸ラベル、アスペクト比の設定
球の最高到達点の高さ(h)は、
$$h = \frac{v_0^2}{2g}$$となるので、これに基づいてxyzの範囲を設定する。
アニメーションの設定
アニメーションを表示するためのグラフのリストを作成する。
アニメーションでは古いプロットを消す必要があるので、
グラフのリスト(ball_1)にグラフが入っている場合は.remove()で消す。
tの値が順次変化するので、順次変化するzを計算して、プロットしていく。
zの位置は、↓のようになる。
$$z = v_0 t -\frac{1}{2} gt^2$$作成したプロットをリスト(ball_1)に入れることでアニメーションを表示できる。
アニメーションの表示
FuncAnimationでanimationの表示。updateを50step実行してアニメーションとする。intervalは100 ms なので5秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。
参考
鉛直投げ上げ公式の覚え方・これでもう絶対に間違えない!|高校生向け受験応援メディア「受験のミカタ」
鉛直投げ上げの公式と最高点の高さの求め方・公式、そして計算問題をご紹介します。鉛直投げ上げの公式はすぐに導くことができ、難しくはありません。この記事を読み終えた頃には、鉛直投げ上げについてほぼ完ぺきに理解できているようになっているでしょう。
コメント