Obróć obiekt wokół osi świata

Próbuję obrócić obiekt wokół osi świata. Znalazłem to pytanie:Jak obrócić obiekt na świecie osi three.js?

Ale nie rozwiązało to problemu za pomocą tej funkcji:

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 igetRotationFromMatrix nie są zdefiniowane (otrzymuję błąd konsoli). Jak rozwiązać problem?

Aktualizacja

Próbowałem użyćQuaternion, ale wydaje się, że nie zachowuje się poprawnie. Próbuję obrócić obiekt zgodnie z kliknięciem użytkownika, to jest funkcja, którą napisałem:

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);
}

Obraca się prawidłowo, dopóki obiekt znajduje się w pozycji pionowej lub poziomej, ale jeśli jest na przykład pod kątem 45 stopni od osi x, obraca się bardzo powoli iw przeciwnym kierunku do kliknięcia.

questionAnswers(1)

yourAnswerToTheQuestion