|
From: Elias N. <eli...@us...> - 2003-09-01 12:46:23
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/vector In directory sc8-pr-cvs1:/tmp/cvs-serv6179/src/java/org/lwjgl/vector Modified Files: Matrix3f.java Matrix4f.java Log Message: More vector fixes by cfmdobbie 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.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Matrix3f.java 30 Aug 2003 14:25:09 -0000 1.19 +++ Matrix3f.java 1 Sep 2003 12:45:47 -0000 1.20 @@ -330,22 +330,27 @@ * @return the transposed matrix */ public Matrix3f transpose(Matrix3f dest) { - if (dest == null) { - dest = new Matrix3f(); - dest.m00 = m00; - dest.m01 = m10; - dest.m02 = m20; - dest.m10 = m01; - dest.m11 = m11; - dest.m12 = m21; - dest.m20 = m02; - dest.m21 = m12; - dest.m22 = m22; - return dest; - } else { - transpose(); - return this; - } + if (dest == null) { + // New matrix needed to store transpose + dest = new Matrix3f(); + } + if (this == dest) { + // Destination and source are the same! Run the in-place + // transpose instead as the copy transpose will be destructive. + transpose(); + } else { + // Destination differs from source. Perform copy transpose + dest.m00 = m00; + dest.m01 = m10; + dest.m02 = m20; + dest.m10 = m01; + dest.m11 = m11; + dest.m12 = m21; + dest.m20 = m02; + dest.m21 = m12; + dest.m22 = m22; + } + return dest; } /** 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.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- Matrix4f.java 30 Aug 2003 14:25:09 -0000 1.22 +++ Matrix4f.java 1 Sep 2003 12:45:47 -0000 1.23 @@ -635,30 +635,35 @@ * @return the transposed matrix */ public Matrix4f transpose(Matrix4f dest) { - if (dest == null) { - dest = new Matrix4f(); - dest.m00 = m00; - dest.m01 = m10; - dest.m02 = m20; - dest.m03 = m30; - dest.m10 = m01; - dest.m11 = m11; - dest.m12 = m21; - dest.m13 = m31; - dest.m20 = m02; - dest.m21 = m12; - dest.m22 = m22; - dest.m23 = m32; - dest.m30 = m03; - dest.m31 = m13; - dest.m32 = m23; - dest.m33 = m33; - return dest; - } else { - transpose(); - return this; - } - } + if (dest == null) { + // New matrix needed to store transpose + dest = new Matrix4f(); + } + if (this == dest) { + // Destination and source are the same! Run the in-place + // transpose instead as the copy transpose will be destructive. + transpose(); + } else { + // Destination differs from source. Perform copy transpose + dest.m00 = m00; + dest.m01 = m10; + dest.m02 = m20; + dest.m03 = m30; + dest.m10 = m01; + dest.m11 = m11; + dest.m12 = m21; + dest.m13 = m31; + dest.m20 = m02; + dest.m21 = m12; + dest.m22 = m22; + dest.m23 = m32; + dest.m30 = m03; + dest.m31 = m13; + dest.m32 = m23; + dest.m33 = m33; + } + return dest; + } /** * @return the determinant of the matrix |