From 1af7c6ba6d2e38df8d3a42141855349d8157b3dc Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 12 Aug 2003 10:38:11 +0000 Subject: [PATCH] Matrix2f.invert() returns null on failure --- src/java/org/lwjgl/vector/Matrix2f.java | 27 ++++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/java/org/lwjgl/vector/Matrix2f.java b/src/java/org/lwjgl/vector/Matrix2f.java index 8167a616..cafc0c07 100644 --- a/src/java/org/lwjgl/vector/Matrix2f.java +++ b/src/java/org/lwjgl/vector/Matrix2f.java @@ -291,7 +291,7 @@ public class Matrix2f extends Matrix implements Serializable { /** * Invert this matrix - * @return this + * @return this if successful, null otherwise */ public Matrix invert() { @@ -300,18 +300,21 @@ public class Matrix2f extends Matrix implements Serializable { inv(A) = 1/det(A) * adj(A); */ - float determinant = m00 * m11 - m01*m10; - float t00 = m11/determinant; - float t01 = -m01/determinant; - float t11 = m00/determinant; - float t10 = -m10/determinant; + float determinant = determinant(); + if (determinant != 0) { + float determinant_inv = 1f/determinant; + float t00 = m11*determinant_inv; + float t01 = -m01*determinant_inv; + float t11 = m00*determinant_inv; + float t10 = -m10*determinant_inv; - m00 = t00; - m01 = t01; - m10 = t10; - m11 = t11; - - return this; + m00 = t00; + m01 = t01; + m10 = t10; + m11 = t11; + return this; + } else + return null; } /**