@omjs/matrix2d

CSS tranform-2D matrix

Usage no npm install needed!

<script type="module">
  import omjsMatrix2d from 'https://cdn.skypack.dev/@omjs/matrix2d';
</script>

README

Matrix2D

A class derived from @omjs/iterable for describing css 2D-transformation, which is featured by ECMAScript 2015 and Immutable, where a polyfill for Symbol is needed for old browsers.

  • Now version: 1.0.0

  • Publish date: 2018.06.08

Source Code 👉

INSTALL

npm

npm i @omjs/matrix2d

browser

<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>
<script src="node_modules/@omjs/matrix2d/dist/matrix2D.min.js"></script>

USAGE

import { Matrix2D } from '@omjs/matrix2d';

QUICK START

import { Matrix2D, lmul } from '@omjs/matrix2d';
let mat1 = new Matrix2D(1, 0, 0, 1, 0, 0); // constructor => matrix(1,0,0,1,0,0)
// using babel-plugin-transform-function-bind
let mat2 = mat1::lmul([-1, 0, 0, -1, 0, 0]); // matrix muliply => matrix(-1,0,0,-1,0,0)
mat2.toString(); // => matrix(-1,0,0,-1,0,0)

LICENCE

MIT 👉


APIs

Contructor

Serveral Numbers, Number Arrays or Strings are allowed to create a Matrix2D Object.

Matrix2D([a=1],[b=0],[c=0],[d=1],[tx=0],[ty=0])

Matrix2D([array, [...]])

Matrix2D([string, [...]])

e.g.

let mat1 = new Matrix2D(); // matrix(1,0,0,1,0,0)
let mat2 = new Matrix2D(1, 0, 0, 1, 0, 0); // matrix(1,0,0,1,0,0)
let mat3 = new Matrix2D([1, 0, 0, 1, 0, 0]); // matrix(1,0,0,1)
let mat4 = new Matrix2D('matrix(1,0,0,1,0,0)'); // matrix(1,0,0,1,0,0)
let mat5 = new Matrix2D(mat1); // matrix(1,0,0,1,0,0)

Static Properties

Matrix2D.MUL_DIR

The direction of multiply.

  • Matrix2D.MUL_DIR.L - left
  • Matrix2D.MUL_DIR.R - Right

Matrix2D.ROTATE_DIR

The direction of rotate.

  • Matrix2D.ROTATE_DIR.CW - clockwise
  • Matrix2D.ROTATE_DIR.ACW - anticlockwise

version: string

The code version, current version is 1.0.0;

Properties

[]

Get the matrix's data by index.

e.g.

let mat = new Matrix2D();
mat[0]; // 1
mat[1]; // 0
mat[2]; // 0
mat[3]; // 1
mat[4]; // 0
mat[5]; // 0

Static Methods

Matrix2D.isMatrix2D(obj: any) => boolean

Check whether the obj's type is matrix2d or not;

e.g.

let mat = new Matrix2D(1, 0, 0, 1, 0, 0);
Matrix2D.isMatrix2D(mat); // true
Matrix2D.isMatrix2D([1, 0, 0, 1, 0, 0]); // false

Methods

toString() => string

Convert to string.

e.g.

let mat = new Matrix2D(1, 0, 0, 1, 0, 0);
mat.toString(); // matrix(1,0,0,1,0,0)

valueOf() => Array(6)

Get the value of matrix2d object

e.g.

let mat = new Matrix2D();
mat.valueOf(); // [1,0,0,1,0,0]

clone() => Matrix2D

Get a deep clone.

e.g.

let mat = new Matrix2D();
mat.clone(); // matrix(1,0,0,1,0,0);
mat == mat.clone(); // false

Operations

lmul(mat: Matrix2D | Array) => Matrix2D

Pre-multiplied by given matrix, and return a new Matrix2D, used to compose transformation.

e.g.

let mat = new Matrix2d();
mat::lmul([-1, 0, 0, -1, 0, 0]); // matrix(-1,0,0,-1,0,0)

rmul(mat: Matrix2D | Array) => Matrix2D

Post-multiplied by given matrix, and return a new Matrix2D, used to compose transformation.

e.g.

let mat = new Matrix2d();
mat::rmul([-1, 0, 0, -1, 0, 0]); // matrix(-1,0,0,-1,0,0)

mul(mat: Matrix2D | Array, dir: Matrix2D.MUL_DIR) => Matrix2D

Multiplied by given matrix and direction, and return a new Matrix2D, used to compose transformation.

e.g.

let mat = new Matrix2d();
mat::mul([-1, 0, 0, -1, 0, 0], Matrix2D.MUL_DIR.L); // matrix(-1,0,0,-1,0,0)

Click here to read the full APIs 👉