[matplotlib Animation] 7. 双曲面の拡張アニメーション

matplotlib 3D

はじめに

双曲面は、二次曲面の一種で、数学的には次の方程式で表されます:

$$ \frac{x^2}{a^2} + \frac{y^2}{b^2} – \frac{z^2}{c^2} = 1 $$

この形状は、無限に広がる二枚の曲面からなり、科学や工学の様々な分野で応用されています。このページでは、matplotlib FuncAnimationを用いた双曲面の拡張アニメーションについて説明します。

コード

解説

モジュールのインポート

軸と軸ラベルの設定

データの生成

双曲面は媒介変数を使ってデータを生成するため、まずuとvのパラメータを作成し、meshgridで格子状に配置します。双曲面の媒介変数表現は以下のようになります。

$$X = cosh(u)*cos(v)\\ Y = cosh(u)*sin(v)\\ Z = sinh(u)$$

ここでは、a,bの値をnp.linspace(0,1,100)を使用して、0から1まで100ステップで徐々に変化させます。

アニメーションの設定

まず最初に表示するグラフをplotにプロットし、それを[]で囲んでリスト形式にしておきます。

アニメーションを作成する際は、フレームごとに古いプロットを消去する必要があります。3Dグラフでは、plot[0].remove()メソッドを使用して前のフレームを消去できます。双曲面データを生成するには、パラメータa,bの値をX,Y座標に順次代入していきます。生成したデータはplot[0]に格納し、3Dグラフとして連続的に表示していきます。

アニメーションの表示

FuncAnimationでアニメーションを表示します。updateのフレーム数を100に設定しているため、総フレーム数は100になります。interval=100を指定しているので、フレームは100ミリ秒ごとに切り替わり、合計で100フレーム×100ミリ秒=10,000ミリ秒=10秒のアニメーションとなります。

to_html5_video関数を使用すると、このアニメーションをHTMLビデオとしてJupyter Notebook上に表示できます。

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

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

参考

双曲線関数 - Wikipedia

 

コメント