'use strict'; var THREE = require('three'); /** * * @param terms * * | a b | * | c d | * * @returns {number} determinant */ function determinant2() { for (var _len = arguments.length, terms = new Array(_len), _key = 0; _key < _len; _key++) { terms[_key] = arguments[_key]; } var a = terms[0], b = terms[1], c = terms[2], d = terms[3]; return a * d - b * c; } /** * * @param terms * * | a b c | * | d e f | * | g h i | * * @returns {number} determinant */ function determinant3() { for (var _len2 = arguments.length, terms = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { terms[_key2] = arguments[_key2]; } var a = terms[0], b = terms[1], c = terms[2], d = terms[3], e = terms[4], f = terms[5], g = terms[6], h = terms[7], i = terms[8]; return a * e * i + b * f * g + c * d * h - c * e * g - b * d * i - a * f * h; } /** * * @param terms * * | a b c g | * | h i j k | * | l m n o | * * @returns {number} determinant */ function determinant4() { for (var _len3 = arguments.length, terms = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { terms[_key3] = arguments[_key3]; } terms[0]; terms[1]; terms[2]; terms[3]; terms[4]; terms[5]; terms[6]; terms[7]; terms[8]; terms[9]; terms[10]; terms[11]; terms[12]; terms[13]; terms[14]; // TODO } /** * * Get the determinant of matrix m without row r and col c * * @param {matrix} m Starter matrix * @param r row to remove * @param c col to remove * * | a b c | * m = | d e f | * | g h i | * * getMinor(m, 1, 1) would result in this determinant * * | a c | * | g i | * * @returns {number} determinant */ function getMinor(matrix, r, c) { var _matrixTranspose = matrix.clone().transpose(); var x = []; var l = _matrixTranspose.elements.length; var n = Math.sqrt(l); for (var i = 0; i < l; i++) { var element = _matrixTranspose.elements[i]; var row = Math.floor(i / n); var col = i % n; if (row !== r - 1 && col !== c - 1) { x.push(element); } } return determinant3.apply(void 0, x); } /** * */ function matrixSum3(m1, m2) { var sum = []; var m1Array = m1.toArray(); var m2Array = m2.toArray(); for (var i = 0; i < m1Array.length; i++) { sum[i] = m1Array[i] + m2Array[i]; } return new THREE.Matrix3().fromArray(sum); } var matrix = /*#__PURE__*/Object.freeze({ __proto__: null, determinant2: determinant2, determinant3: determinant3, determinant4: determinant4, getMinor: getMinor, matrixSum3: matrixSum3 }); exports.determinant2 = determinant2; exports.determinant3 = determinant3; exports.determinant4 = determinant4; exports.getMinor = getMinor; exports.matrix = matrix; exports.matrixSum3 = matrixSum3;