code: def transform_velocity_array(array, pos_array, vel, euler, rotation_vel=(0,0,0)):
      
  
      trans_matrix = euler_trans_matrix(*euler)
  
      # v_{rot,i} = omega x r_i    with  omega = rotation_vel
      rotation_component = np.cross(rotation_vel, pos_array, axisb=1)
      orbital_component = np.asarray(vel)
  
      if isinstance(array, ComputedColumn):
          array = array.for_computations
  
      new_vel = np.dot(np.asarray(array)+rotation_component, trans_matrix.T) + orbital_component
  
      return new_vel
docs: Transform any Nx3 velocity vector array by adding the center-of-mass 'vel',
      accounting for solid-body rotation, and applying an euler transformation.
  
      :parameter array array: numpy array of Nx3 velocity vectors in the original
          (star) coordinate frame
      :parameter array pos_array: positions of the elements with respect to the
          original (star) coordinate frame.  Must be the same shape as 'array'.
      :parameter array vel: numpy array with length 3 giving cartesian velocity
          offsets in the new (system) coordinate frame
      :parameter array euler: euler angles (etheta, elongan, eincl) in radians
      :parameter array rotation_vel: vector of the rotation velocity of the star
          in the original (star) coordinate frame
      :return: new velocity array with same shape as 'array'