> ## Documentation Index
> Fetch the complete documentation index at: https://resq-dependabot-github-actions-github-actions-478e18be3d.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Distance

# Class: Distance

Defined in: [distance.ts:209](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L209)

Distance calculation utility class.

Provides multiple distance formulas for different use cases:

* **Geographic distances**: haversine, vincenty (for Earth coordinates)
* **Mathematical distances**: euclidean, manhattan, chebyshev, minkowski
* **Vector distances**: cosine, hamming
* **Set distances**: jaccard, sorensen-dice

## Constructors

### Constructor

> **new Distance**(): `Distance`

#### Returns

`Distance`

## Methods

### calculate()

> `static` **calculate**(`formula`, `point1`, `point2`, `options?`): `number`

Defined in: [distance.ts:419](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L419)

#### Parameters

##### formula

[`DistanceFormula`](../type-aliases/DistanceFormula)

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D) | [`Coordinates3D`](../interfaces/Coordinates3D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D) | [`Coordinates3D`](../interfaces/Coordinates3D)

##### options?

[`DistanceOptions`](../interfaces/DistanceOptions) = `{}`

#### Returns

`number`

***

### calculateSafe()

> `static` **calculateSafe**(`formula`, `point1`, `point2`, `options?`): [`DistanceResult`](../interfaces/DistanceResult)

Defined in: [distance.ts:455](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L455)

#### Parameters

##### formula

[`DistanceFormula`](../type-aliases/DistanceFormula)

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D) | [`Coordinates3D`](../interfaces/Coordinates3D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D) | [`Coordinates3D`](../interfaces/Coordinates3D)

##### options?

[`DistanceOptions`](../interfaces/DistanceOptions) = `{}`

#### Returns

[`DistanceResult`](../interfaces/DistanceResult)

***

### chebyshev()

> `static` **chebyshev**(`point1`, `point2`): `number`

Defined in: [distance.ts:327](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L327)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### cosine()

> `static` **cosine**(`point1`, `point2`): `number`

Defined in: [distance.ts:359](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L359)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### euclidean()

> `static` **euclidean**(`point1`, `point2`): `number`

Defined in: [distance.ts:210](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L210)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### hamming()

> `static` **hamming**(`point1`, `point2`): `number`

Defined in: [distance.ts:377](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L377)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### haversine()

> `static` **haversine**(`point1`, `point2`): `number`

Defined in: [distance.ts:219](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L219)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### haversineMeters()

> `static` **haversineMeters**(`point1`, `point2`): `number`

Defined in: [distance.ts:236](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L236)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### jaccard()

> `static` **jaccard**(`point1`, `point2`): `number`

Defined in: [distance.ts:389](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L389)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### manhattan()

> `static` **manhattan**(`point1`, `point2`): `number`

Defined in: [distance.ts:320](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L320)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### minkowski()

> `static` **minkowski**(`point1`, `point2`, `p?`): `number`

Defined in: [distance.ts:334](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L334)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

##### p?

`number` = `2`

#### Returns

`number`

***

### recommendGeoFormula()

> `static` **recommendGeoFormula**(`maxDistanceKm?`): [`DistanceFormula`](../type-aliases/DistanceFormula)

Defined in: [distance.ts:478](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L478)

#### Parameters

##### maxDistanceKm?

`number`

#### Returns

[`DistanceFormula`](../type-aliases/DistanceFormula)

***

### sorensenDice()

> `static` **sorensenDice**(`point1`, `point2`): `number`

Defined in: [distance.ts:404](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L404)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`

***

### threed()

> `static` **threed**(`point1`, `point2`): `number`

Defined in: [distance.ts:352](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L352)

#### Parameters

##### point1

[`Coordinates3D`](../interfaces/Coordinates3D)

##### point2

[`Coordinates3D`](../interfaces/Coordinates3D)

#### Returns

`number`

***

### vincenty()

> `static` **vincenty**(`point1`, `point2`): `number`

Defined in: [distance.ts:240](https://github.com/resq-software/npm/blob/fe2e20ae9db8398a0db1e3218edaabb3cf7004d6/packages/dsa/src/distance.ts#L240)

#### Parameters

##### point1

[`Coordinates2D`](../interfaces/Coordinates2D)

##### point2

[`Coordinates2D`](../interfaces/Coordinates2D)

#### Returns

`number`
