UNPKG

sigma

Version:

A JavaScript library aimed at visualizing graphs of thousands of nodes and edges.

62 lines (61 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.multiplyVec2 = 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; function multiplyVec2(a, b, z) { if (z === void 0) { z = 1; } var a00 = a[0]; var a01 = a[1]; var a10 = a[3]; var a11 = a[4]; var a20 = a[6]; var a21 = a[7]; var b0 = b.x; var b1 = b.y; return { x: b0 * a00 + b1 * a10 + a20 * z, y: b0 * a01 + b1 * a11 + a21 * z }; } exports.multiplyVec2 = multiplyVec2;