# @mapbox/point-geometry

> a point geometry with transforms

Latest version **1.1.0** (published 2024-07-16) · ISC license · 5.7M weekly downloads

## Install

```sh
npm install @mapbox/point-geometry
pnpm add @mapbox/point-geometry
yarn add @mapbox/point-geometry
bun add @mapbox/point-geometry
```

## Health

**Score 60/100 (C)** — status: abandoned.

Positive: high downloads; has types; esm support; no vulnerabilities; high quality score.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2024-07-16 |
| First published | 2017-04-21 |
| Weekly downloads | 5.7M |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 23.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 37 |
| Author | Tom MacWright |
| Maintainers | mbx-npm-ci-production, mbx-npm-ci-staging, mbx-npm-advanced-actions-production, mbx-npm-advanced-actions-staging, mbx-npm-09-production, mbx-npm-08-production, mbx-npm-07-production, mbx-npm-06-production, mbx-npm-05-production, mbx-npm-04-production, mbx-npm-03-production, mbx-npm-02-production, mbx-npm-01-production, mbx-npm-02-staging, mapbox-npm-01, mapbox-npm-02, mapbox-npm-07, mapbox-npm-03, mapbox-npm-04, mapbox-npm-09, mapbox-npm-05, mapbox-npm-06, mapbox-npm-08, mapbox-npm-advanced-actions, mapbox-npm-ci, mapbox-npm, mapbox-admin, mapbox-machine-user |
| Keywords | point, geometry, primitive |

## Links

- npm: https://www.npmjs.com/package/@mapbox/point-geometry
- Repository: https://github.com/mapbox/point-geometry
- Issues: https://github.com/mapbox/point-geometry/issues
- npm.io page: https://npm.io/package/@mapbox/point-geometry

## Recent versions

- 1.1.0 (latest) — 2024-07-16
- 1.0.0 — 2024-07-11
- 0.1.0 — 2017-04-21

## README

# @mapbox/point-geometry

A `Point` class for representing point geometry with useful utility methods.

## Installation

```sh
$ npm install @mapbox/point-geometry
```

## API

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Point

A standalone point geometry with useful accessor, comparison, and
modification methods.

#### Parameters

*   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** the x-coordinate. This could be longitude or screen pixels, or any other sort of unit.
*   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** the y-coordinate. This could be latitude or screen pixels, or any other sort of unit.

#### Examples

```javascript
const point = new Point(-77, 38);
```

#### clone

Clone this point, returning a new point that can be modified
without affecting the old one.

Returns **[Point](#point)** the clone

#### add

Add this point's x & y coordinates to another point,
yielding a new point.

##### Parameters

*   `p` **[Point](#point)** the other point

Returns **[Point](#point)** output point

#### sub

Subtract this point's x & y coordinates to from point,
yielding a new point.

##### Parameters

*   `p` **[Point](#point)** the other point

Returns **[Point](#point)** output point

#### multByPoint

Multiply this point's x & y coordinates by point,
yielding a new point.

##### Parameters

*   `p` **[Point](#point)** the other point

Returns **[Point](#point)** output point

#### divByPoint

Divide this point's x & y coordinates by point,
yielding a new point.

##### Parameters

*   `p` **[Point](#point)** the other point

Returns **[Point](#point)** output point

#### mult

Multiply this point's x & y coordinates by a factor,
yielding a new point.

##### Parameters

*   `k` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** factor

Returns **[Point](#point)** output point

#### div

Divide this point's x & y coordinates by a factor,
yielding a new point.

##### Parameters

*   `k` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** factor

Returns **[Point](#point)** output point

#### rotate

Rotate this point around the 0, 0 origin by an angle a,
given in radians

##### Parameters

*   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** angle to rotate around, in radians

Returns **[Point](#point)** output point

#### rotateAround

Rotate this point around p point by an angle a,
given in radians

##### Parameters

*   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** angle to rotate around, in radians
*   `p` **[Point](#point)** Point to rotate around

Returns **[Point](#point)** output point

#### matMult

Multiply this point by a 4x1 transformation matrix

##### Parameters

*   `m` **\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** transformation matrix

Returns **[Point](#point)** output point

#### unit

Calculate this point but as a unit vector from 0, 0, meaning
that the distance from the resulting point to the 0, 0
coordinate will be equal to 1 and the angle from the resulting
point to the 0, 0 coordinate will be the same as before.

Returns **[Point](#point)** unit vector point

#### perp

Compute a perpendicular point, where the new y coordinate
is the old x coordinate and the new x coordinate is the old y
coordinate multiplied by -1

Returns **[Point](#point)** perpendicular point

#### round

Return a version of this point with the x & y coordinates
rounded to integers.

Returns **[Point](#point)** rounded point

#### mag

Return the magnitude of this point: this is the Euclidean
distance from the 0, 0 coordinate to this point's x and y
coordinates.

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** magnitude

#### equals

Judge whether this point is equal to another point, returning
true or false.

##### Parameters

*   `other` **[Point](#point)** the other point

Returns **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** whether the points are equal

#### dist

Calculate the distance from this point to another point

##### Parameters

*   `p` **[Point](#point)** the other point

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** distance

#### distSqr

Calculate the distance from this point to another point,
without the square root step. Useful if you're comparing
relative distances.

##### Parameters

*   `p` **[Point](#point)** the other point

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** distance

#### angle

Get the angle from the 0, 0 coordinate to this point, in radians
coordinates.

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** angle

#### angleTo

Get the angle from this point to another point, in radians

##### Parameters

*   `b` **[Point](#point)** the other point

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** angle

#### angleWith

Get the angle between this point and another point, in radians

##### Parameters

*   `b` **[Point](#point)** the other point

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** angle

#### angleWithSep

Find the angle of the two vectors, solving the formula for
the cross product a x b = |a||b|sin(θ) for θ.

##### Parameters

*   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** the x-coordinate
*   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** the y-coordinate

Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** the angle in radians

#### convert

Construct a point from an array if necessary, otherwise if the input
is already a Point, or an unknown type, return it unchanged

##### Parameters

*   `a` **(\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)] | [Point](#point))** any kind of input value

##### Examples

```javascript
// this
var point = Point.convert([0, 1]);
// is equivalent to
var point = new Point(0, 1);
```

Returns **[Point](#point)** constructed point, or passed-through value.

---
_Source: https://npm.io/package/@mapbox/point-geometry · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
