[gs-longan](../README.md) / Vector

# Class: Vector

单精度向量（Float32Array，长度为3）工具类

包含向量检测、归一化、点乘、叉乘、角度计算等常用操作。

## Table of contents

### Constructors

- [constructor](Vector.md#constructor)

### Methods

- [angle](Vector.md#angle)
- [clone](Vector.md#clone)
- [cross](Vector.md#cross)
- [divide](Vector.md#divide)
- [includeAngle](Vector.md#includeangle)
- [isZero](Vector.md#iszero)
- [module](Vector.md#module)
- [multi](Vector.md#multi)
- [multiply](Vector.md#multiply)
- [normalize](Vector.md#normalize)
- [normalizeVector](Vector.md#normalizevector)
- [reverse](Vector.md#reverse)

## Constructors

### constructor

• **new Vector**(): [`Vector`](Vector.md)

#### Returns

[`Vector`](Vector.md)

## Methods

### angle

▸ **angle**(`v0`, `v1`, `normal?`): `number`

计算向量 v0 与 v1 之间的夹角（以弧度表示），并可根据给定的法向量确定方向（顺时针或逆时针）。

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v0` | `Float32Array` | 第一个向量（Float32Array） |
| `v1` | `Float32Array` | 第二个向量（Float32Array） |
| `normal?` | `Float32Array` | 可选的法向量（Float32Array）。用于根据法向量判断方向性，从而决定是否将结果修正为 2π - alpha。 |

#### Returns

`number`

两向量之间的角度（以弧度为单位）。在向量为零时返回 0.0；在提供 normal 并且方向需被反转时可能返回接近 2π 的值。

___

### clone

▸ **clone**(`v`): `Float32Array`

克隆向量并返回新实例

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 待克隆向量（Float32Array，长度为3） |

#### Returns

`Float32Array`

克隆后的向量（Float32Array，长度为3）

___

### cross

▸ **cross**(`v1`, `v2`): `Float32Array`

向量叉乘（返回新向量）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v1` | `Float32Array` | 向量1（Float32Array，长度为3） |
| `v2` | `Float32Array` | 向量2（Float32Array，长度为3） |

#### Returns

`Float32Array`

叉乘结果向量（Float32Array，长度为3）

___

### divide

▸ **divide**(`v`, `num`): `Float32Array`

将向量按标量除并返回新的向量

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 源向量（Float32Array，长度为3） |
| `num` | `number` | 标量 |

#### Returns

`Float32Array`

新的向量（Float32Array，长度为3）

___

### includeAngle

▸ **includeAngle**(`v0`, `v1`): `number`

计算两个向量的包含角（使用叉乘求 sin）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v0` | `Float32Array` | 向量0（Float32Array，长度为3） |
| `v1` | `Float32Array` | 向量1（Float32Array，长度为3） |

#### Returns

`number`

两向量之间的夹角（弧度）

___

### isZero

▸ **isZero**(`v`): `boolean`

判断向量是否为零向量（按分量与容差比较）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 待检测的向量（Float32Array，长度为3） |

#### Returns

`boolean`

若三个分量的绝对值均小于容差则返回 true，否则返回 false

___

### module

▸ **module**(`v`): `number`

计算向量长度（模）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 向量（Float32Array，长度为3） |

#### Returns

`number`

向量的模长

___

### multi

▸ **multi**(`v1`, `v2`): `number`

向量点乘（标量积）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v1` | `Float32Array` | 向量1（Float32Array，长度为3） |
| `v2` | `Float32Array` | 向量2（Float32Array，长度为3） |

#### Returns

`number`

标量点积

___

### multiply

▸ **multiply**(`v`, `num`): `Float32Array`

将向量按标量相乘并返回新的向量

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 源向量（Float32Array，长度为3） |
| `num` | `number` | 标量 |

#### Returns

`Float32Array`

新的向量（Float32Array，长度为3）

___

### normalize

▸ **normalize**(`v`): `void`

就地归一化向量（修改传入数组）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 将被归一化的向量（Float32Array，长度为3） |

#### Returns

`void`

___

### normalizeVector

▸ **normalizeVector**(`v`): `Float32Array`

返回归一化后的新向量，不修改输入

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 源向量（Float32Array，长度为3） |

#### Returns

`Float32Array`

新的单位向量（Float32Array，长度为3），若长度接近 0 则返回全 0 向量

___

### reverse

▸ **reverse**(`v`): `void`

就地取反向量（每个分量取负）

#### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `v` | `Float32Array` | 将被取反的向量（Float32Array，长度为3） |

#### Returns

`void`
