UNPKG

sigma

Version:

A JavaScript library dedicated to graph drawing.

56 lines (55 loc) 1.6 kB
"use strict"; /** * Sigma.js WebGL Matrices Helpers * ================================ * * Matrices-related helper functions used by sigma's WebGL renderer. * @module */ Object.defineProperty(exports, "__esModule", { value: true }); exports.multiply = exports.translate = exports.rotate = exports.scale = exports.identity = void 0; function identity() { return Float32Array.of(1, 0, 0, 0, 1, 0, 0, 0, 1); } exports.identity = identity; // TODO: optimize function scale(m, x, y) { m[0] = x; m[4] = typeof y === "number" ? y : x; return m; } exports.scale = scale; function rotate(m, r) { var s = Math.sin(r), c = Math.cos(r); m[0] = c; m[1] = s; m[3] = -s; m[4] = c; return m; } exports.rotate = rotate; function translate(m, x, y) { m[6] = x; m[7] = y; return m; } exports.translate = translate; function multiply(a, b) { var a00 = a[0], a01 = a[1], a02 = a[2]; var a10 = a[3], a11 = a[4], a12 = a[5]; var a20 = a[6], a21 = a[7], a22 = a[8]; var b00 = b[0], b01 = b[1], b02 = b[2]; var b10 = b[3], b11 = b[4], b12 = b[5]; var b20 = b[6], b21 = b[7], b22 = b[8]; a[0] = b00 * a00 + b01 * a10 + b02 * a20; a[1] = b00 * a01 + b01 * a11 + b02 * a21; a[2] = b00 * a02 + b01 * a12 + b02 * a22; a[3] = b10 * a00 + b11 * a10 + b12 * a20; a[4] = b10 * a01 + b11 * a11 + b12 * a21; a[5] = b10 * a02 + b11 * a12 + b12 * a22; a[6] = b20 * a00 + b21 * a10 + b22 * a20; a[7] = b20 * a01 + b21 * a11 + b22 * a21; a[8] = b20 * a02 + b21 * a12 + b22 * a22; return a; } exports.multiply = multiply;