title: python draw parallelepiped
body: <p>I am trying to draw a parallelepiped. Actually I started from the python script drawing a cube as:</p>
  
  <pre><code>import numpy as np
  from mpl_toolkits.mplot3d import Axes3D
  import matplotlib.pyplot as plt
  
  points = np.array([[-1, -1, -1],
                    [1, -1, -1 ],
                    [1, 1, -1],
                    [-1, 1, -1],
                    [-1, -1, 1],
                    [1, -1, 1 ],
                    [1, 1, 1],
                    [-1, 1, 1]])
  
  
  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')
  
  r = [-1,1]
  
  X, Y = np.meshgrid(r, r)
  
  ax.plot_surface(X,Y,1, alpha=0.5)
  ax.plot_surface(X,Y,-1, alpha=0.5)
  ax.plot_surface(X,-1,Y, alpha=0.5)
  ax.plot_surface(X,1,Y, alpha=0.5)
  ax.plot_surface(1,X,Y, alpha=0.5)
  ax.plot_surface(-1,X,Y, alpha=0.5)
  
  ax.scatter3D(points[:, 0], points[:, 1], points[:, 2])
  
  ax.set_xlabel('X')
  ax.set_ylabel('Y')
  ax.set_zlabel('Z')
  
  plt.show()
  </code></pre>
  
  <p>In order to obtain a parallelepiped, I have multiplied the points matrix by the following matrix:</p>
  
  <pre><code>P = 
  
  [[2.06498904e-01  -6.30755443e-07   1.07477548e-03]
  
   [1.61535574e-06   1.18897198e-01   7.85307721e-06]
  
   [7.08353661e-02   4.48415767e-06   2.05395893e-01]]
  </code></pre>
  
  <p>as:</p>
  
  <pre><code>Z = np.zeros((8,3))
  
  for i in range(8):
  
     Z[i,:] = np.dot(points[i,:],P)
  
  Z = 10.0*Z
  </code></pre>
  
  <p>My idea is then to represent as follows:</p>
  
  <pre><code>ax.scatter3D(Z[:, 0], Z[:, 1], Z[:, 2])
  
  ax.set_xlabel('X')
  ax.set_ylabel('Y')
  ax.set_zlabel('Z')
  
  plt.show()
  </code></pre>
  
  <p>And this is what I get:</p>
  
  <p><a href="https://i.stack.imgur.com/ScshX.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/ScshX.jpg" alt="enter image description here"></a></p>
  
  <p>How can I then put surfaces on these different points to form the parallelepiped (in the way of the cube above)?</p>