简短问题: 我想用翅膀的egde strucutre绘制不同的形状,所以我有一个类实际绘制任何有翼的翅膀,另一个用于定义立方体和其他形状。现在我想在同一个图上绘制2个立方体,但我不能和每个图中总是得到一个立方体。
长期问题: 我想用翅膀的egde结构绘制不同的形状,所以我有:
class WEdge -> wedge_instance = WEdge(vertices, faces)
然后我需要为每个形状创建一个类,例如:
class Box -> simplebox = Box(vertices, faces, translation, rotation)
在WEdge类中,我实际使用以下代码绘制对象:
ax = a3.Axes3D(pl.figure())
for k in range(self.nFaces):
currentColumn = self.faces[k,:]
vtx = np.zeros([4,3])
j = 0
for i in currentColumn:
vtx[j] = self.vertices[i-1]
j = j +1
tri = a3.art3d.Poly3DCollection([vtx])
tri.set_color(colors.rgb2hex(sp.rand(3)))
tri.set_edgecolor('b')
ax.add_collection3d(tri)
问题是当我想在同一个图中绘制两个立方体时。我已尝试过hold,gca等许多可能的组合,但最后我总是得到图1中的一个立方体,图2中的另一个立方体。
示例:
>>>Box(3,1,3, [0,1,0], np.eye(3))
>>> # hold, gca, timer...
>>>Box(3,1,3, [1,0,3], np.eye(3))
答案 0 :(得分:2)
不要为每个“结构”定义新轴:
ax = a3.Axes3D(pl.figure())
将ax
传递到WEdge
类,这样他们就可以在同一轴上绘制:
def init(self, ..., ax=None):
self.ax = ax if ax else a3.Axes3D(pl.figure())
we1 = WEdge()
we2 = WEdge(ax=we1.ax)
或者更平等,
ax = a3.Axes3D(pl.figure())
we1 = WEdge(ax)
we2 = WEdge(ax)
您可能还需要将ax
传递给您的多维数据集类。