. .
<--------\ /-------->
<-------\. ./------->
<------\\ //------>
<-----\\. .//----->
<----\\\ ///---->
<---\\\ ///--->
<--\\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.jspnpm i @leodeslf/vec.jsyarn add @leodeslf/vec.jsbun i @leodeslf/vec.jshttps://unpkg.com/@leodeslf/vec.jshttps://cdn.jsdelivr.net/npm/@leodeslf/vec.jsMost 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 |
|---|---|---|---|
angleW |
✓* | ||
angleX |
✓ | ✓* | ✓* |
angleY |
✓ | ✓* | ✓* |
angleZ |
✓* | ✓* | |
magnitude |
✓ | ✓ | ✓ |
magnitudeSq* |
✓ | ✓ | ✓ |
w |
✓ | ||
x |
✓ | ✓ | ✓ |
y |
✓ | ✓ | ✓ |
z |
✓ | ✓ |
*Property is readonly.
To set/get components straight as/from arrays.
| Name | Vec2 |
Vec3 |
Vec4 |
|---|---|---|---|
xy |
✓ | ||
xyz |
✓ | ||
xyzw |
✓ |
For 3D and 4D vector components and shortcuts.
| (Name) Alias | Vec3 |
Vec4 |
|---|---|---|
(w) a |
✓ | |
(x) r |
✓ | ✓ |
(y) g |
✓ | ✓ |
(z) b |
✓ | ✓ |
(xyz) rgb |
✓ | |
(xyzw) rgba |
✓ |
| Name | Vec2 |
Vec3 |
Vec4 |
|---|---|---|---|
add |
✓ | ✓ | ✓ |
angleBetween |
✓ | ✓ | ✓ |
cross |
✓ | ||
distance |
✓ | ✓ | ✓ |
distanceChebyshev* |
✓ | ✓ | ✓ |
distanceManhattan* |
✓ | ✓ | ✓ |
distanceMinkowski* |
✓ | ✓ | ✓ |
distanceSq |
✓ | ✓ | ✓ |
dot |
✓ | ✓ | ✓ |
immutable* |
✓ | ✓ | ✓ |
lerp* |
✓ | ✓ | ✓ |
negate |
✓ | ✓ | ✓ |
normalize |
✓ | ✓ | ✓ |
project |
✓ | ✓ | ✓ |
rotateX |
✓ | ||
rotateY |
✓ | ||
rotateZ |
✓ | ✓ | |
scale |
✓ | ✓ | ✓ |
subtract |
✓ | ✓ | ✓ |
zero |
✓ | ✓ | ✓ |
*Static method only.
| Name | Vec2 |
Vec3 |
Vec4 |
|---|---|---|---|
clone |
✓ | ✓ | ✓ |
copy |
✓ | ✓ | ✓ |
fromCylindricalCoords* |
✓ | ||
fromPolarCoords* |
✓ | ||
fromSphericalCoords* |
✓ | ||
random |
✓ | ✓ | ✓ |
*Static method only.
| Name | Vec2 |
Vec3 |
Vec4 |
|---|---|---|---|
satisfyEquality |
✓ | ✓ | ✓ |
satisfyOpposition |
✓ | ✓ | ✓ |
isInfinite |
✓ | ✓ | ✓ |
isNaN |
✓ | ✓ | ✓ |
isZero |
✓ | ✓ | ✓ |
| Name | Vec2 |
Vec3 |
Vec4 |
|---|---|---|---|
limitMax |
✓ | ✓ | ✓ |
limitMin |
✓ | ✓ | ✓ |
clamp |
✓ | ✓ | ✓ |
| Name | Vec2 |
Vec3 |
Vec4 |
|---|---|---|---|
lookAt |
✓ | ✓ | ✓ |
turnLeft |
✓ | ||
turnRight |
✓ |
Copyright (c) Leonardo de S. Leal F., 2018-present.
MIT License.