---
title: Namespace: MathUtils
source: https://vjmap.com/en/doc/Namespace_MathUtils.html
---

# Namespace: MathUtils

### Table of contents

#### Functions

- [clamp](#clamp)
- [easeInOutCubic](#easeinoutcubic)
- [equals](#equals)
- [isClamped](#isclamped)
- [lerp](#lerp)
- [map](#map)
- [max2](#max2)
- [min2](#min2)
- [smoothStep](#smoothstep)
- [smootherStep](#smootherstep)
- [wrap](#wrap)

### Functions

#### clamp

▸ **clamp**(`value`: *number*, `min`: *number*, `max`: *number*): *number*

Ensures that input value fits in a given range.

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `value` | *number* | The value to be clamped. |
| `min` | *number* | Minimum value. |
| `max` | *number* | Maximum value. |

**Returns:** *number*

Clamped value.

___

#### easeInOutCubic

▸ **easeInOutCubic**(`startValue`: *number*, `endValue`: *number*, `time`: *number*): *number*

Smoothly interpolates between two values using cubic formula

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `startValue` | *number* | - |
| `endValue` | *number* | - |
| `time` | *number* | - |

**Returns:** *number*

Result of the interpolation within the range of `[startValue, endValue]`

___

#### equals

▸ **equals**(`num1`: *number*, `num2`: *number*, `dotErr?`: *number*): *boolean*

判断两个数是否相等

##### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `num1` | *number* | - |  |
| `num2` | *number* | - |  |
| `dotErr` | *number* | 8 | 允许误差的小数点后几位，默认8位 |

**Returns:** *boolean*

___

#### isClamped

▸ **isClamped**(`value`: *number*, `lowerBound`: *number* \| *undefined*, `upperBound`: *number* \| *undefined*): *boolean*

Checks if the value of a given number is inside an upper or lower bound. The bounds may be
undefined, in which case their value is ignored.

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `value` | *number* | Value to check. |
| `lowerBound` | *number* \| *undefined* | The lower bound to check the value against. |
| `upperBound` | *number* \| *undefined* | The upper bound to check the value against. |

**Returns:** *boolean*

`true` if value is inside the bounds or if the bounds are `undefined`, `false`
         otherwise.

___

#### lerp

▸ **lerp**(`v1`: *number*, `v2`: *number*, `value`: *number*): *number*

线性插值

##### Parameters

| Name | Type |
| :------ | :------ |
| `v1` | *number* |
| `v2` | *number* |
| `value` | *number* |

**Returns:** *number*

___

#### map

▸ **map**(`val`: *number*, `inMin`: *number*, `inMax`: *number*, `outMin`: *number*, `outMax`: *number*): *number*

Maps a number from one range to another.

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `val` | *number* | The incoming value to be converted. |
| `inMin` | *number* | Lower bound of the value's current range. |
| `inMax` | *number* | Upper bound of the value's current range. |
| `outMin` | *number* | Lower bound of the value's target range. |
| `outMax` | *number* | Upper bound of the value's target range. |

**Returns:** *number*

___

#### max2

▸ **max2**(`a`: *number* \| *undefined*, `b`: *number* \| *undefined*): *number* \| *undefined*

Returns the larger of the two given numbers. Both numbers may be undefined, in which case
the result is undefined. If only one of the numbers is undefined, the other number is
returned.

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `a` | *number* \| *undefined* | First number. |
| `b` | *number* \| *undefined* | Second number. |

**Returns:** *number* \| *undefined*

___

#### min2

▸ **min2**(`a`: *number* \| *undefined*, `b`: *number* \| *undefined*): *number* \| *undefined*

Returns the smaller of the two given numbers. Both numbers may be undefined, in which case
the result is undefined. If only one of the numbers is undefined, the other number is
returned.

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `a` | *number* \| *undefined* | First number. |
| `b` | *number* \| *undefined* | Second number. |

**Returns:** *number* \| *undefined*

___

#### smoothStep

▸ **smoothStep**(`edge0`: *number*, `edge1`: *number*, `x`: *number*): *number*

Returns a smooth interpolation between the values edge0 and edge1 based on the interpolation
factor x. `0 <= x <= 1`.

**`see`** https://en.wikipedia.org/wiki/Smoothstep

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `edge0` | *number* | - |
| `edge1` | *number* | - |
| `x` | *number* | - |

**Returns:** *number*

___

#### smootherStep

▸ **smootherStep**(`edge0`: *number*, `edge1`: *number*, `x`: *number*): *number*

Returns a smooth interpolation between the values edge0 and edge1 based on the interpolation
factor x. `0 <= x <= 1`.

Improved version by Ken Perlin, which has zero 1st- and 2nd-order derivatives at `x = 0` and
`x = 1`:

**`see`** https://en.wikipedia.org/wiki/Smoothstep

##### Parameters

| Name | Type | Description |
| :------ | :------ | :------ |
| `edge0` | *number* | - |
| `edge1` | *number* | - |
| `x` | *number* | - |

**Returns:** *number*

___

#### wrap

▸ **wrap**(`n`: *number*, `min`: *number*, `max`: *number*, `isMin?`: *boolean*): *number*

constrain n to the given range, excluding the minimum, via modular arithmetic

##### Parameters

| Name | Type | Default value | Description |
| :------ | :------ | :------ | :------ |
| `n` | *number* | - | value |
| `min` | *number* | - | the minimum value to be returned, (isMin is false, exclusive, is true inclusive) |
| `max` | *number* | - | the maximum value to be returned, (isMin is false, inclusive, is true exclusive) |
| `isMin` | *boolean* | false |  |

**Returns:** *number*

number


<a name="modulesquatmd"></a>

[vjmap](#readmemd) / [Exports](#modulesmd) / quat
