実現したいこと
3次元空間に扇形を底面とする柱体を描画したい。
1000個以上の柱体を描画するつもりなのでできるだけ軽いものが良い。
教えていただきたいこと
2次元でのWedgeに対応する3次元の関数があれば教えていただきたい。
もっと軽い処理で行えるものがあれば教えていただきたい。
2次元扇を描画するソースコード
Python
1import numpy as np 2import matplotlib.pyplot as plt 3import matplotlib.patches as pat 4import matplotlib.cm as cm 5 6 7fig= plt.figure(figsize=(8,8)) 8ax=fig.add_subplot(111) 9 10siita=[] 11siita2= [] 12siita3=[] 13siita4=[] 14r_list=[1,0.7,0.3,0.2] 15 16 17siita.append(0) 18for i in range(21): 19 siita.append((i+1)*16.3+3-np.random.rand()*6) 20 21siita.append(360) 22 23for i in range(22): 24 w=pat.Wedge(center=(0,0),r=r_list[0],width=0.3,theta1=siita[i],theta2=siita[i+1],color = cm.hsv(np.random.rand())) 25 ax.add_patch(w) 26 27 28siita2.append(0) 29for i in range(7): 30 siita2.append((i+1)*45+3-np.random.rand()*6) 31 32siita2.append(360) 33 34for i in range(8): 35 w=pat.Wedge(center=(0,0),r=r_list[1],width=0.4,theta1=siita2[i],theta2=siita2[i+1],color = cm.hsv(np.random.rand())) 36 ax.add_patch(w) 37 38 39siita3.append(0) 40for i in range(7): 41 siita3.append((i+1)*45+5-np.random.rand()*10) 42 43siita3.append(360) 44 45for i in range(8): 46 w=pat.Wedge(center=(0,0),r=r_list[2],width=0.1,theta1=siita3[i],theta2=siita3[i+1],color = cm.hsv(np.random.rand())) 47 ax.add_patch(w) 48 49siita4.append(0) 50for i in range(13): 51 siita4.append((i+1)*25.7+5-np.random.rand()*5) 52 53siita4.append(360) 54 55for i in range(14): 56 w=pat.Wedge(center=(0,0),r=r_list[3],theta1=siita4[i],theta2=siita4[i+1],color = cm.hsv(np.random.rand())) 57 ax.add_patch(w) 58 59 60ax.set_xlim(-1,1) 61ax.set_ylim(-1,1) 62plt.show()
試したこと
2次元の扇はWedgeで描画できました。このような扇形の集団に"高さ"を持たせたいです。
どのように描画したいか
扇型の柱を任意の座標に配置したいです。これを複数回繰り返して円柱を組み立てるイメージです。任意の柱だけ描画すれば断面が見えるようにしたいです。
あなたの回答
tips
プレビュー