BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

Quaternion.multiply()

描述

Quaternion.multiply()three.jsQuaternion 类的一个方法,用于返回两个四元数的乘积(即两个旋转的合成)。

语法

quaternion.multiply(quaternion2)

参数

  • quaternion: 一个 Quaternion 对象,表示第一个四元数。
  • quaternion2: 一个 Quaternion 对象,表示第二个四元数。

返回值

返回一个新的 Quaternion 对象,表示两个四元数的乘积(旋转的合成)。

示例

var quaternion1 = new THREE.Quaternion(0, 1, 0, 0);
var quaternion2 = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(1, 0, 0), Math.PI / 2);
var quaternion3 = new THREE.Quaternion().multiplyQuaternions(quaternion1, quaternion2);

console.log(quaternion3.x); // -1
console.log(quaternion3.y); // 0
console.log(quaternion3.z); // 0
console.log(quaternion3.w); // 0

注意事项

  • Quaternion.multiply() 返回的是两个四元数的乘积,Quaternion.multiplyQuaternions(quaternion1, quaternion2) 方法也是同样的作用。只是这两种方法的参数位置不同。
  • 当多个旋转需要组合时,可以将 Quaternion.multiply() 方法用于每对旋转,以得到最终的旋转结果。
  • Quaternion.multiply() 方法是非可交换的,即乘法顺序会影响最终的结果。具体来说,quaternion1.multiply(quaternion2) 的结果与 quaternion2.multiply(quaternion1) 的结果通常是不同的,因为它们对顺序的处理不同。
  • 尽管quaternion1.multiply(quaternion2)quaternion2.multiply(quaternion1)的结果通常是不同的,但是它们都会影响quaternion1的值。如果需要保留原始的quaternion1,则需要在乘法前先使用quaternion1.clone()创建它的副本。