Class: Quaternion

Quaternion

new Quaternion(x, y, z, w)

用来表示三维空间中旋转的一组四维坐标。

Name Type Default Description
x Number 0.0 可选

X部分。

y Number 0.0 可选

Y部分。

z Number 0.0 可选

Z部分。

w Number 0.0 可选

W部分。

See:
  • PackableForInterpolation

Members

(static, constant) IDENTITYQuaternion

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

static packedInterpolationLengthNumber

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

static packedLengthNumber

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

(static, constant) ZEROQuaternion

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

wNumber

W部分。

Default Value:
0.0

xNumber

X部分。

Default Value:
0.0

yNumber

Y部分。

Default Value:
0.0

zNumber

Z部分。

Default Value:
0.0

Methods

static add(left, right, result){Quaternion}

计算两个四元数的分量和。

Name Type Description
left Quaternion

第一个四元数。

right Quaternion

第二个四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static clone(quaternion, result){Quaternion}

复制四元数实例。

Name Type Description
quaternion Quaternion

要复制的四元数。

result Quaternion 可选

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数,或一个新的四元数实例(如果没有提供四元数实例)。(如果四元数未定义,则返回未定义)。

static computeAngle(quaternion){Number}

计算所提供的四元数的旋转角度。

Name Type Description
quaternion Quaternion

要使用的四元数。

Returns:
Type Description
Number 旋转角度。

static computeAxis(quaternion, result){Cartesian3}

计算所提供四元数的旋转轴。

Name Type Description
quaternion Quaternion

要使用的四元数。

result Cartesian3

存储结果的对象。

Returns:
Type Description
Cartesian3 修改后的结果参数。

static computeInnerQuadrangle(q0, q1, q2, result){Quaternion}

计算一个内四边形点。这将计算四元数,确保阵容曲线为C1

Name Type Description
q0 Quaternion

第一个四元数。

q1 Quaternion

第二个四元数。

q2 Quaternion

第三个四元数。

result Quaternion

存储结果的对象。

See:
  • Quaternion#squad
Returns:
Type Description
Quaternion 修改后的结果参数。

static conjugate(quaternion, result){Quaternion}

计算所提供四元数的共轭数。

Name Type Description
quaternion Quaternion

用于共轭的四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static convertPackedArrayForInterpolation(packedArray, startingIndex, lastIndex, result)

将打包数组转换为适合插值的形式。

Name Type Default Description
packedArray Array.<Number>

打包数组。

startingIndex Number 0 可选

要转换的第一个元素的索引。

lastIndex Number packedArray.length 可选

最后一个要转换的元素的索引。

result Array.<Number>

要在其中存储结果的对象。

static divideByScalar(quaternion, scalar, result){Quaternion}

用所提供的标量分量除以所提供的四元数。

Name Type Description
quaternion Quaternion

要被分割的四元数。

scalar Number

要被除以的标量。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static dot(left, right){Number}

计算两个四元数的点(标量)乘积。

Name Type Description
left Quaternion

第一个四元数。

right Quaternion

第二个四元数。

Returns:
Type Description
Number 点积。

static equals(left, right){Boolean}

比较所提供的四元数的分量,如果相等则返回 true,否则返回 false。

Name Type Description
left Quaternion 可选

第一个四元数。

right Quaternion 可选

第二个四元数。

Returns:
Type Description
Boolean 如果相等,则为True,否则为false。

static equalsEpsilon(left, right, epsilon){Boolean}

比较所提供的四元数的分量,如果在所提供的ε范围内,则返回 true,否则返回 false。

Name Type Description
left Quaternion 可选

第一个四元数。

right Quaternion 可选

第二个四元数。

epsilon Number

用于等式测试的容差值。

Returns:
Type Description
Boolean 如果在提供的容差范围内,则为true;否则为false。

static exp(cartesian, result){Quaternion}

指数四元数函数。

Name Type Description
cartesian Cartesian3

cartesian。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static fastSlerp(start, end, t, result){Quaternion}

使用提供的四元数在t处计算球面线性插值或外推。这个实现比Quaternion#slerp快,但只能精确到10-6

Name Type Description
start Quaternion

对应于t在0.0处的值。

end Quaternion

对应于1.0时t的值。

t Number

沿着t进行插值的点。

result Quaternion

存储结果的对象。

See:
  • Quaternion#slerp
Returns:
Type Description
Quaternion 修改后的结果参数。

static fastSquad(q0, q1, s0, s1, t, result){Quaternion}

计算四元数之间的球面四边形插值。一个比Quaternion#squad更快的实现,但不太准确。

Name Type Description
q0 Quaternion

第一个四元数。

q1 Quaternion

第二个四元数。

s0 Quaternion

第一个内四边形。

s1 Quaternion

第二个内四边形。

t Number

在[0,1]中用来插值的时间。

result Quaternion

存储结果的对象。

See:
  • Quaternion#squad
Returns:
Type Description
Quaternion 修改后的结果参数,如果没有提供,则为新实例。

static fromAxisAngle(axis, angle, result){Quaternion}

计算代表绕轴旋转的四元数。

Name Type Description
axis Cartesian3

旋转轴。

angle Number

绕轴旋转的角度(以弧度为单位)。

result Quaternion 可选

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数,或者一个新的四元数实例(如果没有提供)。

static fromHeadingPitchRoll(headingPitchRoll, result){Quaternion}

根据给定的方位角、俯仰角和滚转角计算旋转角度。方位角是绕负 Z 轴的旋转。俯仰角是绕负 y 轴的旋转角度。滚转是绕正 x 轴的旋转。

Name Type Description
headingPitchRoll HeadingPitchRoll

以方位、俯仰和滚动表示的旋转。

result Quaternion 可选

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数,或者一个新的四元数实例(如果没有提供)。

static fromRotationMatrix(matrix, result){Quaternion}

根据提供的 Matrix3 实例计算四元数。

Name Type Description
matrix Matrix3

旋转矩阵

result Quaternion 可选

存储结果的对象。

See:
Returns:
Type Description
Quaternion 修改后的结果参数,或者一个新的四元数实例(如果没有提供)。

static inverse(quaternion, result){Quaternion}

计算所提供的四元数的逆。

Name Type Description
quaternion Quaternion

要标准化的四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static lerp(start, end, t, result){Quaternion}

使用提供的四元数计算 t 处的线性插值或外推值。

Name Type Description
start Quaternion

t 在 0.0 时对应的值。

end Quaternion

t 为 1.0 时对应的值。

t Number

沿 t 插值的点。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static log(quaternion, result){Cartesian3}

对数四元数函数。

Name Type Description
quaternion Quaternion

单位四元数。

result Cartesian3

存储结果的对象。

Returns:
Type Description
Cartesian3 修改后的结果参数。

static magnitude(quaternion){Number}

计算所提供的四元数的幅度。

Name Type Description
quaternion Quaternion

要进行共轭的四元数。

Returns:
Type Description
Number The magnitude.

static magnitudeSquared(quaternion){Number}

计算所提供四元数的幅度平方。

Name Type Description
quaternion Quaternion

要进行共轭的四元数。

Returns:
Type Description
Number 幅度的平方。

static multiply(left, right, result){Quaternion}

计算两个四元数的乘积。

Name Type Description
left Quaternion

第一个四元数。

right Quaternion

第二个四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static multiplyByScalar(quaternion, scalar, result){Quaternion}

将所提供的四元数与所提供的标量进行分量相乘。

Name Type Description
quaternion Quaternion

要缩放的四元数。

scalar Number

要与之相乘的标量。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static negate(quaternion, result){Quaternion}

否定所提供的四元数。

Name Type Description
quaternion Quaternion

要否定的四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static normalize(quaternion, result){Quaternion}

计算所提供四元数的规范化形式。

Name Type Description
quaternion Quaternion

要标准化的四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static pack(value, array, startingIndex){Array.<Number>}

将提供的实例存储到提供的数组中。

Name Type Default Description
value Quaternion

要打包的值。

array Array.<Number>

要装入的数组。

startingIndex Number 0 可选

开始打包元素的数组索引。

Returns:
Type Description
Array.<Number> 被装入的数组。

static slerp(start, end, t, result){Quaternion}

使用提供的四元数计算 t 处的球面线性内插法或外推法。

Name Type Description
start Quaternion

t 在 0.0 时对应的值。

end Quaternion

t 为 1.0 时对应的值。

t Number

沿 t 插值的点。

result Quaternion

存储结果的对象。

See:
  • Quaternion#fastSlerp
Returns:
Type Description
Quaternion 修改后的结果参数。

static squad(q0, q1, s0, s1, t, result){Quaternion}

计算四元数之间的球面四元插值。

Name Type Description
q0 Quaternion

第一个四元数。

q1 Quaternion

第二个四元数。

s0 Quaternion

第一个内四边形。

s1 Quaternion

第二个内四边形。

t Number

在[0,1]中用来插值的时间。

result Quaternion

存储结果的对象。

See:
  • Quaternion#computeInnerQuadrangle
Returns:
Type Description
Quaternion 修改后的结果参数。
Example
// 1. compute the squad interpolation between two quaternions on a curve
var s0 = SuperMap3D.Quaternion.computeInnerQuadrangle(quaternions[i - 1], quaternions[i], quaternions[i + 1], new SuperMap3D.Quaternion());
var s1 = SuperMap3D.Quaternion.computeInnerQuadrangle(quaternions[i], quaternions[i + 1], quaternions[i + 2], new SuperMap3D.Quaternion());
var q = SuperMap3D.Quaternion.squad(quaternions[i], quaternions[i + 1], s0, s1, t, new SuperMap3D.Quaternion());

// 2. compute the squad interpolation as above but where the first quaternion is a end point.
var s1 = SuperMap3D.Quaternion.computeInnerQuadrangle(quaternions[0], quaternions[1], quaternions[2], new SuperMap3D.Quaternion());
var q = SuperMap3D.Quaternion.squad(quaternions[0], quaternions[1], quaternions[0], s1, t, new SuperMap3D.Quaternion());

static subtract(left, right, result){Quaternion}

计算两个四元数的分量差。

Name Type Description
left Quaternion

第一个四元数。

right Quaternion

第二个四元数。

result Quaternion

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数。

static unpack(array, startingIndex, result){Quaternion}

从打包数组中检索实例。

Name Type Default Description
array Array.<Number>

打包数组。

startingIndex Number 0 可选

要解压缩的元素的起始索引。

result Quaternion 可选

要在其中存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数或新的Quaternion实例(如果没有提供)。

static unpackInterpolationResult(array, sourceArray, firstIndex, lastIndex, result){Quaternion}

从使用 convertPackedArrayForInterpolation 转换的打包数组中读取实例。

Name Type Default Description
array Array.<Number>

之前打包用于插值的数组。

sourceArray Array.<Number>

原始的打包阵列。

firstIndex Number 0 可选

转换数组时使用的 firstIndex。

lastIndex Number packedArray.length 可选

用于转换数组的最后一个索引。

result Quaternion 可选

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数,或者一个新的四元数实例(如果没有提供)。

clone(result){Quaternion}

复制此四元数实例。

Name Type Description
result Quaternion 可选

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数,或者一个新的四元数实例(如果没有提供)。

equals(right){Boolean}

比较此四元数和提供的四元数的分量,如果相等则返回 true,否则返回 false。

Name Type Description
right Quaternion 可选

右侧的四元数。

Returns:
Type Description
Boolean 如果相等,则为True,否则为false。

equalsEpsilon(right, epsilon){Boolean}

比较此四元数和提供的四元数的分量,如果在提供的容差范围内,则返回 true,否则返回 false。

Name Type Description
right Quaternion 可选

右侧的四元数。

epsilon Number

用于等式测试的容差值。

Returns:
Type Description
Boolean 如果在提供的容差范围内,则为true;否则为false。

toString(){String}

以格式(x, y, z, w)返回表示此四元数的字符串。

Returns:
Type Description
String 表示此四元数的字符串。