3. 四元数表示物体姿态
# 四元数Quaternion
表示物体姿态
Three.js模型对象都有一个属性.quaternion
,.quaternion
的属性值就是四元数对象Quaternion
。你可以通过物体.quaternion
属性改变物体的姿态角度。
# 创建一个四元数
创建一个绕x轴旋转90度的四元数
// 四元数表示姿态角度
const quaternion = new THREE.Quaternion();
// 旋转轴new THREE.Vector3(1,0,0)
// 旋转角度Math.PI/2
quaternion.setFromAxisAngle(new THREE.Vector3(1, 0, 0), Math.PI / 2);
# .quaternion
属性
改变物体的四元数属性.quaternion
,也就是改变物体的姿态角度。
.copy()
是四元数的一个方法,A.copy(B)
表示把A四元数设置为B四元数的值,或者说把B的值复制给A。
const quaternion = new THREE.Quaternion();
quaternion.setFromAxisAngle(new THREE.Vector3(1, 0, 0), Math.PI / 2);
//quaternion表示旋转角度复制给物体.quaternion
fly.quaternion.copy(quaternion);
# 总结:物体角度属性.rotation
和四元数属性.quaternion
three.js模型对象的角度.rotation
和四元数.quaternion
属性都是用来表示物体姿态角度的,只是表达形式不同而已,.rotation
和.quaternion
两个属性的值,一个改变,另一个也会同步改变。
const quaternion = new THREE.Quaternion();
quaternion.setFromAxisAngle(new THREE.Vector3(0, 0, 1), Math.PI / 2);
fly.quaternion.copy(quaternion);
// 四元数属性改变后,查看角度属性(欧拉角)变化
// .quaternion改变,.rotation同步改变
console.log('角度属性',fly.rotation.z);