0
$\begingroup$

My question is that can we rotate the cuboid that was defined below with the euler angles in python?

center = [2.1,-0.1,0.757761] ##centre of the body
length = 0.3 ##defining length, breadth, height
width = 0.4
height = 0.1
Euler angles are 0,0,120 for example along x,y,z directions.

  ##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)
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.