[matplotlib 3D] 41. 円錐台(Truncated cone)

matplotlib 3D

はじめに

円錐台は、円錐の頂点部分を切り取った形状です。上部と下部の円の半径が異なり、高さを持つ3次元図形となります。数学的には、2つの同心円を底面とし、それらを結ぶ側面を持つ立体として定義されます。このページでは、matplotlibのmplot3dモジュールを使用して円錐台(Truncated cone)を3Dで表示する方法を解説します。

コード

解説

モジュールのインポート

3Dグラフの設定

データの生成

円錐は媒介変数を使ってデータを生成します。x座標とy座標は、

$$x=rcos\theta\\y=rsin\theta$$

となり、円錐は直交座標で

$$z^2=x^2+y^2$$

と表せるので、z=rという関係になります。通常、

Z = Rとすると下に凸の形状になるため、マイナスをかけて反転させ、さらに+5することで底面を0の位置に調整しています。

円錐台にする設定

[matplotlib 3D] 35. 円柱(円筒座標)
matplotlib mplot3dで円柱(シリンダー)を3次元表示する方法を解説します。円筒座標系を使ってデータを生成し、3Dグラフ上に表現する手順と実装方法を紹介します。

円柱の場合(↑)ではフタと底にCircleを使用しましたが、今回はmplot3d surfaceグラフでフタと底を描画します。

フタと底の作成にはnp.full()関数を利用します。

フタは高さ2.5の位置に配置するため、すべての要素が2.5で構成された(100,100)の配列を作成します。

底は高さ0の位置にあるため、同様に、すべての要素が0の(100,100)の配列を作成します。

Z[Z >= 2.5] = np.nanとすることで、Zの値が2.5以上のデータがすべてnanに変換され、グラフ上に表示されなくなります。

軸範囲、軸ラベルの設定

3Dグラフの表示

最初のプロットでは円錐のz=2.5までが表示されます。

次のプロットではフタが表示されます。z=2.5の位置では半径を1〜0で変化させる必要があるため、X,Yをそれぞれ半分にしています。

最後のプロットで底面を表示します。

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

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

参考

コメント

  1. […] [matplotlib 3D] 41. 円錐台(Truncated cone)matplotlib mplot3dによる円錐台sabopy.com2018.12.07 […]