はじめに
円錐台は、円錐の頂点部分を切り取った形状です。上部と下部の円の半径が異なり、高さを持つ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ファイル)
コメント
[…] [matplotlib 3D] 41. 円錐台(Truncated cone)matplotlib mplot3dによる円錐台sabopy.com2018.12.07 […]