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

# Class: DVector

双精度向量（Float64Array，长度为3）工具类

提供与 `Vector` 类似的功能，但使用双精度浮点数以提高数值稳定性。

## Table of contents

### Constructors

- [constructor](DVector.md#constructor)

### Methods

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

## Constructors

### constructor

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

#### Returns

[`DVector`](DVector.md)

## Methods

### angle

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

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

#### Parameters

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

#### Returns

`number`

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

___

### clone

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

克隆双精度向量并返回新实例

#### Parameters

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

#### Returns

`Float64Array`

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

___

### cross

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

双精度向量叉乘（返回新向量）

#### Parameters

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

#### Returns

`Float64Array`

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

___

### divide

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

将双精度向量按标量除并返回新的向量

#### Parameters

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

#### Returns

`Float64Array`

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

___

### includeAngle

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

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

#### Parameters

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

#### Returns

`number`

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

___

### isZero

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

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

#### Parameters

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

#### Returns

`boolean`

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

___

### module

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

计算双精度向量长度（模）

#### Parameters

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

#### Returns

`number`

向量的模长

___

### multi

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

双精度向量点乘（标量积）

#### Parameters

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

#### Returns

`number`

标量点积

___

### multiply

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

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

#### Parameters

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

#### Returns

`Float64Array`

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

___

### normalize

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

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

#### Parameters

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

#### Returns

`void`

___

### normalizeVector

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

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

#### Parameters

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

#### Returns

`Float64Array`

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

___

### reverse

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

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

#### Parameters

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

#### Returns

`void`
