Quaternion

用于表示三维空间中旋转的一组四维坐标。
new Quaternion(x, y, z, w)
Parameters:
x (Number) (default 0.0) X分量。
y (Number) (default 0.0) Y分量。
z (Number) (default 0.0) Z分量。
w (Number) (default 0.0) W分量。
See:
  • PackableForInterpolation

Members

(static, constant) IDENTITY : Quaternion

初始化为(0.0、0.0、0.0、1.0)的不可变四元数实例。

(static) packedInterpolationLength : Number

用于以可插值形式将对象存储到数组中的元素数。

(static) packedLength : Number

用于将对象打包到数组中的元素数。

(static, constant) ZERO : Quaternion

初始化为(0.0、0.0、0.0、0.0、0.0)的不可变四元数实例。

w : Number

W分量。
Default Value: 0.0

x : Number

X分量。
Default Value: 0.0

y : Number

Y分量。
Default Value: 0.0

z : Number

Z分量。
Default Value: 0.0

Methods

(static) add(left, right, result) → {Quaternion}
计算两个四元数的分量和。
Parameters:
left (Quaternion) 第一个四元数。
right (Quaternion) 第二个四元数。
result (Quaternion) 存储结果的对象。
(static) clone(quaternion, result) → {Quaternion}
复制四元数实例。
Parameters:
quaternion (Quaternion) 要复制的四元数。
result (Quaternion) 存储结果的对象。
(static) computeAngle(quaternion) → {Number}
计算提供的四元数的旋转角度。
Parameters:
quaternion (Quaternion) 要使用的四元数。
(static) computeAxis(quaternion, result) → {Cartesian3}
计算提供的四元数的旋转轴。
Parameters:
quaternion (Quaternion) 要使用的四元数。
result (Cartesian3) 存储结果的对象。
(static) computeInnerQuadrangle(q0, q1, q2, result) → {Quaternion}
计算内部四边形点。

这将计算四元数,以确保班曲线为c1

Parameters:
q0 (Quaternion) 第一个四元数。
q1 (Quaternion) 第二个四元数。
q2 (Quaternion) 第三个四元数。
result (Quaternion) 存储结果的对象。
See:
  • Quaternion#squad
(static) conjugate(quaternion, result) → {Quaternion}
计算所提供四元数的共轭。
Parameters:
quaternion (Quaternion) 共轭四元数。
result (Quaternion) 存储结果的对象。
(static) convertPackedArrayForInterpolation(packedArray, startingIndex, lastIndex, result)
将压缩数组转换为适合插值的形式。
Parameters:
packedArray (Array.<Number>) 压缩数组。
startingIndex (Number) (default 0) 要转换的第一个元素的索引。
lastIndex (Number) (default packedArray.length) 要转换的最后一个元素的索引。
result (Array.<Number>) 存储结果的对象。
(static) divideByScalar(quaternion, scalar, result) → {Quaternion}
将所提供的四元数分量除以所提供的标量。
Parameters:
quaternion (Quaternion) 要分割的四元数。
scalar (Number) 要除以的标量。
result (Quaternion) 存储结果的对象。
(static) dot(left, right) → {Number}
计算两个四元数的点(标量)积。
Parameters:
left (Quaternion) 第一个四元数。
right (Quaternion) 第二个四元数。
(static) equals(left, right) → {Boolean}
比较提供的四元数组件,如果相等,则返回true,否则返回false
Parameters:
left (Quaternion) 第一个四元数。
right (Quaternion) 第二个四元数。
(static) equalsEpsilon(left, right, epsilon) → {Boolean}
比较提供的四元数组件,如果它们在提供的epsilon中,则返回true,否则返回false
Parameters:
left (Quaternion) 第一个四元数。
right (Quaternion) 第二个四元数。
epsilon (Number) 用于相等性测试的epsilon。
(static) exp(cartesian, result) → {Quaternion}
指数四元数函数。
Parameters:
cartesian (Cartesian3) 笛卡尔。
result (Quaternion) 存储结果的对象。
(static) fastSlerp(start, end, t, result) → {Quaternion}
使用提供的四元数计算T处的球面线性插值或外推。此实现比Quaternion#slerp更快,但精确到10-6
Parameters:
start (Quaternion) 0.0时与t对应的值。
end (Quaternion) 与t对应的值为1.0。
t (Number) 沿t插入的点。
result (Quaternion) 存储结果的对象。
See:
  • Quaternion#slerp
(static) fastSquad(q0, q1, s0, s1, t, result) → {Quaternion}
计算四元数之间的球面四角插值。一种比Quaternion#squad快但不准确的实现。
Parameters:
q0 (Quaternion) 第一个四元数。
q1 (Quaternion) 第二个四元数。
s0 (Quaternion) 第一个内部四边形。
s1 (Quaternion) 第二个内部四边形。
t (Number) [0,1]中用于插入的时间。
result (Quaternion) 存储结果的对象。
See:
  • Quaternion#squad
(static) fromAxisAngle(axis, angle, result) → {Quaternion}
计算表示绕轴旋转的四元数。
Parameters:
axis (Cartesian3) 旋转轴。
angle (Number) 围绕轴旋转的弧度角。
result (Quaternion) 存储结果的对象。
(static) fromHeadingPitchRoll(headingPitchRoll, result) → {Quaternion}
根据给定的航向、纵倾和横滚角度计算旋转。航向是围绕负Z轴的旋转。螺距是围绕负Y轴的旋转。滚动是围绕正X轴的旋转。
Parameters:
headingPitchRoll (HeadingPitchRoll) 以航向、纵倾和横摇表示的旋转。
result (Quaternion) 存储结果的对象。
(static) fromRotationMatrix(matrix, result) → {Quaternion}
从提供的Matrix3实例计算四元数。
Parameters:
matrix (Matrix3) 旋转矩阵。
result (Quaternion) 存储结果的对象。
See:
(static) inverse(quaternion, result) → {Quaternion}
计算所提供四元数的倒数。
Parameters:
quaternion (Quaternion) 要规范化的四元数。
result (Quaternion) 存储结果的对象。
(static) lerp(start, end, t, result) → {Quaternion}
使用提供的四元数计算t处的线性插值或外推。
Parameters:
start (Quaternion) 0.0时与t对应的值。
end (Quaternion) 与t对应的值为1.0。
t (Number) 沿t插入的点。
result (Quaternion) 存储结果的对象。
(static) log(quaternion, result) → {Cartesian3}
对数四元数函数。
Parameters:
quaternion (Quaternion) 单位四元数。
result (Cartesian3) 存储结果的对象。
(static) magnitude(quaternion) → {Number}
计算提供的四元数的大小。
Parameters:
quaternion (Quaternion) 共轭四元数。
(static) magnitudeSquared(quaternion) → {Number}
计算提供的四元数的大小平方。
Parameters:
quaternion (Quaternion) 共轭四元数。
(static) multiply(left, right, result) → {Quaternion}
计算两个四元数的乘积。
Parameters:
left (Quaternion) 第一个四元数。
right (Quaternion) 第二个四元数。
result (Quaternion) 存储结果的对象。
(static) multiplyByScalar(quaternion, scalar, result) → {Quaternion}
将提供的四元数分量乘以提供的标量。
Parameters:
quaternion (Quaternion) 要缩放的四元数。
scalar (Number) 要与之相乘的标量。
result (Quaternion) 存储结果的对象。
(static) negate(quaternion, result) → {Quaternion}
否定提供的四元数。
Parameters:
quaternion (Quaternion) 要求反的四元数。
result (Quaternion) 存储结果的对象。
(static) normalize(quaternion, result) → {Quaternion}
计算提供的四元数的规范化形式。
Parameters:
quaternion (Quaternion) 要规范化的四元数。
result (Quaternion) 存储结果的对象。
(static) pack(value, array, startingIndex) → {Array.<Number>}
将提供的实例存储到提供的数组中。
Parameters:
value (Quaternion) 要打包的值。
array (Array.<Number>) 要打包的数组。
startingIndex (Number) (default 0) 数组中开始打包元素的索引。
(static) slerp(start, end, t, result) → {Quaternion}
使用提供的四元数计算T处的球面线性插值或外推。
Parameters:
start (Quaternion) 0.0时与t对应的值。
end (Quaternion) 与t对应的值为1.0。
t (Number) 沿t插入的点。
result (Quaternion) 存储结果的对象。
See:
  • Quaternion#fastSlerp
(static) squad(q0, q1, s0, s1, t, result) → {Quaternion}
计算四元数之间的球面四角插值。
Parameters:
q0 (Quaternion) 第一个四元数。
q1 (Quaternion) 第二个四元数。
s0 (Quaternion) 第一个内部四边形。
s1 (Quaternion) 第二个内部四边形。
t (Number) [0,1]中用于插入的时间。
result (Quaternion) 存储结果的对象。
Example
// 1. compute the squad interpolation between two quaternions on a curve
var s0 = bmgl.Quaternion.computeInnerQuadrangle(quaternions[i - 1], quaternions[i], quaternions[i + 1], new bmgl.Quaternion());
var s1 = bmgl.Quaternion.computeInnerQuadrangle(quaternions[i], quaternions[i + 1], quaternions[i + 2], new bmgl.Quaternion());
var q = bmgl.Quaternion.squad(quaternions[i], quaternions[i + 1], s0, s1, t, new bmgl.Quaternion());

// 2. compute the squad interpolation as above but where the first quaternion is a end point.
var s1 = bmgl.Quaternion.computeInnerQuadrangle(quaternions[0], quaternions[1], quaternions[2], new bmgl.Quaternion());
var q = bmgl.Quaternion.squad(quaternions[0], quaternions[1], quaternions[0], s1, t, new bmgl.Quaternion());
See:
  • Quaternion#computeInnerQuadrangle
(static) subtract(left, right, result) → {Quaternion}
计算两个四元数的分量差。
Parameters:
left (Quaternion) 第一个四元数。
right (Quaternion) 第二个四元数。
result (Quaternion) 存储结果的对象。
(static) unpack(array, startingIndex, result) → {Quaternion}
从压缩数组中检索实例。
Parameters:
array (Array.<Number>) 压缩数组。
startingIndex (Number) (default 0) 要解包的元素的起始索引。
result (Quaternion) 存储结果的对象。
(static) unpackInterpolationResult(array, sourceArray, firstIndex, lastIndex, result) → {Quaternion}
从用convertPackedArrayForInterpolation转换的压缩数组中检索实例。
Parameters:
array (Array.<Number>) 以前打包用于插值的数组。
sourceArray (Array.<Number>) 原始压缩数组。
firstIndex (Number) (default 0) 用于转换数组的FirstIndex。
lastIndex (Number) (default packedArray.length) 用于转换数组的最后一个索引。
result (Quaternion) 存储结果的对象。
clone(result) → {Quaternion}
复制此四元数实例。
Parameters:
result (Quaternion) 存储结果的对象。
equals(right) → {Boolean}
将其与提供的四元数组件进行比较,如果相等,则返回true,否则返回false
Parameters:
right (Quaternion) 右侧四元数。
equalsEpsilon(right, epsilon) → {Boolean}
将其与提供的四元数组件进行比较,如果它们在提供的epsilon中,则返回true,否则返回false
Parameters:
right (Quaternion) 右侧四元数。
epsilon (Number) 用于相等性测试的epsilon。
toString() → {String}
返回以格式(x、y、z、w)表示此四元数的字符串。