[matplotlib animation] 82.様々な角度で斜方投射

matplotlib

はじめに

matplotlibのFuncAnimationで斜方投射のアニメーションを表示する。

コード

解説

モジュールのインポートなど

バージョン

角度45°で投射した場合

時間の設定

np.arangeで18 sまで0.05刻みで時間データを作成する。配列のサイズは360となる。
重力加速度は9.8 m/sとした。

初期位置と初速度の設定

初期位置を(0,0)とした場合、初速度を100として打ち上げる。
v_x、v_yで45°(π/4)で投射したときの横方向、縦方向の速度をそれぞれ求める。

位置の変化

x,yで横方向、縦方向の位置の変化をそれぞれ求める。

地面に到着する時間

t0で地面に到着する時間を求める。
地面に到着する時間のインデックスもnp.argmin(np.abs(t-t0))で求める。

データのスライス

データの表示

アニメーションで表示

様々な角度の斜方投射

データの作成

上記の45°と同様にデータを作成する。

アニメーションで表示

set_xdataでボールのx方向の位置データをセットし、set_ydataでy方向の位置データをセットする。

FuncAnimationでアニメーションを表示する。frame数を360、intervalを10msとし、4秒弱のアニメーションとする。
HTML(ani.to_html5_video())により、jupyter notebook またはjupyter lab上にアニメーションを表示できる。

ani.save(‘ファイル名’, writer=”ffmpeg”,dpi=100)でアニメーションをMP4形式で保存することができる。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

参考

斜方投射 - Wikipedia
斜方投射1 ■わかりやすい高校物理の部屋■

コメント