我是关于Three.js的新手,尽管有机械背景,但我无法找到四元数是如何工作的:它总是指本地部分参照而不是全局参考。
我在这里说明了这一点:http://jsfiddle.net/ehsktuj2/10/
function applyRotation(){
var redRotationQuaternion = new THREE.Quaternion();
redRotationQuaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), control.rotationSpeedRedY );
applyQuaternion(_cubeRed, redRotationQuaternion);
var greenRotationQuaternion = new THREE.Quaternion();
greenRotationQuaternion.setFromAxisAngle( new THREE.Vector3( 0, 0, 1 ), control.rotationSpeedGreenZ );
applyQuaternion(_cubeGreen, greenRotationQuaternion);
}
function applyQuaternion(cube, quaternion){
var cubeQuaternion = cube.quaternion;
cubeQuaternion.multiplyQuaternions(quaternion, cubeQuaternion);
cubeQuaternion.normalize();
}
绿框的旋转四元数是通过向量(0,0,1),但它不在全局参照中,它是绿色立方体的投影参照之一。
如何将四元数投射回全局参考?这样绿色立方体通过场景的(0,0,1)向量旋转?