麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

Cesium API - Quaternion 中文文档

本文介绍下Cesium中 Quaternion API的详细使用说明。

Quaternion API 调用方法

new Cesium.Quaternion(x, y, z, w)
在三维空间中用于表示旋转的一组四维坐标。
Name Type Default Description
x Number 0.0 optional X分量。
y Number 0.0 optional Y分量。
z Number 0.0 optional Z分量。
w Number 0.0 optional W分量。
参考:

成员变量

staticconstantCesium.Quaternion.IDENTITY : Quaternion
初始化为(0.0,0.0,0.0,1.0)的不可变四元数实例。
staticCesium.Quaternion.packedInterpolationLength : Number
用于将对象以可插值(interpolatable)形式存储到数组中的元素数。
staticCesium.Quaternion.packedLength : Number
用于将对象打包成数组的元素数。
staticconstantCesium.Quaternion.ZERO : Quaternion
初始化为(0.0,0.0,0.0,0.0)的不可变四元数实例。
W分量。
Default Value: 0.0
X分量。
Default Value: 0.0
Y分量。
Default Value: 0.0
Z分量。
Default Value: 0.0

内置方法

staticCesium.Quaternion.add(left, right, result)Quaternion
计算两个四元数的分量和。
Name Type Description
left Quaternion 第一个四元数。
right Quaternion 第二个四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.clone(quaternion, result)Quaternion
复制四元数实例。
Name Type Description
quaternion Quaternion 要复制的四元数。
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。(如果四元数未定义,则返回undefined。)
staticCesium.Quaternion.computeAngle(quaternion)Number
计算所提供的四元数的旋转角度。
Name Type Description
quaternion Quaternion 要使用的四元数。
返回值:
旋转的角度。
staticCesium.Quaternion.computeAxis(quaternion, result)Cartesian3
计算所提供的四元数的旋转轴。
Name Type Description
quaternion Quaternion 要使用的四元数。
result Cartesian3 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.computeInnerQuadrangle(q0, q1, q2, result)Quaternion
计算一个内四边形点。

这将计算四元数,以确保一个小队曲线(squad curve)是C1

Name Type Description
q0 Quaternion 第一个四元数。
q1 Quaternion 第二个四元数。
q2 Quaternion 第三个四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
参考:
  • Quaternion#squad
staticCesium.Quaternion.conjugate(quaternion, result)Quaternion
计算所提供的四元数的结合(conjugate)。
Name Type Description
quaternion Quaternion 要结合的四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.convertPackedArrayForInterpolation(packedArray, startingIndex, lastIndex, result)
将压缩数组转换为适合于插值的形式。
Name Type Default Description
packedArray Array.<Number> 打包的数组。
startingIndex Number 0 optional 要转换的第一个元素的索引。
lastIndex Number packedArray.length optional 要转换的最后一个元素的索引。
result Array.<Number> 存储结果的对象。
staticCesium.Quaternion.divideByScalar(quaternion, scalar, result)Quaternion
将提供的四元数按分量方式除以提供的标量。
Name Type Description
quaternion Quaternion 要被除的四元数。
scalar Number 要除以的标量。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.dot(left, right)Number
计算两个四元数的点(标量)积。
Name Type Description
left Quaternion 第一个四元数。
right Quaternion 第二个四元数。
返回值:
点积。
staticCesium.Quaternion.equals(left, right)Boolean
比较所提供的四元数组件,如果相等,则返回true,否则返回false
Name Type Description
left Quaternion optional 第一个四元数。
right Quaternion optional 第二个四元数。
返回值:
如果两个四元数相等,则为true;否则false
staticCesium.Quaternion.equalsEpsilon(left, right, epsilon)Boolean
比较所提供的四元数组件,如果它们在所提供的epsilon内,则返回true,否则返回false
Name Type Description
left Quaternion optional 第一个四元数。
right Quaternion optional 第二个四元数。
epsilon Number 用于等式检验的epsilon。
返回值:
如果两个四元数都在给定的epsilon范围内,true;否则false
staticCesium.Quaternion.exp(cartesian, result)Quaternion
指数四元数函数。
Name Type Description
cartesian Cartesian3 笛卡儿坐标。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.fastSlerp(start, end, t, result)Quaternion
使用提供的四元数计算t处的球面线性插值或外插值(extrapolation)。 这个实现比Quaternion#slerp要快,但是只能精确到10-6
Name Type Description
start Quaternion 对应于0.0的t值。
end Quaternion 对应于1.0的t值。
t Number 在t上做插值的点。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
参考:
  • Quaternion#slerp
staticCesium.Quaternion.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 存储结果的对象。
返回值:
修改后的结果参数或新实例(如果没有提供)。
参考:
  • Quaternion#squad
staticCesium.Quaternion.fromAxisAngle(axis, angle, result)Quaternion
计算表示绕轴旋转的四元数。
Name Type Description
axis Cartesian3 旋转轴
angle Number 绕轴旋转的角度(以弧度为单位)。
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。
staticCesium.Quaternion.fromHeadingPitchRoll(headingPitchRoll, result)Quaternion
从给定的偏航角(heading),俯仰角(pitch)和翻滚角(roll)计算一个旋转。 偏航是绕z轴负方向旋转。俯仰是绕y轴负方向旋转。翻滚是绕x轴正方向旋转。
Name Type Description
headingPitchRoll HeadingPitchRoll 以偏航、俯仰和翻滚表示的旋转。
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。
staticCesium.Quaternion.fromRotationMatrix(matrix, result)Quaternion
从提供的Matrix3实例计算四元数。
Name Type Description
matrix Matrix3 旋转矩阵。
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。
参考:
staticCesium.Quaternion.inverse(quaternion, result)Quaternion
计算所提供的四元数的倒数。
Name Type Description
quaternion Quaternion 要求倒数的四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.lerp(start, end, t, result)Quaternion
使用提供的四元数计算t处的线性插值或外插值(extrapolation)。
Name Type Description
start Quaternion 对应于0.0的t值。
end Quaternion 对应于1.0的t值。
t Number 在t上做插值的点。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.log(quaternion, result)Cartesian3
对数四元数函数。
Name Type Description
quaternion Quaternion 单位四元数。
result Cartesian3 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.magnitude(quaternion)Number
为提供的四元数计算大小(magnitude)。
Name Type Description
quaternion Quaternion 要结合的(conjugate)四元数。
返回值:
大小(magnitude)
staticCesium.Quaternion.magnitudeSquared(quaternion)Number
为提供的四元数计算大小的(magnitude)平方。
Name Type Description
quaternion Quaternion 要结合的(conjugate)四元数。
返回值:
大小的平方。
staticCesium.Quaternion.multiply(left, right, result)Quaternion
计算两个四元数的积。
Name Type Description
left Quaternion 第一个四元数。
right Quaternion 第二个四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.multiplyByScalar(quaternion, scalar要乘以的标量。, result)Quaternion
将提供的四元数按分量方式乘以提供的标量。
Name Type Description
quaternion Quaternion 要缩放的四元数。
scalar要乘以的标量。 Number
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.negate(quaternion, result)Quaternion
否定所提供的四元数。
Name Type Description
quaternion Quaternion 要否定的四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.normalize(quaternion, result)Quaternion
计算提供的四元数的规范化形式。
Name Type Description
quaternion Quaternion 归范化的四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.pack(value, array, startingIndex)Array.<Number>
将提供的实例存储到提供的数组中。
Name Type Default Description
value Quaternion 要包装的值。
array Array.<Number> 要被包装到的数组。
startingIndex Number 0 optional 开始包装元素的数组索引。
返回值:
被包装到的数组。
staticCesium.Quaternion.slerp(start, end, t, result)Quaternion
使用提供的四元数计算t处的球面线性插值或外插值(extrapolation)。
Name Type Description
start Quaternion 对应于0.0的t值。
end Quaternion 对应于1.0的t值。
t Number 在t上做插值的点。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
参考:
  • Quaternion#fastSlerp
staticCesium.Quaternion.squad(q0, q1, s0, s1, t, result)Quaternion
计算四元数之间的球面四边形插值。
Name Type Description
q0 Quaternion 第一个四元数。
q1 Quaternion 第二个四元数。
s0 Quaternion 第一个内四边形。
s1 Quaternion 第二个内四边形。
t Number 在t上做插值的点。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
示例:
// 1. 计算曲线上两个四元数之间的小队插值(squad interpolation)。
var s0 = Cesium.Quaternion.computeInnerQuadrangle(quaternions[i - 1], quaternions[i], quaternions[i + 1], new Cesium.Quaternion());
var s1 = Cesium.Quaternion.computeInnerQuadrangle(quaternions[i], quaternions[i + 1], quaternions[i + 2], new Cesium.Quaternion());
var q = Cesium.Quaternion.squad(quaternions[i], quaternions[i + 1], s0, s1, t, new Cesium.Quaternion());
// 2. 像上面那样计算小队内插(quad interpolation),但是第一个四元数是一个终点。
var s1 = Cesium.Quaternion.computeInnerQuadrangle(quaternions[0], quaternions[1], quaternions[2], new Cesium.Quaternion());
var q = Cesium.Quaternion.squad(quaternions[0], quaternions[1], quaternions[0], s1, t, new Cesium.Quaternion());
参考:
  • Quaternion#computeInnerQuadrangle
staticCesium.Quaternion.subtract(left, right, result)Quaternion
计算两个四元数的分量差。
Name Type Description
left Quaternion 第一个四元数。
right Quaternion 第二个四元数。
result Quaternion 存储结果的对象。
返回值:
修改后的结果参数。
staticCesium.Quaternion.unpack(array, startingIndex, result)Quaternion
从已打包的数组中检索实例。
Name Type Default Description
array Array.<Number> 打包的数组。
startingIndex Number 0 optional 要解包的元素的起始索引。
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。
staticCesium.Quaternion.unpackInterpolationResult(array, sourceArray, firstIndex, lastIndex, result)Quaternion
从使用convertPackedArrayForInterpolation转换的压缩数组中检索实例。
Name Type Default Description
array Array.<Number> 该数组以前是为了插值而打包的。
sourceArray Array.<Number> 原始的压缩数组。
firstIndex Number 0 optional 用于转换数组的第一个索引。
lastIndex Number packedArray.length optional 用于转换数组的最后一个索引。
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。
复制此四元数实例。
Name Type Description
result Quaternion optional 存储结果的对象。
返回值:
修改后的结果参数,如果没有提供,则创建一个新的四元数实例。
equals(right)Boolean
将其与提供的四元数组件进行比较,如果相等,则返回true,否则返回false
Name Type Description
right Quaternion optional 要进行比较的四元数。
返回值:
如果两个四元数相等,则为true;否则false
equalsEpsilon(right, epsilon)Boolean
将其与提供的四元数分量进行比较,如果在提供的epsilon范围内,则返回true,否则返回false
Name Type Description
right Quaternion optional 要进行比较的四元数。
epsilon Number 用于等式检验的epsilon。
返回值:
如果两个四元数都在给定的epsilon范围内,true;否则false
toString()String
以格式(x, y, z, w)返回表示此四元数的字符串。
返回值:
表示这个四元数的字符串。

其他API

Cesium中文API文档手册(v1.63.1版本)参考:《Cesium中文API文档手册(v1.63.1版本)

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)