# point-geometry

> a point geometry with transforms

Latest version **0.1.0** (published 2016-10-14) · ISC license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install point-geometry
pnpm add point-geometry
yarn add point-geometry
bun add point-geometry
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2016-10-14 |
| First published | 2014-06-24 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 37 |
| Author | Tom MacWright |
| Maintainers | tmcw |
| Keywords | point, geometry, primitive |

## Links

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

## Recent versions

- 0.1.0 (latest) — 2016-10-14
- 0.0.0 — 2014-06-24

## README

# point-geometry

[![build status](https://secure.travis-ci.org/mapbox/point-geometry.png)](http://travis-ci.org/mapbox/point-geometry) [![Coverage Status](https://coveralls.io/repos/mapbox/point-geometry/badge.svg?branch=master)](https://coveralls.io/r/mapbox/point-geometry?branch=master)

a point geometry with transforms


### `Point(x, y)`

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


### Parameters

| parameter | type   | description                                                                            |
| --------- | ------ | -------------------------------------------------------------------------------------- |
| `x`       | Number | the x-coordinate. this could be longitude or screen pixels, or any other sort of unit. |
| `y`       | Number | the y-coordinate. this could be latitude or screen pixels, or any other sort of unit.  |


### Example

```js
var point = new Point(-77, 38);
```


### `clone`

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


**Returns** `Point`, the clone


### `add(p)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `p`       | Point | the other point |



**Returns** `Point`, output point


### `sub(p)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `p`       | Point | the other point |



**Returns** `Point`, output point


### `multByPoint(p)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `p`       | Point | the other point |



**Returns** `Point`, output point


### `divByPoint(p)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `p`       | Point | the other point |



**Returns** `Point`, output point


### `mult(k)`

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

### Parameters

| parameter | type  | description |
| --------- | ----- | ----------- |
| `k`       | Point | factor      |



**Returns** `Point`, output point


### `div(k)`

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

### Parameters

| parameter | type  | description |
| --------- | ----- | ----------- |
| `k`       | Point | factor      |



**Returns** `Point`, output point


### `rotate(a)`

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

### Parameters

| parameter | type   | description                        |
| --------- | ------ | ---------------------------------- |
| `a`       | Number | angle to rotate around, in radians |



**Returns** `Point`, output point


### `rotateAround(a, p)`

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

### Parameters

| parameter | type   | description                        |
| --------- | ------ | ---------------------------------- |
| `a`       | Number | angle to rotate around, in radians |
| `p`       | Point  | Point to rotate around             |



**Returns** `Point`, output point


### `matMult(m)`

Multiply this point by a 4x1 transformation matrix

### Parameters

| parameter | type              | description           |
| --------- | ----------------- | --------------------- |
| `m`       | Array\.\<Number\> | transformation matrix |



**Returns** `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`, 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`, perpendicular point


### `round`

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


**Returns** `Point`, rounded point


### `mag`

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


**Returns** `Number`, magnitude


### `equals(other)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `other`   | Point | the other point |



**Returns** `boolean`, whether the points are equal


### `dist(p)`

Calculate the distance from this point to another point

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `p`       | Point | the other point |



**Returns** `Number`, distance


### `distSqr(p)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `p`       | Point | the other point |



**Returns** `Number`, distance


### `angle`

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


**Returns** `Number`, angle


### `angleTo(b)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `b`       | Point | the other point |



**Returns** `Number`, angle


### `angleWith(b)`

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

### Parameters

| parameter | type  | description     |
| --------- | ----- | --------------- |
| `b`       | Point | the other point |



**Returns** `Number`, angle


### `angleWithSep(x, y)`

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

### Parameters

| parameter | type   | description      |
| --------- | ------ | ---------------- |
| `x`       | Number | the x-coordinate |
| `y`       | Number | the y-coordinate |



**Returns** `Number`, the angle in radians


### `convert(a)`

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

### Parameters

| parameter | type                     | description             |
| --------- | ------------------------ | ----------------------- |
| `a`       | Array\.\<Number\>\,Point | any kind of input value |


### Example

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


**Returns** `Point`, constructed point, or passed-through value.

## Installation

Requires [nodejs](http://nodejs.org/).

```sh
$ npm install point-geometry
```

## Tests

```sh
$ npm test
```

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