Quaternion 表示空间旋转的四元数。它通常表示为四个实数 (w, x, y, z)
,其中 w
是角度值,x
, y
, 和 z
是旋转轴周围的剪切变量。
Quaternion 可以与 Cesium 的其他服务一起使用,包括: 模型,相机,和CesiumJS基础。
// 创建默认四元数(1, 0, 0, 0)
var quaternion = Cesium.Quaternion.IDENTITY;
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 要克隆的四元数。 |
result | Quaternion | 一个存储克隆结果的对象,如果未提供则创建一个新的Quaternion。 |
描述:返回给定四元数的副本或存储复制品的对象。
var quaternion = Cesium.Quaternion.clone(Cesium.Quaternion.IDENTITY);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 要求共轭的四元数。 |
result | Quaternion | 行为的结果共轭Quaternion,如果没有提供它,则创建一个新的Quaternion。 |
描述:返回给定四元数的共轭/逆,即反向旋转而不改变旋转轴。
var quaternion = Cesium.Quaternion.conjugate(Cesium.Quaternion.IDENTITY);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
axis | Cartesian3 | 旋转轴。 |
angle | Number | 旋转轴的角度。 |
result | Quaternion | 旋转的四元数,如果没有提供它,则创建一个新的Quaternion。 |
描述:返回一个四元数,该四元数表示绕轴旋转给定角度的旋转。
// 将正方体绕y轴旋转45度。
var quaternion = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Y, Cesium.Math.toRadians(45));
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
x | Number | 绕x轴的角度。 |
y | Number | 绕y轴的角度。 |
z | Number | 绕z轴的角度。 |
order | String | 旋转的绕轴顺序。可以是“XYZ”,“YZX”,“ZXY”或“ZYX”。默认是“XYZ”。 |
result | Quaternion | 旋转四元数,如果没有提供,则创建一个新的Quaternion。 |
描述:返回一个四元数,该四元数表示给定欧拉角的旋转。
注:此方法接受三个缩放角度并根据提供的顺序按给定欧拉角调整旋转。
// 将正方体绕x、y、z轴旋转45度。
var quaternion = Cesium.Quaternion.fromEuler(
Cesium.Math.toRadians(45),
Cesium.Math.toRadians(45),
Cesium.Math.toRadians(45),
'XYZ'
);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
heading | Number | yaw值。 |
pitch | Number | 参量值。 |
roll | Number | 滚动值。 |
result | Quaternion | 旋转四元数,如果没有提供,则创建一个新的Quaternion。 |
描述:返回一个四元数,该四元数表示给定方向的旋转。
// 将正方体绕x、y、z轴旋转45度。
var quaternion = Cesium.Quaternion.fromHeadingPitchRoll(
Cesium.Math.toRadians(45),
Cesium.Math.toRadians(45),
Cesium.Math.toRadians(45)
);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
matrix | Matrix3 | 旋转矩阵。 |
result | Quaternion | 旋转四元数,如果没有提供,则创建一个新的Quaternion。 |
描述:返回一个四元数,该四元数表示给定旋转矩阵的旋转。
// 将正方体绕x、y、z轴旋转45度, convert it to a Matrix3, then back to a quaternion.
var rotation = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(45));
var quaternion = Cesium.Quaternion.fromRotationMatrix(rotation);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 被估量四元数。 |
描述:返回四元数的长度。
var mag = Cesium.Quaternion.magnitude(Cesium.Quaternion.IDENTITY);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 被估量四元数。 |
描述:返回四元数的长度的平方/欧几里得距离。
var mag = Cesium.Quaternion.magnitudeSquared(Cesium.Quaternion.IDENTITY);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 要进行归一化的四元数。 |
result | Quaternion | 归一化四元数,如果没有提供则创建一个新的Quaternion。 |
描述:返回归一化四元数,表示与原始四元数相同方向的单位四元数。
var quaternion = Cesium.Quaternion.normalize(Cesium.Quaternion.IDENTITY);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
left | Quaternion | 左四元数。 |
right | Quaternion | 右四元数。 |
result | Quaternion | 乘以四元数,如果没有提供则创建一个新的Quaternion。 |
描述:返回两个四元数的乘积。
var a = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, Cesium.Math.toRadians(45));
var b = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_X, Cesium.Math.toRadians(90));
var c = Cesium.Quaternion.multiply(a, b);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 要计算角度的四元数。 |
描述:返回绕旋转轴旋转的角度。
var axis = new Cesium.Cartesian3(0.0, 0.0, 1.0);
var angle = Cesium.Quaternion.computeAngle(Cesium.Quaternion.fromAxisAngle(axis, Cesium.Math.toRadians(45)));
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
quaternion | Quaternion | 要取对数的四元数。 |
result | Cartesian3 | 该四元数的对数,如果没有提供则创建一个新的Cartesian3。 |
描述:返回对数四元数。
var qt1 = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, Cesium.Math.toRadians(45));
var qt2 = Cesium.Quaternion.log(qt1);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
cartesian | Cartesian3 | 要取指数的笛卡尔坐标。 |
result | Quaternion | 四元数指数,如果没有提供则创建一个新的Quaternion。 |
描述:返回实数 $\exp(X)$ 的 Quaternion 格式,其中 $X$ 是提供笛卡尔坐标的 Quaternion。
var qt = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Y, Cesium.Math.toRadians(45));
var ex = new Cesium.Cartesian3(1, 2, 3);
var result = Cesium.Quaternion.exp(ex);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
start | Quaternion | 起始四元数。 |
end | Quaternion | 终止四元数。 |
t | Number | 值为0到1的插值度。 |
result | Quaternion | 插值四元数,如果未提供则创建一个新的Quaternion。 |
描述:返回使用球面线性插值计算的两个四元数之间的线性插值组成的四元数。
var qt1 = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, Cesium.Math.toRadians(45));
var qt2 = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_X, Cesium.Math.toRadians(90));
var qt3 = Cesium.Quaternion.slerp(qt1, qt2, 0.5);
参数描述:
参数名 | 类型 | 描述 |
---|---|---|
cartesian | Cartesian4 | 要规范化的笛卡尔坐标。 |
result | Quaternion | 结果规范化四元数,如果未提供则创建一个新的Quaternion。 |
描述:返回规范化四元数,从给定的四元数中删除缩放部分。
注意:假设提供的四元数中的 'w' 成分是标量缩放和三元素四元素。如果不是,则可能不会得到正确的结果。
var quaternion = Cesium.Quaternion.normalizeCartesian4(new Cesium.Cartesian4(0, 1, 1, 1));
描述:标识四元数,表示没有旋转。
描述:等于Cartesian4.ZERO四元数。
描述:存储在数组中的单个插值四元数的长度。
描述:单个插值四元数在字节中的大小。
描述:四元数在压缩数组中占用的长度(以32位字表示)。
描述:X分量。
描述:Y分量。
描述:Z分量。
描述:旋转角度。