@leodeslf/vec.js
TypeScript icon, indicating that this package has built-in type declarations

3.0.1 • Public • Published

Vec.js

version license

            .                 .
    <--------\               /-------->
      <-------\.           ./------->
        <------\\         //------>
          <-----\\.     .//----->
            <----\\\   ///---->
              <---\\\ ///--->
                <--\\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.

Package Sidebar

Install

npm i @leodeslf/vec.js

Weekly Downloads

51

Version

3.0.1

License

MIT

Unpacked Size

85.2 kB

Total Files

7

Last publish

Collaborators

  • leodeslf