はじめに
双曲面は、二次曲面の一種で、数学的には次の方程式で表されます:
$$ \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ファイル)参考

コメント