simple-2d-vectors
TypeScript icon, indicating that this package has built-in type declarations

1.0.6 • Public • Published

simple-2d-vectors

A lightweight TypeScript library for creating and manipulating 2d vectors. I created it because all vector libraries out there were either too old, depending on browser API or too heavy.

https://www.npmjs.com/package/simple-2d-vectors

https://github.com/lunarW1TCH/simple-2d-vectors

Quick start

import { Vector } from 'simple-2d-vectors';

const vector = new Vector([3, 4]);

Parameters

Most methods require you to pass a PointLike datatype, which is a union between a Vector, a Point and an ArrayPoint:

type PointLike = Vector | Point | ArrayPoint;
type Point = {
  x: number;
  y: number;
};
type ArrayPoint = [number, number];
class Vector implements Point {
  // ...
}

No matter which type you choose, the result will be the same.

const v1 = new Vector([3, 4]);
const v2 = new Vector({ x: 3, y: 4 });
const v3 = new Vector(v1);

Methods

Methods called on a vector object modify it in-place. To avoid changing the original object you can either first copy the vector or use the static version of a method (most methods have both static and non-static versions).

const vec = new Vector([3, 4]);

const copy1 = vec.copy();
const copy2 = new Vector(vec);

copy1.add([1, 2]); // `vec` isn't affected by this operation
copy2.add([1, 2]); // neither by this one

const newVector = Vector.add([3, 4], [1, 2]); // returns a new vector
Method Non-static Static Non-static params Static params Returns Description
copy() Vector Returns a copy of a vector.
add() param: Pointlike paramA: PointLike, paramB: PointLike Vector Sums individually x and y components.
subtract() param: Pointlike paramA: PointLike, paramB: PointLike Vector Subtracts x and y components from each other.
multiply() param: Pointlike paramA: PointLike, paramB: PointLike Vector Multiplies x and y components.
divide() param: Pointlike paramA: PointLike, paramB: PointLike Vector Divides x and y components.
invertX() Vector Inverts x component of a vector.
invertY() Vector Inverts y component of a vector.
invert() Vector Inverts both components of a vector.
magnitude() param: Pointlike number Returns magnitude/length of the vector.
setMagnitude() newMag: number param: Pointlike, newMag: number Vector Sets the magnitude/length of the vector to the provided value (>= 0) while keeping its direction.
normalize() param: Pointlike Vector Sets length/magnitude of a vector to 1 while keeping its direction.
rotateBy() radians: number param: Pointlike, radians: number Vector Rotates the vector by the provided value (in radians).
rotateByDeg() degrees: number param: Pointlike, degrees: number Vector Rotates the vector by the provided value (in degrees).
rotateTo() radians: number param: Pointlike, radians: number Vector Rotates vector to a provided angle (in radians), counting from the positive X axis, while keeping its magnitude.
rotateToDeg() degrees: number param: Pointlike, degrees: number Vector Rotates vector to a provided angle (in degrees), counting from the positive X axis, while keeping its magnitude.
dotProduct() param: PointLike paramA: Pointlike, paramB: PointLike number Returns a dot products of two vectors.
angle() param: PointLike number Returns the angle (in radians) between any Vector(x, 0) and the original vector, where x is positive.
angleDeg() param: PointLike number Returns the angle (in degrees) between any Vector(x, 0) and the original vector, where x is positive.
angleBetween() param: PointLike paramA: Pointlike, paramB: PointLike number Returns the angle (in radians) between original vector and provided vector.
angleBetweenDeg() param: PointLike paramA: Pointlike, paramB: PointLike number Returns the angle (in degrees) between original vector and provided vector.
toString() string Returns a string representation of a vector '(x, y)'.
toPoint() Point Returns x and y components as a Point.
toArray() ArrayPoint Returns x and y components as an ArrayPoint.
fromPoints() paramA: Pointlike, paramB: PointLike Vector Returns a vector which is a path between two provided points.
fromAngle() radians: number, length?: number Vector Returns a vector with a provided angle (in radians) counting from positive X axis. Length is optional and defaults to 1.

Properties

Property Type Description
x number x component of a Vector
y number y component of a Vector

Package Sidebar

Install

npm i simple-2d-vectors

Weekly Downloads

3

Version

1.0.6

License

none

Unpacked Size

147 kB

Total Files

44

Last publish

Collaborators

  • lunarw1tch