Skip to content
Quaternion

基础类型 / 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 numberx 分量 default:0 range: [-1, 1] type: 浮点数
y numbery 分量 default:0 range: [-1, 1] type: 浮点数
z numberz 分量 default:0 range: [-1, 1] type: 浮点数
w numberw 分量 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

get conjugated(): Quaternion

返回当前四元数的共轭四元数,对单位四元数与求逆等价,但更高效

Returns

Quaternion

inverted

get inverted(): Quaternion

返回当前四元数的逆

Returns

Quaternion

length

get length(): number

求四元数长度

Returns

number

normalized

get normalized(): Quaternion

返回一个当前四元数归一后的新四元数

Returns

Quaternion

sqrLength

get sqrLength(): number

求四元数长度平方

Returns

number

identity

Static get identity(): Quaternion

获取一个单位四元数

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

Quaternionthis

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 Vectorx轴的向量值
yAxis Vectory轴的向量值
zAxis Vectorz轴的向量值
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返回一个三维矩阵