@leodeslf/vec.js
v3.0.1
Published
JavaScript vector library
Downloads
182
Maintainers
Readme
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/[email protected]
https://cdn.jsdelivr.net/npm/@leodeslf/[email protected]
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.