https://github.com/gregoor/wacktor
Immutable 2D Vectors
https://github.com/gregoor/wacktor
immutable js vector vector2d
Last synced: about 1 year ago
JSON representation
Immutable 2D Vectors
- Host: GitHub
- URL: https://github.com/gregoor/wacktor
- Owner: Gregoor
- Created: 2015-05-17T21:20:45.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2016-11-02T00:37:07.000Z (over 9 years ago)
- Last Synced: 2025-03-03T13:17:54.617Z (about 1 year ago)
- Topics: immutable, js, vector, vector2d
- Language: JavaScript
- Homepage:
- Size: 11.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Wacktor
Solves the main pain points I have with the other vector libraries:
- vectors are not being mutated => every method returns a new vector
- methods accept vectors, objects, arrays and single numbers
```javascript
var Vector = require('Wacktor');
var v1 = new Vector(2, 3);
var v2 = new Vector([4, 2]);
var v2 = new Vector({x: 13, y: 37);
```
## Methods
### Iterable
```javascript
var v1 = new Vector(2, 3);
console.log(...v1); // 2, 3
var [x, y] = v1;
console.log(x); // 2
```
### add, sub, mul
The method signature is the same for each of these.
#### (Number n)
n will be applied to x & y
#### (Number nx, Number ny) OR ([Number nx, Number ny])
nx will be applied to x, ny to y
#### (Vector/Object v)
x of v will be applied to x, y of v to y
```javascript
v1.add(2); // (4, 5)
v1.add(2, 0); // (4, 3)
v1.mul([2, 5]); // (4, 15)
```
### magSq, mag
Returns the (squared) magnitude.
```javascript
new Vector(4, 3).mag(); // 5
```
### neg
```javascript
new Vector(12, 34).neg(); // (-12, -34)
```
### equals
Compares the vector with another vector, numbers, array or object.
### dist
Distance to another vector, numbers, array or object
### dot
### angle
### max