Matrix3f.invert() returns null on failure

This commit is contained in:
Elias Naur 2003-08-12 10:36:00 +00:00
parent c003893fa5
commit f348be1033
1 changed files with 15 additions and 17 deletions

View File

@ -364,13 +364,11 @@ public class Matrix3f extends Matrix implements Serializable {
/** /**
* Invert this matrix * Invert this matrix
* @return this * @return this if successful, null otherwise
*/ */
public Matrix invert() public Matrix invert()
{ {
float determinant = m00 * (m11 * m22 - m12 * m21) float determinant = determinant();
+ m01 * (m12 * m20 - m10 * m22)
+ m02 * (m10 * m21 - m11 * m20);
if (determinant != 0) if (determinant != 0)
{ {
@ -382,6 +380,7 @@ public class Matrix3f extends Matrix implements Serializable {
m10 m11 m12 m10 m11 m12
m20 m21 m22 m20 m21 m22
*/ */
float determinant_inv = 1f/determinant;
// get the conjugate matrix // get the conjugate matrix
float t00 = m11 * m22 - m12* m22; float t00 = m11 * m22 - m12* m22;
@ -395,19 +394,18 @@ public class Matrix3f extends Matrix implements Serializable {
float t22 = m00 * m11 - m01 * m10; float t22 = m00 * m11 - m01 * m10;
m00 = t00/determinant; m00 = t00*determinant_inv;
m11 = t11/determinant; m11 = t11*determinant_inv;
m22 = t22/determinant; m22 = t22*determinant_inv;
m01 = t10/determinant; m01 = t10*determinant_inv;
m10 = t01/determinant; m10 = t01*determinant_inv;
m20 = t02/determinant; m20 = t02*determinant_inv;
m02 = t20/determinant; m02 = t20*determinant_inv;
m12 = t21/determinant; m12 = t21*determinant_inv;
m21 = t12/determinant; m21 = t12*determinant_inv;
} return this;
} else
return null;
return this;
} }
/** /**