. .
<--------\ /-------->
<-------\. ./------->
<------\\ //------>
<-----\\. .//----->
<----\\\ ///---->
<---\\\ ///--->
<--\\Y//-->
<-\|/->
V
JavaScript vector library.
A set of classes that provide functionality related to basic linear-algebra, geometry, and more, for 2, 3, and 4-dimensional vectors.
npm i @leodeslf/vec.js
pnpm i @leodeslf/vec.js
yarn add @leodeslf/vec.js
bun i @leodeslf/vec.js
https://unpkg.com/@leodeslf/vec.js
https://cdn.jsdelivr.net/npm/@leodeslf/vec.js
Most methods are available as both instance and static
members. The ones that modify the current vector return this
, thus we can chain method calls. Other than e.g.: vector.x
, vector.y
, and vector.xy
(as an array), vectors are iterable, so it's possible to iterate trough their components using for-of
or spread operator (e.g.: ...vector
).
// E.g.:
import { Vec2 } from '@leodeslf/vec.js';
const position = new Vec2(1, 1.8);
const target = new Vec2(1, 10);
const distance = position.distance(target); // 8.2
const direction = Vec2.subtract(target, position).normalize(); // { x: 0, y: 1 }
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
add |
✓ | ✓ | ✓ |
angleBetween |
✓ | ✓ | ✓ |
cross |
✓ | ||
distance |
✓ | ✓ | ✓ |
distanceChebyshev |
✓ | ✓ | ✓ |
distanceManhattan |
✓ | ✓ | ✓ |
distanceMinkowski |
✓ | ✓ | ✓ |
distanceSq |
✓ | ✓ | ✓ |
dot |
✓ | ✓ | ✓ |
immutable |
✓ | ✓ | ✓ |
lerp |
✓ | ✓ | ✓ |
negate |
✓ | ✓ | ✓ |
normalize |
✓ | ✓ | ✓ |
project |
✓ | ✓ | ✓ |
rotateX |
✓ | ||
rotateY |
✓ | ||
rotateZ |
✓ | ✓ | |
scale |
✓ | ✓ | ✓ |
subtract |
✓ | ✓ | ✓ |
zero |
✓ | ✓ | ✓ |
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
clone |
✓ | ✓ | ✓ |
copy |
✓ | ✓ | ✓ |
fromCylindricalCoords |
✓ | ||
fromPolarCoords |
✓ | ||
fromSphericalCoords |
✓ | ||
random |
✓ | ✓ | ✓ |
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
satisfyEquality |
✓ | ✓ | ✓ |
satisfyOpposition |
✓ | ✓ | ✓ |
isInfinite |
✓ | ✓ | ✓ |
isNaN |
✓ | ✓ | ✓ |
isZero |
✓ | ✓ | ✓ |
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
limitMax |
✓ | ✓ | ✓ |
limitMin |
✓ | ✓ | ✓ |
clamp |
✓ | ✓ | ✓ |
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
lookAt |
✓ | ✓ | ✓ |
turnLeft |
✓ | ||
turnRight |
✓ |
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
angleW |
✓* | ||
angleX |
✓ | ✓* | ✓* |
angleY |
✓ | ✓* | ✓* |
angleZ |
✓* | ✓* | |
magnitude |
✓ | ✓ | ✓ |
magnitudeSq * |
✓ | ✓ | ✓ |
w (or alias a ) |
✓ | ||
x (or alias r ) |
✓ | ✓ | ✓ |
y (or alias g ) |
✓ | ✓ | ✓ |
z (or alias b ) |
✓ | ✓ |
*readonly
.
Use them to get
/set
components as/from arrays.
Name | Vec2 |
Vec3 |
Vec4 |
---|---|---|---|
xy |
✓ | ||
xyz (or alias rgb ) |
✓ | ||
xyzw (or alias rgba ) |
✓ |
Copyright (c) Leonardo de S. Leal F., 2018-present.
MIT License.