# 2d-point

2D point object

## Usage no npm install needed!

``````<script type="module">
import dPoint from 'https://cdn.skypack.dev/2d-point';
</script>``````

# Installation

Available as a node package. To install use

``````\$ npm install 2d-point
``````

# Methods

The following methods are available.

# Use

#### create `Point.create(x, y)`

Creates a frozen 2D point. Defaults to origin coordinate if no arguments given.

``````var Point = require('2d-point');

var pt = Point.create(2, 4);
// => {x: 2, y: 4}

var origin = Point.create();
// => {x: 0, y: 0}
``````

#### add `Point.add(p, q)`

Vector add two points returning a new point.

``````var p = Point.create(2, 3);
var q = Point.create(4, 5);

// => {x: 6, y: 8}
``````

#### subtract `Point.subtract(p, q)`

Vector subtract two points returning a new point.

``````var p = Point.create(2, 3);
var q = Point.create(4, 5);

Point.subtract(p, q);
// => {x: -2, y: -2}
``````

#### multiply `Point.multiply(a, p)`

Vector scalar multiply a point returning a new point.

``````var a = 3;
var p = Point.create(2, 3);

Point.multiply(a, p);
// => {x: 6, y: 9}
``````

#### fitWithin `Point.fitWithin(container, vector)`

Scales vector to fit just within the bounding box of the container point.

``````var container = Point.create(2, 2);
var landscape = Point.create(8, 4);
var portrait = Point.create(0.5, 1);

Point.fitWithin(container, landscape);
// => {x: 2, y: 1}

Point.fitWithin(container, portrait);
// => {x: 1, y: 2}
``````

#### fitOnce `Point.fitWithin(container, vector)`

Scales vector to fit just within on dimension of the bounding box of the container point.

``````var container = Point.create(2, 2);
var landscape = Point.create(8, 4);
var portrait = Point.create(0.5, 1);

Point.fitWithin(container, landscape);
// => {x: 4, y: 2}

Point.fitWithin(container, portrait);
// => {x: 2, y: 4}
``````

## Considered extensions

• fit within to deal with zeros ?
• negate ?
• Curry methods ?
• comparison methods ?
• conditionally make svg point if available ? No
• tests in browser ? No
• dot product ?
• convert to radial ? No
• furthest ?
• nearest ?