[matplotlib 3D] 46.ボクセルピラミッド(Voxel Pyramid)

matplotlib 3D

はじめに

ボクセル(Voxel)とは3次元空間における画素のことで、3D空間内の立方体の集まりで物体を表現します。Matplotlibのmplot3dツールキットを使用すると、このボクセルを使った3D表現が可能になります。ここでは例として、ピラミッドを作成する方法について説明します。

コード

解説

モジュールのインポート

3Dグラフの設定

データの生成

まずnp.indices((17, 17, 17))を使用して、形状が(17,17,17)のインデックス値を持つ配列を作成し、これをそのままx、y、z座標として利用しています。

numnp.linspace(1,15,15)で生成された、1から15までの整数を含む配列です。

v1 = (z == 0)の条件では、z=0の平面において、すべてのx、y座標がTrueとなります。

v2 = (x <= num[-1]) & (y <= num[-1]) & (z == num[0]) & (x >= num[0]) & (y >= num[0])の条件では、z=1の平面において、1≦x≦15かつ1≦y≦15の範囲がTrueになります。

同様にv3v4v5…と、zの値を一つずつ上げながら、Trueとなるx、y座標の範囲を徐々に狭めていきます。

Pythonでの縦棒(|)はOR演算子であり、いずれかの条件がTrueならば結果もTrueになります。そのため、voxels = v1 | v2 | v3 | v4 | v5 | v6 | v7 | v8 | v9という演算によって、ピラミッド型の立体形状が形成されます。

軸ラベル、軸範囲の設定

3Dグラフの表示

パラメーターfacecolor=’gold’を使用して面の色を金色に、edgecolor=’gray’で縁の色を灰色に設定し、ボクセルグラフを生成します。

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

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

参考

ピラミッド - Wikipedia

コメント

  1. […] [matplotlib 3D] 46.ボクセルピラミッド(Voxel Pyramid)matplotlib mplot3dでvoxelによるピラミッドsabopy.com2019.02.06 […]