はじめに
matplotlib FuncAnimationにより、3Dグラフ上での斜方投射のアニメーションを作成する。
コード
解説
モジュールのインポート
3Dグラフの設定
球データの生成
[matplotlib 3D] 18. 3D surfaceプロットで球を表示
matplotlibのmplot3dをつかって、3Dグラフ上にsurface plotで球を表示する方法について解説する。
↑に基づいて、球データの作成。底面に接するようにzに+rしている。(rは半径)
各種パラメータの設定
初速度をv0、重力加速度を9.8、打ち上げ角度を60°(π/3)とすると、発射してから戻ってくるまでの時間(t)は、↓のようになる。
$$t = \frac{2v_0 sin\theta}{g}$$グリッドと軸ラベル、アスペクト比の設定
球の最高到達点の高さ(h)は、
$$h = \frac{v_0^2 sin^2\theta}{2g}$$となるので、これに基づいてxyzの範囲を設定する。
アニメーションの設定
アニメーションを表示するためのグラフのリストを作成する。
アニメーションでは古いプロットを消す必要があるので、
グラフのリスト(ball_1)にグラフが入っている場合は.remove()で消す。
tの値が順次変化するので、順次変化するx, zを計算して、プロットしていく。
zの位置は、↓のようになる。
$$z = v_0 sin\theta \times t -\frac{1}{2} gt^2$$xの位置は↓のようになる。
$$x = v_0 cos\theta \times t $$作成したプロットをリスト(ball_1)に入れることでアニメーションを表示できる。
アニメーションの表示
FuncAnimationでanimationの表示。updateを50step実行してアニメーションとする。intervalは100 ms なので5秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。
参考
斜方投射をわかりやすく解説!運動方程式や例題も|高校生向け受験応援メディア「受験のミカタ」
今回は斜方投射を解説します。斜方投射は非常に出題頻度が高く、確実にマスターしなければなりません。マスターしてしまえば得点源になる分野ですのでここで学んで解法を身につけましょう!
コメント