From: Caspian Rychlik-P. <ci...@us...> - 2002-08-24 21:35:23
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/vector In directory usw-pr-cvs1:/tmp/cvs-serv14858/src/java/org/lwjgl/vector Modified Files: Matrix4f.java Matrix3f.java Log Message: Determinants Index: Matrix4f.java CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/java/org/lwjgl/vector/Matrix4f.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/vector/Matrix4f.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Matrix4f.java 24 Aug 2002 21:26:47 -0000 1.4 +++ Matrix4f.java 24 Aug 2002 21:35:20 -0000 1.5 @@ -395,8 +395,36 @@ m33 = dest.m33; } else transpose(); - + return dest; + } + + /** + * @return the determinant of the matrix + */ + public float determinant() { + float f = + m00 + * ((m11 * m22 * m33 + m12 * m23 * m31 + m13 * m21 * m32) + - m13 * m22 * m31 + - m11 * m23 * m32 + - m12 * m21 * m33); + f -= m01 + * ((m10 * m22 * m33 + m12 * m23 * m30 + m13 * m20 * m32) + - m13 * m22 * m30 + - m10 * m23 * m32 + - m12 * m20 * m33); + f += m02 + * ((m10 * m21 * m33 + m11 * m23 * m30 + m13 * m20 * m31) + - m13 * m21 * m30 + - m10 * m23 * m31 + - m11 * m20 * m33); + f -= m03 + * ((m10 * m21 * m32 + m11 * m22 * m30 + m12 * m20 * m31) + - m12 * m21 * m30 + - m10 * m22 * m31 + - m11 * m20 * m32); + return f; } Index: Matrix3f.java CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/java/org/lwjgl/vector/Matrix3f.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/vector/Matrix3f.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Matrix3f.java 24 Aug 2002 21:26:47 -0000 1.4 +++ Matrix3f.java 24 Aug 2002 21:35:20 -0000 1.5 @@ -288,10 +288,10 @@ * @return the transposed matrix */ public Matrix3f transpose(Matrix3f dest) { - + if (dest == null) dest = new Matrix3f(); - + if (this != dest) { m00 = dest.m00; m01 = dest.m10; @@ -304,9 +304,20 @@ m22 = dest.m22; } else transpose(); - + return this; - + + } + + /** + * @return the determinant of the matrix + */ + public float determinant() { + float f = + m00 * (m11 * m22 - m12 * m21) + + m01 * (m12 * m20 - m10 * m22) + + m02 * (m10 * m21 - m11 * m20); + return f; } /** |