基础类型 / Quaternion
Quaternion Class
四元数
用于表示 3D 旋转的单位四元数。
四元数与 Transform 类似,实现了旋转的矩阵表示。与存储旋转、缩放和剪切的 Transform 不同,四元数仅存储旋转。
四元数可以使用轴角对或欧拉角进行参数化。由于它们的紧凑性以及它们在内存中的存储方式,某些操作对于浮点错误的处理更加高效。
Table of contents
Properties
w: number |
|---|
| w 分量。 |
x: number |
| x 分量。 |
y: number |
| y 分量。 |
z: number |
| z 分量。 |
halfToRad: any |
| 获取一个半弧度系数 |
Accessors
conjugated(): Quaternion |
|---|
| 返回当前四元数的共轭四元数,对单位四元数与求逆等价,但更高效 |
inverted(): Quaternion |
| 返回当前四元数的逆 |
length(): number |
| 求四元数长度 |
normalized(): Quaternion |
| 返回一个当前四元数归一后的新四元数 |
sqrLength(): number |
| 求四元数长度平方 |
identity(): Quaternion |
| 获取一个单位四元数 |
Methods
clone(): Quaternion |
|---|
| 克隆当前四元数。 |
equals(a: Quaternion, b: Quaternion, epsilon?: number): boolean |
| 排除浮点数误差的四元数近似等价判断 |
fromRotation(v: Rotation, outer?: Quaternion): Quaternion |
| 读取旋转角数据创建或者写入一个四元数 |
getAxisX(outer?: Vector): Vector |
| 返回定义此四元数的坐标系 X 轴向量 |
getAxisY(outer?: Vector): Vector |
| 返回定义此四元数的坐标系 Y 轴向量 |
getAxisZ(outer?: Vector): Vector |
| 返回定义此四元数的坐标系 Z 轴向量 |
getEuler(outerZ?: boolean, outer?: Vector): Vector |
| 根据四元数计算欧拉角 |
getEulerAngles(): Vector |
| 返回当前四元数转化的欧拉角(x-y-z)。 |
normalize(a: Quaternion, outer?: Quaternion): Quaternion |
| 归一化四元数 |
set(other): Quaternion |
| 设置当前四元数使其与指定四元数相等。 |
setEulerAngles(euler: Vector): void |
| 设置欧拉角 |
strictEquals(a: Quaternion, b: Quaternion): boolean |
| 四元数等价判断 |
toRotation(): Rotation |
| 获取一个当前四元数的旋转数据 |
toString(): string |
| 输出为字符串 |
calculateW(a: Quaternion, outer?: Quaternion): Quaternion |
| 根据 xyz 分量计算 w 分量,默认已归一化 |
conjugate(a: Quaternion, outer?: Quaternion): Quaternion |
| 求共轭四元数,对单位四元数与求逆等价,但更高效 |
dot(a: Quaternion, b: Quaternion): number |
| 四元数点积(数量积) |
equals(a: Quaternion, b: Quaternion, epsilon?: number): boolean |
| 排除浮点数误差的四元数近似等价判断 |
fromAngleZ(z: number, outer?: Quaternion): Quaternion |
| 根据 2D 角度(0, 0, z)计算四元数 |
fromAxes(xAxis: Vector, yAxis: Vector, zAxis: Vector, outer?: Quaternion): Quaternion |
| 根据坐标轴朝向计算四元数,默认三向量都已归一化且相互垂直 |
fromAxisAngle(axis: Vector, rad: number, outer?: Quaternion): Quaternion |
| 根据旋转轴和旋转弧度计算四元数 |
fromMatrix3x3(m: Matrix3x3, outer?: Quaternion): Quaternion |
| 根据三维矩阵信息计算四元数,默认输入矩阵不含有缩放信息 |
fromRotation(v: Rotation, outer?: Quaternion): Quaternion |
| 读取旋转角数据创建或者写入一个四元数 |
fromViewUp(view: Vector, up?: Vector, outer?: Quaternion): Quaternion |
| 根据视口的前方向和上方向计算四元数 |
getAxis(q: Quaternion, outer?: Vector): Vector |
| 获取四元数的旋转轴 |
getAxisAngle(q: Quaternion): number |
| 获取四元数的旋转弧度 |
invert(a: Quaternion, outer?: Quaternion): Quaternion |
| 四元数求逆 |
lerp(a: Quaternion, b: Quaternion, t: number, outer?: Quaternion): Quaternion |
| 逐元素线性插值: A + t * (B - A) |
multiply(a: Quaternion, b: Quaternion, outer?: Quaternion): Quaternion |
| 四元数乘法 |
multiplyVector(a: Vector, q: Quaternion, outer?: Vector): Vector |
| 四元数乘以一个三维向量(通常用于向量通过四元数旋转) |
normalize(a: Quaternion, outer?: Quaternion): Quaternion |
| 归一化四元数 |
rotateAround(rot: Quaternion, axis: Vector, rad: number, outer?: Quaternion): Quaternion |
| 绕世界空间下指定轴旋转四元数 |
rotateAroundLocal(rot: Quaternion, axis: Vector, rad: number, outer?: Quaternion): Quaternion |
| 绕本地空间下指定轴旋转四元数 |
rotateX(a: Quaternion, rad: number, outer?: Quaternion): Quaternion |
| 绕 X 轴旋转指定四元数 |
rotateY(a: Quaternion, rad: number, outer?: Quaternion): Quaternion |
| 绕 Y 轴旋转指定四元数 |
rotateZ(a: Quaternion, rad: number, outer?: Quaternion): Quaternion |
| 绕 Z 轴旋转指定四元数 |
rotationTo(a: Vector, b: Vector, outer?: Quaternion): Quaternion |
| 设置四元数为两向量a和b间的最短路径旋转,默认两向量都已归一化 |
slerp(a: Quaternion, b: Quaternion, t: number, outer?: Quaternion): Quaternion |
| 四元数球面插值 |
sqlerp(a: Quaternion, b: Quaternion, c: Quaternion, d: Quaternion, t: number, outer?: Quaternion): Quaternion |
| 带两个控制点的四元数球面插值 |
strictEquals(a: Quaternion, b: Quaternion): boolean |
| 四元数等价判断 |
toMatrix3x3(q: Quaternion, outer?: Matrix3x3): Matrix3x3 |
| 根据四元数旋转信息计算矩阵 |
• new Quaternion(v)
Parameters
v Quaternion | 四元素 |
|---|
• new Quaternion(x, y, z, w)
Parameters
x number | x 分量 default:0 range: [-1, 1] type: 浮点数 |
|---|---|
y number | y 分量 default:0 range: [-1, 1] type: 浮点数 |
z number | z 分量 default:0 range: [-1, 1] type: 浮点数 |
w number | w 分量 default:1 range: [-1, 1] type: 浮点数 |
Properties
w
• w: number
w 分量。
x
• x: number
x 分量。
y
• y: number
y 分量。
z
• z: number
z 分量。
halfToRad
▪ Static Private halfToRad: any
获取一个半弧度系数
Accessors
conjugated
• | ||
|---|---|---|
返回当前四元数的共轭四元数,对单位四元数与求逆等价,但更高效 Returns
|
inverted
• | ||
|---|---|---|
返回当前四元数的逆 Returns
|
length
• | ||
|---|---|---|
求四元数长度 Returns
|
normalized
• | ||
|---|---|---|
返回一个当前四元数归一后的新四元数 Returns
|
sqrLength
• | ||
|---|---|---|
求四元数长度平方 Returns
|
identity
• |
|---|
获取一个单位四元数 Precautions Quaternion(0,0,0,1)。 Returns |
Quaternion |
|---|
Methods
clone
• clone(): Quaternion
克隆当前四元数。
Returns
Quaternion | 四元数 |
|---|
equals
• equals(other, epsilon?): boolean
判断当前四元数是否在误差范围内与指定向量相等。
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
epsilon? number | 最小误差数 default:1.e-7 range: 建议传入小于 1 的值。 type:浮点数 |
Returns
boolean | 返回是否相等的结果 |
|---|
fromRotation
• fromRotation(v): void
当前四元数读取一个旋转数据
Parameters
v Rotation | 读取的字符串数据 |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
getAxisX
• getAxisX(outer?): Vector
返回定义此四元数的坐标系 X 轴向量
Parameters
outer? Vector | 接收结果的 Vector 对象 default:null |
|---|
Returns
Vector | 此四元数的坐标系 X 轴向量 |
|---|
getAxisY
• getAxisY(outer?): Vector
返回定义此四元数的坐标系 Y 轴向量
Parameters
outer? Vector | 接收结果的 Vector 对象 default:null |
|---|
Returns
Vector | 此四元数的坐标系 Y 轴向量 |
|---|
getAxisZ
• getAxisZ(outer?): Vector
返回定义此四元数的坐标系 Z 轴向量
Parameters
outer? Vector | 接收结果的 Vector 对象 default:null |
|---|
Returns
Vector | 此四元数的坐标系 Z 轴向量 |
|---|
getEuler
• getEuler(outerZ?, outer?): Vector
根据四元数计算欧拉角
Parameters
outerZ? boolean | 将z值范围更改为[-180,-90]U[90,180] default:false |
|---|---|
outer? Vector | 接收结果的 Vector 对象 default:null |
Returns
Vector | 欧拉角。返回角度 x, y 在 [-180, 180] 区间内, z 默认在 [-90, 90] 区间内,旋转顺序为 YZX |
|---|
getEulerAngles
• getEulerAngles(): Vector
返回当前四元数转化的欧拉角(x-y-z)。
Returns
Vector | 欧拉角 |
|---|
normalize
• normalize(): void
将当前四元数归一化
Parameters
a Quaternion | 四元数a |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
set
• set(other): Quaternion
设置当前四元数使其与指定四元数相等。
Parameters
other Quaternion | 四元数数据 |
|---|
Returns
Quaternion | this |
|---|
• set(x?, y?, z?, w?): Quaternion
设置当前四元数指定元素值。
Parameters
x? number | 四元数的 x 分量 default:0 range: [-1, 1] type: 浮点数 |
|---|---|
y? number | 四元数的 y 分量 default:0 range: [-1, 1] type: 浮点数 |
z? number | 四元数的 z 分量 default:0 range: [-1, 1] type: 浮点数 |
w? number | 四元数的 w 分量 default:0 range: [-1, 1] type: 浮点数 |
Returns
Quaternion | 当前四元数 |
|---|
setEulerAngles
• setEulerAngles(euler): void
设置欧拉角
Parameters
euler Vector | 传入的欧拉角 |
|---|
strictEquals
• strictEquals(other): boolean
判断当前四元数是否与指定四元数相等。
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
Returns
boolean | 返回是否相等的结果 |
|---|
toRotation
• toRotation(): Rotation
获取一个当前四元数的旋转数据
Returns
Rotation | 旋转数据 |
|---|
toString
• toString(): string
输出为字符串
Returns
string | 四元数值字符串 |
|---|
calculateW
• Static calculateW(a, outer?): Quaternion
根据 xyz 分量计算 w 分量,默认已归一化
Parameters
a Quaternion | 目标四元数 |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
conjugate
• Static conjugate(a, outer?): Quaternion
求共轭四元数,对单位四元数与求逆等价,但更高效
Parameters
a Quaternion | 四元数a |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
dot
• Static dot(a, b): number
四元数点积(数量积)
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
Returns
number | 返回一个结果数 |
|---|
equals
• Static equals(a, b, epsilon?): boolean
排除浮点数误差的四元数近似等价判断
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
epsilon? number | 最小误差数 default:1.e-7 range: 建议传入小于 1 的值。 type:浮点数 |
Returns
boolean | 返回是否相等的结果 |
|---|
fromAngleZ
• Static fromAngleZ(z, outer?): Quaternion
根据 2D 角度(0, 0, z)计算四元数
Parameters
z number | 绕 z 旋转的角度值。 range: 不限制 type:浮点数 |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
fromAxes
• Static fromAxes(xAxis, yAxis, zAxis, outer?): Quaternion
根据坐标轴朝向计算四元数,默认三向量都已归一化且相互垂直
Parameters
xAxis Vector | x轴的向量值 |
|---|---|
yAxis Vector | y轴的向量值 |
zAxis Vector | z轴的向量值 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
fromAxisAngle
• Static fromAxisAngle(axis, rad, outer?): Quaternion
根据旋转轴和旋转弧度计算四元数
Parameters
axis Vector | 旋转轴 |
|---|---|
rad number | 弧度值 range: 不限制 type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
fromMatrix3x3
• Static fromMatrix3x3(m, outer?): Quaternion
根据三维矩阵信息计算四元数,默认输入矩阵不含有缩放信息
Parameters
m Matrix3x3 | 三维矩阵 |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
fromRotation
• Static fromRotation(v, outer?): Quaternion
读取旋转角数据创建或者写入一个四元数
Parameters
v Rotation | 读取的字符串数据 |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
fromViewUp
• Static fromViewUp(view, up?, outer?): Quaternion
根据视口的前方向和上方向计算四元数
Parameters
view Vector | 视口的前向量 |
|---|---|
up? Vector | 上方向量 default:null |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
getAxis
• Static getAxis(q, outer?): Vector
获取四元数的旋转轴
Parameters
q Quaternion | 目标四元数 |
|---|---|
outer? Vector | 被写入的 Vector 对象 default:null |
Returns
Vector | 返回一个三维向量 |
|---|
getAxisAngle
• Static getAxisAngle(q): number
获取四元数的旋转弧度
Parameters
q Quaternion | 目标四元数 |
|---|
Returns
number | 返回一个弧度值 |
|---|
invert
• Static invert(a, outer?): Quaternion
四元数求逆
Parameters
a Quaternion | 四元数a |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
lerp
• Static lerp(a, b, t, outer?): Quaternion
逐元素线性插值: A + t * (B - A)
Parameters
a Quaternion | 四元数 a |
|---|---|
b Quaternion | 四元数 b |
t number | 插值 range: [0, 1] type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
multiply
• Static multiply(a, b, outer?): Quaternion
四元数乘法
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
multiplyVector
• Static multiplyVector(a, q, outer?): Vector
四元数乘以一个三维向量(通常用于向量通过四元数旋转)
Parameters
a Vector | 目标向量 |
|---|---|
q Quaternion | 四元数 |
outer? Vector | 被写入的 Vector 对象 default:null |
Returns
Vector | 返回一个旋转后的三维向量 |
|---|
normalize
• Static normalize(a, outer?): Quaternion
归一化四元数
Parameters
a Quaternion | 四元数a |
|---|---|
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
rotateAround
• Static rotateAround(rot, axis, rad, outer?): Quaternion
绕世界空间下指定轴旋转四元数
Parameters
rot Quaternion | 被旋转的四元数 |
|---|---|
axis Vector | 代表旋转轴的三维向量 |
rad number | 弧度值 range: 不限制 type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
rotateAroundLocal
• Static rotateAroundLocal(rot, axis, rad, outer?): Quaternion
绕本地空间下指定轴旋转四元数
Parameters
rot Quaternion | 需要变换的四元数 |
|---|---|
axis Vector | 代表旋转轴的三维向量 |
rad number | 弧度值 range: 不限制 type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
rotateX
• Static rotateX(a, rad, outer?): Quaternion
绕 X 轴旋转指定四元数
Parameters
a Quaternion | 四元数 |
|---|---|
rad number | 弧度值 range: 不限制 type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
rotateY
• Static rotateY(a, rad, outer?): Quaternion
绕 Y 轴旋转指定四元数
Parameters
a Quaternion | 四元数 |
|---|---|
rad number | 弧度值 range: 不限制 type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
rotateZ
• Static rotateZ(a, rad, outer?): Quaternion
绕 Z 轴旋转指定四元数
Parameters
a Quaternion | 四元数 |
|---|---|
rad number | 弧度值 range: 不限制 type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
rotationTo
• Static rotationTo(a, b, outer?): Quaternion
设置四元数为两向量a和b间的最短路径旋转,默认两向量都已归一化
Parameters
a Vector | 向量 a |
|---|---|
b Vector | 向量 b |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
slerp
• Static slerp(a, b, t, outer?): Quaternion
四元数球面插值
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
t number | 插值 range: [0, 1] type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
sqlerp
• Static sqlerp(a, b, c, d, t, outer?): Quaternion
带两个控制点的四元数球面插值
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
c Quaternion | 四元数c |
d Quaternion | 四元数d |
t number | 插值 range: [0, 1] type:浮点数 |
outer? Quaternion | 接收结果的 Quaternion 对象 default:null |
Returns
Quaternion | 返回一个四元数 |
|---|
strictEquals
• Static strictEquals(a, b): boolean
四元数等价判断
Parameters
a Quaternion | 四元数a |
|---|---|
b Quaternion | 四元数b |
Returns
boolean | 返回是否相等的结果 |
|---|
toMatrix3x3
• Static toMatrix3x3(q, outer?): Matrix3x3
根据四元数旋转信息计算矩阵
Parameters
q Quaternion | 四元数信息 |
|---|---|
outer? Matrix3x3 | 被写入的 Matrix3x3 对象 default:null |
Returns
Matrix3x3 | 返回一个三维矩阵 |
|---|