はじめに
matplotlib mplot3dの3Dグラフで正四面体を表示する方法を解説する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2021/03/tetrahedron-1.jpg)
解説
モジュールのインポート
バージョン
データの生成
2次元
まずは2次元平面における正三角形を考える。2次元での正三角形のコードと図は以下の通り。
![](https://sabopy.com/wp/wp-content/uploads/2019/01/sankaku.png)
正n角形はtを媒介変数として0〜2πとし、$$ a_n=\frac{2\pi}{n} $$とすると、
$$ x =\cos t \cdot \frac{\cos \frac{a_n}{2}}{\cos\left[a_n\left\{\frac{t}{a_n}-{\rm floor}\left(\frac{t}{a_n}\right)\right\}-\frac{a_n}{2}\right]}\\ y =\sin t \cdot \frac{\cos \frac{a_n}{2}}{\cos\left[a_n\left\{\frac{t}{a_n}-{\rm floor}\left(\frac{t}{a_n}\right)\right\}-\frac{a_n}{2}\right]} $$で表される。この式は下記サイトを参考にした。
![](https://slpr.sakura.ne.jp/qp/wp-content/uploads/2016/02/n_polygon_equationeye2_c.jpg)
正多角形とスピログラフの数式
正多角形とスピログラフの数式です。 正多角形(2次元) 正多角形(3次元) 星型多角形(2次元) 星型多角形(…
3次元
2次元のxをpc(t), yをps(t)とおくと、3次元空間におけるxyzは下記のようになる。
$$ x = {\rm ps}(u)\cdot {\rm pc}(v) \\ y = {\rm ps}(u)\cdot {\rm ps}(v) \\ z = {\rm pc}(u) $$ここで、媒介変数として、$$0\le u \lt \pi, \;\; 0\le v \lt 2\pi$$としている。
3Dグラフの設定
軸範囲、軸ラベルの設定
3Dグラフの表示
color=’g’で緑色、alpha=0.5で透明度0.5の図形が描写される。
回転アニメーション
作製した図を回転させると以下のようになる。
回転アニメーションは以下の記事を参考にして作成した。
![](https://sabopy.com/wp/wp-content/uploads/2018/10/Screenshot-2019-10-12-at-23.18.00-160x90.jpg)
[matplotlib 3D] 14. 3Dグラフの回転アニメーション
matplotlib mplot3d のグラフの回転アニメーション
参考
![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/0a/Tetraedro_%28Matemateca_IME-USP%29.jpg/640px-Tetraedro_%28Matemateca_IME-USP%29.jpg)
三角錐 - Wikipedia
![](https://slpr.sakura.ne.jp/qp/wp-content/uploads/2016/02/n_polygon_equationeye2_c.jpg)
正多角形とスピログラフの数式
正多角形とスピログラフの数式です。 正多角形(2次元) 正多角形(3次元) 星型多角形(2次元) 星型多角形(…
コメント