はじめに
matplotlib mplot3dによる3Dグラフで四角錐(ピラミッド)を作成する。
コード
解説
モジュールのインポート
バージョン
3Dグラフの設定
データの生成
まずは2次元平面における4角形を考える。2次元での正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]} $$で表される。この式は下記サイトを参考にした。
正多角形とスピログラフの数式
正多角形とスピログラフの数式です。 正多角形(2次元) 正多角形(3次元) 星型多角形(2次元) 星型多角形(…
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$$としている。
z[z <= 0.02] = np.nan でzの0付近以下の図形を非表示にすることができる。
この方法は、以下でも用いた。
[matplotlib 3D] 41. 円錐台(Truncated cone)
matplotlib mplot3dにより円錐台を表示する。
軸ラベルの設定
ax.set_box_aspect((1,1,1))により3Dグラフのアスペクト比を揃えている。
3Dグラフの表示
color=’gold’で金色、alpha=0.5で透明度0.5の図形が描写される。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
ピラミッド - Wikipedia
正多角形とスピログラフの数式
正多角形とスピログラフの数式です。 正多角形(2次元) 正多角形(3次元) 星型多角形(2次元) 星型多角形(…
コメント