# Class: Quaternion

## Table of contents

### Constructors

- constructor

### Properties

- DEFAULT
- Phys3D

### Accessors

- w
- x
- y
- z

### Methods

- add
- angleTo
- clone
- dot
- equal
- fromPhysics
- invert
- isDefault
- length
- multiply
- normalize
- premultiply
- rotateTowards
- set
- setArray
- setFromEulerAngles
- setFromUnitVectors
- setFromYawRollPitch
- setValue
- slerp
- sub
- toAxisUnit
- toEulerAngles
- toPhysics
- transformVector3
- clearPhysicsPool
- createFromArray
- createFromAxisAngle
- createFromMatrix4
- createFromNumber
- createFromTypedArray
- createFromUnitVectors
- fromEulerAngles
- fromPhysics
- lookRotation

## Constructors

### constructor

• **new Quaternion**(`raw?`, `offset?`)

#### Parameters

| Name | Type |
| :------ | :------ |
| `raw?` | `Float32Array` |
| `offset?` | `number` |

## Properties

### DEFAULT

▪ `Static` `Readonly` **DEFAULT**: [`Quaternion`](Quaternion)

默认四元数，不要对该对象进行修改

**`readonly`**

**`static`**

**`memberof`** Quaternion

___

### Phys3D

▪ `Static` `Optional` **Phys3D**: typeof `phys3D`

## Accessors

### w

• `get` **w**(): `number`

w值

**`memberof`** Quaternion

#### Returns

`number`

• `set` **w**(`val`): `void`

w值

#### Parameters

| Name | Type |
| :------ | :------ |
| `val` | `number` |

#### Returns

`void`

___

### x

• `get` **x**(): `number`

x值

**`memberof`** Quaternion

#### Returns

`number`

• `set` **x**(`val`): `void`

x值

#### Parameters

| Name | Type |
| :------ | :------ |
| `val` | `number` |

#### Returns

`void`

___

### y

• `get` **y**(): `number`

y值

**`memberof`** Quaternion

#### Returns

`number`

• `set` **y**(`val`): `void`

y值

#### Parameters

| Name | Type |
| :------ | :------ |
| `val` | `number` |

#### Returns

`void`

___

### z

• `get` **z**(): `number`

z值

**`memberof`** Quaternion

#### Returns

`number`

• `set` **z**(`val`): `void`

z值

#### Parameters

| Name | Type |
| :------ | :------ |
| `val` | `number` |

#### Returns

`void`

## Methods

### add

▸ **add**(`quat`, `dst?`): [`Quaternion`](Quaternion)

四元数相加

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `quat` | [`Quaternion`](Quaternion) | 目标四元数 |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

计算结果

___

### angleTo

▸ **angleTo**(`q`): `number`

相对角度

#### Parameters

| Name | Type |
| :------ | :------ |
| `q` | [`Quaternion`](Quaternion) |

#### Returns

`number`

___

### clone

▸ **clone**(): [`Quaternion`](Quaternion)

拷贝四元数

**`memberof`** Quaternion

#### Returns

[`Quaternion`](Quaternion)

拷贝后的对象

___

### dot

▸ **dot**(`q`): `number`

点乘

#### Parameters

| Name | Type |
| :------ | :------ |
| `q` | [`Quaternion`](Quaternion) |

#### Returns

`number`

___

### equal

▸ **equal**(`quat`): `boolean`

判断与目标四元数的值是否相等

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `quat` | [`Quaternion`](Quaternion) | 目标四元数 |

#### Returns

`boolean`

___

### fromPhysics

▸ **fromPhysics**(`v`): [`Quaternion`](Quaternion)

#### Parameters

| Name | Type |
| :------ | :------ |
| `v` | `RawQuaternion` |

#### Returns

[`Quaternion`](Quaternion)

___

### invert

▸ **invert**(`dst?`): [`Quaternion`](Quaternion)

四元数反转

**`memberof`** Quaternion

#### Parameters

| Name | Type |
| :------ | :------ |
| `dst?` | [`Quaternion`](Quaternion) |

#### Returns

[`Quaternion`](Quaternion)

计算结果

___

### isDefault

▸ **isDefault**(): `boolean`

四元数是否为默认四元数（表示零旋转）

**`memberof`** Quaternion

#### Returns

`boolean`

___

### length

▸ **length**(): `number`

#### Returns

`number`

___

### multiply

▸ **multiply**(`quat`, `dst?`): [`Quaternion`](Quaternion)

四元数相乘

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `quat` | [`Quaternion`](Quaternion) | 目标四元数 |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

计算结果

___

### normalize

▸ **normalize**(): [`Quaternion`](Quaternion)

#### Returns

[`Quaternion`](Quaternion)

___

### premultiply

▸ **premultiply**(`q`): [`Quaternion`](Quaternion)

#### Parameters

| Name | Type |
| :------ | :------ |
| `q` | [`Quaternion`](Quaternion) |

#### Returns

[`Quaternion`](Quaternion)

___

### rotateTowards

▸ **rotateTowards**(`q`, `step`): [`Quaternion`](Quaternion)

转向对应的角度

#### Parameters

| Name | Type |
| :------ | :------ |
| `q` | `any` |
| `step` | `any` |

#### Returns

[`Quaternion`](Quaternion)

___

### set

▸ **set**(`quat`): [`Quaternion`](Quaternion)

拷贝目标四元数的值到自身

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `quat` | [`Quaternion`](Quaternion) | 目标四元数 |

#### Returns

[`Quaternion`](Quaternion)

自身

___

### setArray

▸ **setArray**(`value`, `offset?`): [`Quaternion`](Quaternion)

#### Parameters

| Name | Type |
| :------ | :------ |
| `value` | `ArrayLike` |
| `offset?` | `number` |

#### Returns

[`Quaternion`](Quaternion)

___

### setFromEulerAngles

▸ **setFromEulerAngles**(`euler`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `euler` | [`Vector3`](Vector3) |

#### Returns

`void`

___

### setFromUnitVectors

▸ **setFromUnitVectors**(`vFrom`, `vTo`): [`Quaternion`](Quaternion)

#### Parameters

| Name | Type |
| :------ | :------ |
| `vFrom` | `any` |
| `vTo` | `any` |

#### Returns

[`Quaternion`](Quaternion)

___

### setFromYawRollPitch

▸ **setFromYawRollPitch**(`yaw`, `roll`, `pitch`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `yaw` | `number` |
| `roll` | `number` |
| `pitch` | `number` |

#### Returns

`void`

___

### setValue

▸ **setValue**(`x`, `y`, `z`, `w`): [`Quaternion`](Quaternion)

设置四元数的值

**`memberof`** Quaternion

#### Parameters

| Name | Type |
| :------ | :------ |
| `x` | `number` |
| `y` | `number` |
| `z` | `number` |
| `w` | `number` |

#### Returns

[`Quaternion`](Quaternion)

自身

___

### slerp

▸ **slerp**(`right`, `t`, `dst?`): [`Quaternion`](Quaternion)

球面插值

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `right` | [`Quaternion`](Quaternion) | 目标四元数 |
| `t` | `number` | 插值系数，越接近 1 则结果越接近目标 |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

计算结果

___

### sub

▸ **sub**(`quat`, `dst?`): [`Quaternion`](Quaternion)

四元数相减

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `quat` | [`Quaternion`](Quaternion) | 目标四元数 |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

计算结果

___

### toAxisUnit

▸ **toAxisUnit**(): [`Vector3`](Vector3)

对[1,1,1]向量进行转换。

#### Returns

[`Vector3`](Vector3)

___

### toEulerAngles

▸ **toEulerAngles**(`dst?`): [`Vector3`](Vector3)

将该四元数转换成欧拉角，x代表Pitch,y代表Yaw,z代表Roll
旋转的顺序为YXZ

**`memberof`** Quaternion

#### Parameters

| Name | Type |
| :------ | :------ |
| `dst?` | [`Vector3`](Vector3) |

#### Returns

[`Vector3`](Vector3)

计算结果

___

### toPhysics

▸ **toPhysics**(): `RawQuaternion`

created by shanexyzhou
生成物理引擎内的RawQuaternion

#### Returns

`RawQuaternion`

___

### transformVector3

▸ **transformVector3**(`vec`): [`Vector3`](Vector3)

#### Parameters

| Name | Type |
| :------ | :------ |
| `vec` | [`Vector3`](Vector3) |

#### Returns

[`Vector3`](Vector3)

___

### clearPhysicsPool

▸ `Static` **clearPhysicsPool**(): `void`

#### Returns

`void`

___

### createFromArray

▸ `Static` **createFromArray**(`array`): [`Quaternion`](Quaternion)

使用一个数组创建
此操作会拷贝一份数组

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `array` | `number`[] | 数据源，长度必须为4，否则会抛出异常 |

#### Returns

[`Quaternion`](Quaternion)

___

### createFromAxisAngle

▸ `Static` **createFromAxisAngle**(`axis`, `rad`, `dst?`): [`Quaternion`](Quaternion)

从轴向旋转创建

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `axis` | [`Vector3`](Vector3) | 旋转轴 |
| `rad` | `number` | 旋转幅度 |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

计算结果

___

### createFromMatrix4

▸ `Static` **createFromMatrix4**(`mat`, `dst?`): [`Quaternion`](Quaternion)

从旋转矩阵创建

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type |
| :------ | :------ |
| `mat` | [`Matrix4`](Matrix4) |
| `dst?` | [`Quaternion`](Quaternion) |

#### Returns

[`Quaternion`](Quaternion)

___

### createFromNumber

▸ `Static` **createFromNumber**(`x`, `y`, `z`, `w`): [`Quaternion`](Quaternion)

使用数值创建

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `x` | `number` | x |
| `y` | `number` | y |
| `z` | `number` | z |
| `w` | `number` | w |

#### Returns

[`Quaternion`](Quaternion)

创建出来的四元数

___

### createFromTypedArray

▸ `Static` **createFromTypedArray**(`array`, `offset?`): [`Quaternion`](Quaternion)

使用某个已有的typedArray创建
此操作不会拷贝数据，而是在原来的内存区域上操作

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `array` | `Float32Array` | `undefined` | 数据源 |
| `offset` | `number` | `0` | - |

#### Returns

[`Quaternion`](Quaternion)

___

### createFromUnitVectors

▸ `Static` **createFromUnitVectors**(`vFrom`, `vTo`): [`Quaternion`](Quaternion)

通过俩个向量创建四元数

#### Parameters

| Name | Type |
| :------ | :------ |
| `vFrom` | [`Vector3`](Vector3) |
| `vTo` | [`Vector3`](Vector3) |

#### Returns

[`Quaternion`](Quaternion)

___

### fromEulerAngles

▸ `Static` **fromEulerAngles**(`euler`, `dst?`): [`Quaternion`](Quaternion)

从欧拉角创建四元数

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `euler` | [`Vector3`](Vector3) | 欧拉角，x代表pitch，y代表yaw，z代表roll |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

___

### fromPhysics

▸ `Static` **fromPhysics**(`v`): [`Quaternion`](Quaternion)

created by shanexyzhou
从物理引擎内的RawQuaternion生成Quaternion

#### Parameters

| Name | Type |
| :------ | :------ |
| `v` | `RawQuaternion` |

#### Returns

[`Quaternion`](Quaternion)

___

### lookRotation

▸ `Static` **lookRotation**(`forward`, `up`, `dst?`): [`Quaternion`](Quaternion)

由视角方向创建四元数

**`static`**

**`memberof`** Quaternion

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `forward` | [`Vector3`](Vector3) | 前方向 |
| `up` | [`Vector3`](Vector3) | 上方向 |
| `dst?` | [`Quaternion`](Quaternion) | - |

#### Returns

[`Quaternion`](Quaternion)

计算结果
