import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d.art3d import Poly3DCollection corners = [ [-1,0.5,0.5], [+1,0.5,0.5], [0,-0.5,0.5], [0,0.5,-0.5] ] face1 = [ corners[0], corners[1], corners[2] ] face2 = [ corners[0], corners[1], corners[3] ] face3 = [ corners[0], corners[2], corners[3] ] face4 = [ corners[1], corners[2], corners[3] ] vertices = np.array([face1,face2,face3,face4],dtype=float) print(vertices) ob = Poly3DCollection(vertices, linewidths=1, alpha=0.2) ob.set_facecolor( [0.5, 0.5, 1] ) ob.set_edgecolor([0,0,0]) plt.ion() fig = plt.figure() ax = fig.add_subplot(111, projection='3d') plt.show() ax.add_collection3d(ob) translation = np.array( [ 1, 0, 0 ], dtype=float ) v2 = vertices + translation print(v2) ob2 = Poly3DCollection(v2, linewidths=1, alpha=0.2) ob2.set_facecolor( [0.5, 1, 0.5] ) ob2.set_edgecolor([0,0,0]) ax.add_collection3d(ob2) theta = np.pi/6 R = np.array( [ [ np.cos(theta), -np.sin(theta), 0 ], [ np.sin(theta), np.cos(theta), 0 ], [ 0, 0, 1 ] ], dtype=float ) v3 = np.matmul(vertices,R) print(v3) ob3 = Poly3DCollection(v3, linewidths=1, alpha=0.2) ob3.set_facecolor( [1, 0.5, 0.5] ) ob3.set_edgecolor([0,0,0]) ax.add_collection3d(ob3)