はじめに
この記事では、matplotlibとNumPyを使用してトーラス結び目のアニメーションを作成する方法を紹介しています。トーラス結び目のパラメータp,qを変化させながら、結び目の形状が変わっていく様子を3Dアニメーションとして表現しています。
コード
解説
モジュールのインポート
figの作成
GridSpecを使って複数のグラフを作成します。hspaceはグラフ間の縦方向の間隔、wspaceは横方向の間隔を指定します。
ax1、ax2、ax3の3つのグラフをそれぞれ作成します。異なる視点からのグラフを表示するため、sharexとshareyパラメータを設定することで、軸の設定作業を簡略化しています。
トーラス結び目の設定

トーラス結び目は上の記事を参考にしています。ここでは、小円方向の回転数(p)を変化させるアニメーションを作成するため、p_をlinspaceで生成しておきます。
軸の設定
ax2,ax3のx軸、y軸にはax1の設定が反映されます。
視点の設定
ax1は真上からみた図とし、ax2は真横からみた図とします。
はじめに表示する図の設定
アニメーションで表示するには、リストとしておく必要があります。
アニメーションの設定
アニメーションは古いグラフを消去して新しいグラフを表示する操作を繰り返すため、.pop().remove()メソッドを使用して現在表示中の図を消去します。
このプログラムでは、小円方向の回転数(p_)を変化させるアニメーションを作成します。変化するp_の値に基づいてX,Y,Zデータを生成し、それらを順次プロットしていきます。
アニメーションの表示
FuncAnimationを使用してアニメーションを表示します。updateを101ステップ実行することでアニメーションが生成されます。intervalは200msに設定されているため、全体で約20秒のアニメーションとなります。また、HTML(ani.to_html5_video())を実行することで、Jupyter Notebook上に直接アニメーションを表示することができます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
トーラス結び目のパラメータp,qを変化させることで様々な形状の結び目を生成でき、それをアニメーションとして表現することで、数学的な概念を視覚的に理解しやすくなります。matplotlibのアニメーション機能を活用することで、複雑な数学的対象の動的な振る舞いを効果的に可視化できることが示されています。
コメント