-
Notifications
You must be signed in to change notification settings - Fork 122
/
Copy pathdeterminant.js
51 lines (49 loc) · 1.54 KB
/
determinant.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/**
* Function: MatrixDeterminant2x2
* Description: Calculates the determinant of a 2x2 matrix.
* Parameters:
* m00..m11 {4 numbers} the matrix values
* Returns:
* {number} the result
*/
JSM.MatrixDeterminant2x2 = function (m00, m01,
m10, m11)
{
return m00 * m11 - m01 * m10;
};
/**
* Function: MatrixDeterminant3x3
* Description: Calculates the determinant of a 3x3 matrix.
* Parameters:
* m00..m22 {9 numbers} the matrix values
* Returns:
* {number} the result
*/
JSM.MatrixDeterminant3x3 = function (m00, m01, m02,
m10, m11, m12,
m20, m21, m22)
{
var subDet1 = JSM.MatrixDeterminant2x2 (m11, m12, m21, m22);
var subDet2 = JSM.MatrixDeterminant2x2 (m10, m12, m20, m22);
var subDet3 = JSM.MatrixDeterminant2x2 (m10, m11, m20, m21);
return m00 * subDet1 - m01 * subDet2 + m02 * subDet3;
};
/**
* Function: MatrixDeterminant4x4
* Description: Calculates the determinant of a 4x4 matrix.
* Parameters:
* m00..m33 {16 numbers} the matrix values
* Returns:
* {number} the result
*/
JSM.MatrixDeterminant4x4 = function (m00, m01, m02, m03,
m10, m11, m12, m13,
m20, m21, m22, m23,
m30, m31, m32, m33)
{
var subDet1 = JSM.MatrixDeterminant3x3 (m11, m12, m13, m21, m22, m23, m31, m32, m33);
var subDet2 = JSM.MatrixDeterminant3x3 (m10, m12, m13, m20, m22, m23, m30, m32, m33);
var subDet3 = JSM.MatrixDeterminant3x3 (m10, m11, m13, m20, m21, m23, m30, m31, m33);
var subDet4 = JSM.MatrixDeterminant3x3 (m10, m11, m12, m20, m21, m22, m30, m31, m32);
return subDet1 * m00 - subDet2 * m01 + subDet3 * m02 - subDet4 * m03;
};