[matplotlib animation] 12. 変形する楕円体

matplotlib Animation
スポンサーリンク

matplotlib FuncAnimationによる、変形する楕円体のアニメーション

楕円体が変化するアニメーション

コード

でできるアニメーション。

解説

モジュールのインポート
軸範囲と軸ラベル、アスペクト比の設定
データの生成

楕円体は球と同様に、極座標系の媒介変数でデータを生成する。
θを0〜2π,φを0〜πとすると、以下のようになる。

$$x=acos\theta sin\phi\\y=bsin\theta sin\phi\\z=ccos\phi$$

ここでa,b,cは各x,y,z軸方向の径の半分の長さとなる。
ここでは、a=b=1, c=5と設定している。

アニメーションではa,bを変化させる。そのために、xr(a)とyr(b)をlinspaceで作成。
xrは大きくして小さくする配列。
yrは小さくして大きくする配列。
それぞれlinspaceの配列をhstackで連結して作成。

アニメーションの設定

まずアニメーションで動くグラフにするためにリスト内にplot_wireframeを作成する。
wireframeのrstride, cstrideはそれぞれrowとcolumnの表示間隔、デフォルト値は1。

アニメーションでは古いプロットを消す必要があるので、
plotにグラフが入っている場合は、remove()で消す。

x,yにxr,yrの値を乗じて、x_,y_としてプロットを作成。
plot[0]にそれを入れる。

アニメーションの表示

FuncAnimationでanimationの表示。updateを100step実行してアニメーションとする。intervalは100 ms なので10秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。

参考

  1. 楕円体 – Wikipedia
  2. Numpy の vstack、hstack で配列を連結-python

コメント