Girar objeto alrededor del eje mundial

Estoy tratando de rotar un objeto alrededor del eje mundial. He encontrado esta pregunta:¿Cómo rotar un objeto en el eje world three.js?

Pero no resolvió el problema usando esta función:

var rotWorldMatrix;

// Rotate an object around an arbitrary axis in world space       
function rotateAroundWorldAxis(object, axis, radians) {
    rotWorldMatrix = new THREE.Matrix4();
    rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);
    rotWorldMatrix.multiplySelf(object.matrix);        // pre-multiply
    object.matrix = rotWorldMatrix;
    object.rotation.getRotationFromMatrix(object.matrix, object.scale);
}

multiplySelf ygetRotationFromMatrix no están definidos (me sale un error de consola). ¿Como solucionar el problema?

Actualizar

Traté de usarQuaternion, pero no parece comportarse correctamente. Estoy tratando de rotar un objeto de acuerdo con el clic del usuario, esta es la función que he escrito:

function mouseUp(event) {
    var x= event.clientX;
    var y= event.clientY;
    var dx= (x - xBegin);
    var dy= (y - yBegin);

    var quaternion= new THREE.Quaternion();
    quaternion.setFromAxisAngle(new THREE.Quaternion(dy,dx,0).normalize(),Math.sqrt(dx*dx+dy*dy)/250.0);
    object.quaternion.multiplyQuaternions(quaternion,object.quaternion);
}

Gira correctamente siempre que el objeto se encuentre en posición vertical u horizontal, pero si está a 45 grados del eje x, gira muy lentamente y en la dirección opuesta al clic.

Respuestas a la pregunta(1)

Su respuesta a la pregunta