四元数(Quaternion)
该类实现了 quaternion 。
四元数在three.js中用于表示 rotation (旋转)。
代码示例
const quaternion = new THREE.Quaternion(); quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 ); const vector = new THREE.Vector3( 1, 0, 0 ); vector.applyQuaternion( quaternion );
构造函数
Quaternion( x : Float, y : Float, z : Float, w : Float )
x - x 坐标
y - y 坐标
z - z 坐标
w - w 坐标
属性
.x : Float
.y : Float
.z : Float
.w : Float
方法
.angleTo ( q : Quaternion ) : Float
以弧度返回该四元数与四元数 q 之间的夹角。
.clone () : Quaternion
.conjugate () : Quaternion
返回该四元数的旋转共轭。 四元数的共轭表示的是,围绕旋转轴在相反方向上的相同旋转。
.copy ( q : Quaternion ) : Quaternion
.equals ( v : Quaternion ) : Boolean
v - 用于进行比较的四元数。
将四元数 v 的 x、 y、 z 和 w 的属性 与当前四元数的对应属性相比较,以确定它们是否表示相同的旋转。
.dot ( v : Quaternion ) : Float
计算四元数 v 与当前四元数的dot product(点积)。
.fromArray ( array : Array, offset : Integer ) : Quaternion
array - 用于构造四元数的形如(x, y, z, w)的数组。
offset - (可选)数组的偏移量。(译者注:使用数组中从第offset元素算起的四个元素)
从一个数组来设置四元数的 x、 y、z 和 w 的属性。
.identity () : Quaternion
设置该四元数为 identity 四元数,即表示“不旋转”的四元数。
.invert () : Quaternion
翻转该四元数 —— 计算 conjugate 。假定该四元数具有单位长度。
.length () : Float
计算四元数的 Euclidean length (欧几里得长度,直线长度),视为一个四维向量。
.lengthSq () : Float
计算四元数 Euclidean length (欧几里得长度,直线长度)的平方,视为一个四维向量。 如果要比较两个四元数的长度,这可能会十分有用, 因为这比 length() 的效率稍高一些。
.normalize () : Quaternion
Normalizes(归一化)四元数 —— 即计算与该四元数具有相同旋转、但长度为1的四元数。
.multiply ( q : Quaternion ) : Quaternion
将该四元数与q相乘。
.multiplyQuaternions ( a : Quaternion, b : Quaternion ) : Quaternion
将该四元数设为 a x b 。
改编自 here 所概述的方法。
.premultiply ( q : Quaternion ) : Quaternion
Pre-multiplies this quaternion by q.
.rotateTowards ( q : Quaternion, step : Float ) : Quaternion
q - The target quaternion.
step - The angular step in radians.
Rotates this quaternion by a given angular step to the defined quaternion q. The method ensures that the final quaternion will not overshoot q.
.slerp ( qb : Quaternion, t : Float ) : Quaternion
qb - The other quaternion rotation
t - interpolation factor in the closed interval [0, 1].
Handles the spherical linear interpolation between quaternions. t represents the amount of rotation between this quaternion (where t is 0) and qb (where t is 1). This quaternion is set to the result. Also see the static version of the slerp below.
// rotate a mesh towards a target quaternion mesh.quaternion.slerp( endQuaternion, 0.01 );
.slerpQuaternions ( qa : Quaternion, qb : Quaternion, t : Float ) : this
Performs a spherical linear interpolation between the given quaternions and stores the result in this quaternion.
.set ( x : Float, y : Float, z : Float, w : Float ) : Quaternion
.setFromAxisAngle ( axis : Vector3, angle : Float ) : Quaternion
从由 axis(轴) 和 angle(角度)所给定的旋转来设置该四元数。
改编自 here 所述的方法。
假定Axis已被归一化,angle以弧度来表示。
.setFromEuler ( euler : Euler ) : Quaternion
从由 Euler 角所给定的旋转来设置该四元数。
.setFromRotationMatrix ( m : Matrix4 ) : Quaternion
从m的旋转分量中来设置该四元数。
改编自 here 所概述的方法。
.setFromUnitVectors ( vFrom : Vector3, vTo : Vector3 ) : Quaternion
Sets this quaternion to the rotation required to rotate direction vector vFrom to direction vector vTo.
Adapted from the method here.
vFrom and vTo are assumed to be normalized.
.toArray ( array : Array, offset : Integer ) : Array
array - (可选)存储该四元数的数组。若未指定该参数,则将创建一个新数组。
offset - (可选)若指定了该值,结果将会被拷贝到该 Array。
在形如[x, y, z, w]的数组中,返回四元数中的数字元素。
.fromBufferAttribute ( attribute : BufferAttribute, index : Integer ) : this
attribute - 源 attribute。
index - attribute 中的索引。
从 attribute 中设置该四元数的x、 y、 z、 w属性。
静态方法
.slerpFlat ( dst : Array, dstOffset : Integer, src0 : Array, srcOffset0 : Integer, src1 : Array, srcOffset1 : Integer, t : Float ) : null
dst - The output array.
dstOffset - An offset into the output array.
src0 - The source array of the starting quaternion.
srcOffset0 - An offset into the array src0.
src1 - The source array of the target quatnerion.
srcOffset1 - An offset into the array src1.
t - Normalized interpolation factor (between 0 and 1).
Like the static slerp method above, but operates directly on flat arrays of numbers.
<!-- Note: Do not add non-static methods to the bottom of this page. Put them above the