code: function rotate (...params) {
    let out
    let angle
    let vector
    if (params.length === 2) {
      out = create()
      angle = params[0]
      vector = params[1]
    } else {
      out = params[0]
      angle = params[1]
      vector = params[2]
    }
  
    // fIXME: not correct
    console.log('rotate', angle, vector)
    const origin = [0, 0, 0]
    out = rotateZ(angle[2], origin, rotateY(angle[1], origin, rotateX(angle[0], origin, vector)))
    return out
  }
docs: Rotate vector 3D vector around the all 3 axes in the order x-axis , yaxis, z axis
  @param {vec3} out The receiving vec3 (optional)
  @param {vec3} vector The vec3 point to rotate
  @returns {vec3} out