Nighttime Possum Meandering

# npm

Wondering what’s next for npm?Check out our public roadmap! »

## ella-math 0.4.7 • Public • Published

# Ella

Geometry and linear algebra library that provides basic vector and matrix calculus operations.

## Features

Features:

• vector addition, subtraction, scalar multiplication, dot product, cross product
• calculate vector length
• normalize vector
• matrix multiplication, determinant, inverse implementations for mat2, mat3, mat4
• translation and projection matrices (perspective and orthogonal projection)
• matrix vector multiplication
• basic geometry shapes

## Install and usage

You can either import ella via NPM or directly use it via script tag.

### NPM:

First, run: `npm i ella-math`

```import { Vec, Mat, Mat4 } from 'ella-math';

const a = new Vec(1, 2, 3);
const b = new Vec(2, 3, 4);

console.log('a + b = ', a.add(b));
console.log('a dot b = ', a.dot(b));
console.log('a cross b = ', a.cross(b));

// Define a matrix
// heads up: it's the other way round as you would write it down on paper

// prettier-ignore
const m = new Mat([
1, 2, 3, // column 1
4, 5, 6, // column 2
7, 8, 9, // column 3
]);

const mDet = m.determinant(); // 0
const mInv = m.inverse();
console.assert(
mInv.isFinite() === false,
'As the determinant of m is 0, there is no inverse of m.'
);

const mA = Mat4.identity();
// create a 4x4 translation matrix
const mB = Mat4.translation(-1, -2, -3);
// create a 4x4 scaling matrix
const mC = Mat4.scaling(2, 4, 6);
// matrix multiplication
const mD = mA.mul(mB);
console.assert(mD.equals(mB), 'mA * mB should equal mB');
const mE = mD.mul(mC);
// matrix division is like multiplication with its inverse
const mF = mE.div(mC);

console.assert(mF.isFinite(), 'mF should be finite.');
console.assert(mF.equals(mD), 'mF should be equal to mD');

// the equality check may sometimes fail in JS due
// to floating point arithmetics (.1+.2 !== .3 issue)
// roughlyEquals checks with a tolerance of 1e-14
console.assert(mF.roughlyEquals(mD), 'mF should be roughly equal to mD');```

### Directly in the browser

Add this script tag: `<script src="https://unpkg.com/ella-math@latest/dist/ella.umd.js"></script>`

`const { Vec, Mat } = Ella;`

## Keywords

### Install

`npm i ella-math`

49

0.4.7

MIT

153 kB

17

### Homepage

terabaud.github.io/ella-math/

### Repository

git+https://github.com/terabaud/ella-math/.git