[matplotlib 3D] 49.トーラス結び目(torus knot)

matplotlib 3D

はじめに

matplotlib mplot3dによる3Dグラフ上にトーラス結び目を表示する。

コード

解説

トーラス結び目について

Bitly

上記の本に記載の数式により、トーラス結び目を作成した。

トーラス結び目の式は以下のように表される。

$$x = (b+asin(pu))cos(qu)\\ y = (b+asin(pu))sin(qu)\\ z = asin(pu)$$

トーラス結び目は媒介変数でデータを生成するので、uをnp.linspace(0,2*np.pi,100)として0から2πとする。ここでbはトーラス自体の大きい半径、aはトーラスの太さの半径となる。

この式では、曲面ではなく、トーラス曲面に沿った曲線が表示される。

p,qは、小円方向にp回、大円方向にq回まわったことを意味する定数。

モジュールのインポート

figの作成

トーラス結び目の生成,表示

表示には、plot(X,Y,Z)で散布図を用いた。’g.-‘で緑の点と線でトーラス結び目が表示される。

軸範囲、軸ラベル、アスペクト比の設定

回転アニメーション

作製した図を回転させると以下のようになる。

回転アニメーションは以下の記事を参考にして作成した。

[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlib mplot3d のグラフの回転アニメーション
コードをダウンロード(.pyファイル)

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

参考

コメント