Use lower-case parameter names even for matrices

This commit is contained in:
Petr Sloup
2015-10-16 15:45:34 +02:00
parent 32fa3501df
commit 70021be919
+16 -16
View File
@@ -81,16 +81,16 @@ ol.math.squaredDistance = function(x1, y1, x2, y2) {
/** /**
* Solves system of linear equations using Gaussian elimination method. * Solves system of linear equations using Gaussian elimination method.
* *
* @param {Array.<Array.<number>>} A Augmented matrix (n x n + 1 column) * @param {Array.<Array.<number>>} mat Augmented matrix (n x n + 1 column)
* in row-major order. * in row-major order.
* @return {Array.<number>} The resulting vector. * @return {Array.<number>} The resulting vector.
*/ */
ol.math.solveLinearSystem = function(A) { ol.math.solveLinearSystem = function(mat) {
var n = A.length; var n = mat.length;
if (goog.asserts.ENABLE_ASSERTS) { if (goog.asserts.ENABLE_ASSERTS) {
for (var row = 0; row < n; row++) { for (var row = 0; row < n; row++) {
goog.asserts.assert(A[row].length == n + 1, goog.asserts.assert(mat[row].length == n + 1,
'every row should have correct number of columns'); 'every row should have correct number of columns');
} }
} }
@@ -98,9 +98,9 @@ ol.math.solveLinearSystem = function(A) {
for (var i = 0; i < n; i++) { for (var i = 0; i < n; i++) {
// Find max in the i-th column (ignoring i - 1 first rows) // Find max in the i-th column (ignoring i - 1 first rows)
var maxRow = i; var maxRow = i;
var maxEl = Math.abs(A[i][i]); var maxEl = Math.abs(mat[i][i]);
for (var r = i + 1; r < n; r++) { for (var r = i + 1; r < n; r++) {
var absValue = Math.abs(A[r][i]); var absValue = Math.abs(mat[r][i]);
if (absValue > maxEl) { if (absValue > maxEl) {
maxEl = absValue; maxEl = absValue;
maxRow = r; maxRow = r;
@@ -112,29 +112,29 @@ ol.math.solveLinearSystem = function(A) {
} }
// Swap max row with i-th (current) row // Swap max row with i-th (current) row
var tmp = A[maxRow]; var tmp = mat[maxRow];
A[maxRow] = A[i]; mat[maxRow] = mat[i];
A[i] = tmp; mat[i] = tmp;
// Subtract the i-th row to make all the remaining rows 0 in the i-th column // Subtract the i-th row to make all the remaining rows 0 in the i-th column
for (var j = i + 1; j < n; j++) { for (var j = i + 1; j < n; j++) {
var coef = -A[j][i] / A[i][i]; var coef = -mat[j][i] / mat[i][i];
for (var k = i; k < n + 1; k++) { for (var k = i; k < n + 1; k++) {
if (i == k) { if (i == k) {
A[j][k] = 0; mat[j][k] = 0;
} else { } else {
A[j][k] += coef * A[i][k]; mat[j][k] += coef * mat[i][k];
} }
} }
} }
} }
// Solve Ax=b for upper triangular matrix A // Solve Ax=b for upper triangular matrix A (mat)
var x = new Array(n); var x = new Array(n);
for (var l = n - 1; l >= 0; l--) { for (var l = n - 1; l >= 0; l--) {
x[l] = A[l][n] / A[l][l]; x[l] = mat[l][n] / mat[l][l];
for (var m = l - 1; m >= 0; m--) { for (var m = l - 1; m >= 0; m--) {
A[m][n] -= A[m][l] * x[l]; mat[m][n] -= mat[m][l] * x[l];
} }
} }
return x; return x;