如何计算旋转增量三



对于拖动功能,我正在制作objectb clocka objecta,例如:

var positionDeltas = objectA.position.clone();
postitionDeltas.sub(objectAOldPosition);
var newPositon = objectB.position.clone();
objectB.position = newPosition.add(positionDeltas);

可以类似地完成角度增量吗?我可以以类似的方式减去/添加四元素吗?:

var rotationDeltas = objectA.quaternion.clone();
rotationDeltas.sub(objectAOldRotation);
var newRotation = objectB.quaternion.clone();
objectB.quaternion = newRotation.add(rotationDeltas);

澄清:这就是我想要做的;但是,我确实知道不能减去欧拉人,也没有针对四局定义减法。那么....一个知道自己在做什么的人如何处理这三个。

尝试以下:

 const q = new THREE.Quaternion();
 q.multiply( q2, q1.inverse() );

Quaternion q表示从四元组q1q2的旋转。然后,您可以通过.applyQuaternion()将此旋转应用于3D对象。

three.js R91

最新更新