@leodeslf/vec.js v3.0.1
Vec.js
. .
<--------\ /-------->
<-------\. ./------->
<------\\ //------>
<-----\\. .//----->
<----\\\ ///---->
<---\\\ ///--->
<--\\Y//-->
<-\|/->
V
Table of contents
About
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.
Installation
npm i @leodeslf/vec.js
pnpm i @leodeslf/vec.js
yarn add @leodeslf/vec.js
CDNs
https://unpkg.com/@leodeslf/vec.js@3.0.1
https://cdn.jsdelivr.net/npm/@leodeslf/vec.js@3.0.1
Usage
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 }
Linear Algebra
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
add | ✓ | ✓ | ✓ |
angleBetween | ✓ | ✓ | ✓ |
cross | ✓ | ||
distance | ✓ | ✓ | ✓ |
distanceChebyshev | ✓ | ✓ | ✓ |
distanceManhattan | ✓ | ✓ | ✓ |
distanceMinkowski | ✓ | ✓ | ✓ |
distanceSq | ✓ | ✓ | ✓ |
dot | ✓ | ✓ | ✓ |
lerp | ✓ | ✓ | ✓ |
negate | ✓ | ✓ | ✓ |
normalize | ✓ | ✓ | ✓ |
project | ✓ | ✓ | ✓ |
rotateX | ✓ | ||
rotateY | ✓ | ||
rotateZ | ✓ | ✓ | |
scale | ✓ | ✓ | ✓ |
subtract | ✓ | ✓ | ✓ |
Copying & Creating
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
clone | ✓ | ✓ | ✓ |
copy | ✓ | ✓ | ✓ |
fromCylindricalCoords | ✓ | ||
fromPolarCoords | ✓ | ||
fromSphericalCoords | ✓ | ||
random | ✓ | ✓ | ✓ |
Boolean Conditions
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
satisfyEquality | ✓ | ✓ | ✓ |
satisfyOpposition | ✓ | ✓ | ✓ |
isInfinite | ✓ | ✓ | ✓ |
isNaN | ✓ | ✓ | ✓ |
isZero | ✓ | ✓ | ✓ |
Magnitude Manipulation
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
limitMax | ✓ | ✓ | ✓ |
limitMin | ✓ | ✓ | ✓ |
clamp | ✓ | ✓ | ✓ |
zero | ✓ | ✓ | ✓ |
Miscellaneous
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
lookAt | ✓ | ✓ | ✓ |
turnLeft | ✓ | ||
turnRight | ✓ |
Getters & Setters
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
angleW | ✓* | ||
angleX | ✓ | ✓* | ✓* |
angleY | ✓ | ✓* | ✓* |
angleZ | ✓* | ✓* | |
magnitude | ✓ | ✓ | ✓ |
magnitudeSq | ✓* | ✓* | ✓* |
a (alias for w ) | ✓ | ||
r (alias for x ) | ✓ | ✓ | ✓ |
g (alias for y ) | ✓ | ✓ | ✓ |
b (alias for z ) | ✓ | ✓ |
*read only.
Shortcuts
Use them to get
/set
components as/from arrays.
Name | Vec2 | Vec3 | Vec4 |
---|---|---|---|
xy | ✓ | ||
xyz (or alias rgb ) | ✓ | ||
xyzw (or alias rgba ) | ✓ |
Author
Copyright (c) Leonardo de S.L.F, 2018-present.
License
MIT License.
19 days ago
9 months ago
9 months ago
9 months ago
1 year ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago