はじめに
この記事では、matplotlibのFuncAnimationを使用して斜方投射のアニメーションを様々な角度で表示する方法を解説します。物理シミュレーションと視覚化を組み合わせた実践的なPythonプログラミング例を紹介します。
コード
解説
モジュールのインポートなど
バージョン
角度45°で投射した場合
時間の設定
np.arangeを使用して、0秒から18秒まで0.05秒間隔の時間データを作成します。これにより配列サイズは360になります。
重力加速度は9.8 m/s²と設定しました。
初期位置と初速度の設定
初期位置を(0,0)として、初速度100で物体を打ち上げます。45°(π/4)で投射した場合の横方向と縦方向の速度成分をそれぞれ計算します。
位置の変化
x座標とy座標を用いて、それぞれ横方向と縦方向の位置の変化を計算します。
地面に到着する時間
t0を用いて物体が地面に到着する時間を計算します。また、np.argmin(np.abs(t-t0))により地面到着時間に対応するインデックスも特定します。
データのスライス
データの表示

アニメーションで表示
様々な角度の斜方投射
データの作成
上記の45°と同様にデータを作成します。
アニメーションで表示
set_xdataとset_ydataを使用して、ボールのx方向とy方向の位置データをそれぞれセットします。
FuncAnimationでアニメーションを表示します。フレーム数は360、インターバルは10msに設定し、約4秒のアニメーションを作成します。
HTML(ani.to_html5_video())
を実行することで、Jupyter NotebookやJupyter Lab上にアニメーションを直接表示できます。
ani.save(‘ファイル名’, writer=”ffmpeg”, dpi=100)を使用すると、アニメーションをMP4形式で保存できます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
本記事では、matplotlibのFuncAnimationを使って様々な角度での斜方投射をアニメーション化する方法を解説しました。物理法則に基づいたシミュレーションと視覚化の組み合わせは、科学的データの理解を深める強力なツールとなります。このテクニックを応用することで、より複雑な物理現象や他の科学的プロセスも視覚的に表現できるようになります。
コメント