title: Rotate 3D object with Euler angles in Python
body: <p><a href="https://i.stack.imgur.com/fj0DP.png" rel="nofollow noreferrer">See this picture. In this the cuboid has to rotate along the other axes that were marked in the picture but it stays in the same axis x,y,z</a><a href="https://i.stack.imgur.com/EXcp9.png" rel="nofollow noreferrer">The image attached gives the code of the cuboid</a>.</p>
  
  <pre><code>##defining to plot the cuboid
  def plot_cuboid(center, size):
      """
     Create a data array for cuboid plotting.
     ============= ================================================
     Argument      Description
     ============= ================================================
     center        center of the cuboid, triple
     size          size of the cuboid, triple, (x_length,y_width,z_height)
     :type size: tuple, numpy.array, list
     :param size: size of the cuboid, triple, (x_length,y_width,z_height)
     :type center: tuple, numpy.array, list
     :param center: center of the cuboid, triple, (x,y,z)
     """
  
      # suppose axis direction: x: to left; y: to inside; z: to upper
      # get the (left, outside, bottom) point
      ox, oy, oz = center
      l, w, h = size
  
      ##defining the points
      x = np.linspace(ox-l/2,ox+l/2,num=10)
      y = np.linspace(oy-w/2,oy+w/2,num=10)
      z = np.linspace(oz-h/2,oz+h/2,num=10)
  
      ## defining surfaces and extrude them
      x1, z1 = np.meshgrid(x, z)
      y11 = np.ones_like(x1)*(oy-w/2)
      y12 = np.ones_like(x1)*(oy+w/2)
      x2, y2 = np.meshgrid(x, y)
      z21 = np.ones_like(x2)*(oz-h/2)
      z22 = np.ones_like(x2)*(oz+h/2)
      y3, z3 = np.meshgrid(y, z)
      x31 = np.ones_like(y3)*(ox-l/2)
      x32 = np.ones_like(y3)*(ox+l/2)
  
      ax = fig.gca(projection='3d') ##plot the project cuboid
  
      #plot outside surface
      ax.plot_surface(x1, y11, z1, color='red', rstride=1, cstride=1, alpha=0.6)
      #plot inside surface
      ax.plot_surface(x1, y12, z1, color='white', rstride=1, cstride=1, alpha=0.6)
      #plot bottom surface
      ax.plot_surface(x2, y2, z21, color='blue', rstride=1, cstride=1, alpha=0.6)
      #plot upper surface
      ax.plot_surface(x2, y2, z22, color='black', rstride=1, cstride=1, alpha=0.6)
      #plot left surface
      ax.plot_surface(x31, y3, z3, color='green', rstride=1, cstride=1, alpha=0.6)
      #plot right surface
      ax.plot_surface(x32, y3, z3, color='pink', rstride=1, cstride=1, alpha=0.6)
  
      ## Add title 
      plt.title('Plot_for_PSM', fontsize=20)
  
      ##labelling the axes
      ax.set_xlabel('X')
      ax.set_ylabel('Y')
      ax.set_zlabel('Z')
  </code></pre>
  
  <p>`</p>
  
  <p>My question is that can we rotate the cuboid that was defined below with the euler angles in python?</p>
  
  <p>center =(2.1,-0.1,0.757761)
  length=0.3, width=0.4, height=0.1 all in metres.
  as per the code in the attached image.
  Euler angles are 0,0,120 for example along x,y,z directions.</p>
  
  <p>I have made some program to rotate a cuboid with the euler angles. But after attaining the euler angles how can I rotate the cuboid is my question. Can anyone suggest or attain the code for this problem?</p>
  
  <p>Actually, I have quaternions which are converted into Euler angles and then want to rotate according to these Euler angles along their axes with right hand rule. You can view my code up to where I have done and also can suggest if anything wrong I have done.</p>
  
  <p>In the code 'y' represents the angle with x-axis, 'p' represents the angle with y-axis, 'r' represents the angle with z-axis. the expected result is that the cuboid has to rotate along these euler angles(y,p,r) with respect to x,y,z axis.</p>
  
  <p>Thanks in advance!</p>