レッスン 13:3次元で四角い箱を表示

fig 13

レッスン12の応用です。
まず、四角い箱の側面をヨコつなぎで作ります。
次にてっぺんのフタを作ります。

# python-3D-graphics-step-by-step-13.py    11/04/2023 by Kero
# (13) show a box in 3D

# Preparation 
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# graph area settings
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# make side planes
x1 = np.array([[0, 0],[2, 2],[2,2],[0,0],[0,0]]) # ぐるっと正方形の頂点を順に。
y1 = np.array([[0, 0],[0, 0],[2,2],[2,2],[0,0]]) # 5番目線分は1番目と同一。
z1 = np.array([[0, 2],[0, 2],[0,2],[0,2],[0,2]]) # 5番目を入れないと側面が閉じない。
walls = ax.plot_surface(x1, y1, z1) # 側面完成

# make top lid
x2 = np.array([[0,2],[0,2]]) # 上ふたを作る。
y2 = np.array([[0,0],[2,2]])
z2 = np.array([[2,2],[2,2]])
lid = ax.plot_surface(x2, y2, z2) # 上ふた完成。
    # 下ふたは作っていないので、下から中がのぞける。

fig.savefig('python-3D-graphics-step-by-step-13.png')

# show figure
plt.show()

graph area setting までレッスン12と同じです。
make a side plane では、線分 (0,0,0)〜(0,0,2), (2,0,0)〜(2,0,2), (2,2,0)〜(2,2,2),(0,2,0)〜(0,2,2), (0,0,0)〜(0,0,2) の5本の「線分間」に面を作るようにしています。なお、最初の線分と最後の線分は同一です。これで4面で囲んだ四角筒ができます。
次に、make top lid でまったく別個に「上ふた」を作ります。これも2つの線分を指定して、ax.plot_surface で線分間の面を作ることができます。
このソースコードを実行して表示した図は、マウスでグリグリ動かすことができます。
下から覗くと、ガランドウの中が見れます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です