From 89c1ad67bc65d24ceadfa9e95f8c5515283f1e97 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 01 Jul 2018 15:45:28 -0400 Subject: [PATCH] Reverse matrix order. --- LA.java | 33 +++++++++++++++++++++------------ 1 files changed, 21 insertions(+), 12 deletions(-) diff --git a/LA.java b/LA.java index 3669362..20a9211 100644 --- a/LA.java +++ b/LA.java @@ -306,6 +306,14 @@ } + GrafreeD.Assert(Math.abs(src[0][3]) <= 1E-15); + GrafreeD.Assert(Math.abs(src[1][3]) <= 1E-15); + GrafreeD.Assert(Math.abs(src[2][3]) <= 1E-15); + GrafreeD.Assert(Math.abs(src[3][3] - 1) <= 1E-15); + GrafreeD.Assert(Math.abs(dst[0][3]) <= 1E-15); + GrafreeD.Assert(Math.abs(dst[1][3]) <= 1E-15); + GrafreeD.Assert(Math.abs(dst[2][3]) <= 1E-15); + GrafreeD.Assert(Math.abs(dst[3][3] - 1) <= 1E-15); } static double toRadians(double degrees) @@ -321,14 +329,14 @@ for (int j = 0; j < 4; j++) { - double[] leftj = left[j]; + double[] rightj = right[j]; double[] concat = concatTemp[j]; for (int i = 0; i < 4; i++) { concat[i] = 0; for (int k = 0; k < 4; k++) { - concat[i] += leftj[k] * right[k][i]; + concat[i] += left[k][i] * rightj[k]; } } } @@ -345,7 +353,7 @@ //xlateTemp[0][3] = dx; //xlateTemp[1][3] = dy; //xlateTemp[2][3] = dz; - matConcat(mat, xlateTemp, mat); + matConcat(xlateTemp, mat, mat); } static void matHomogene(double mat[][], double dx, double dy, double dz) @@ -357,7 +365,7 @@ //xlateTemp[0][3] = dx; //xlateTemp[1][3] = dy; //xlateTemp[2][3] = dz; - matConcat(mat, xlateTemp, mat); + matConcat(xlateTemp, mat, mat); } static void matTranslateInv(double mat[][], double dx, double dy, double dz) @@ -369,7 +377,7 @@ //xlateTemp[0][3] = dx; //xlateTemp[1][3] = dy; //xlateTemp[2][3] = dz; - matConcat(xlateTemp, mat, mat); + matConcat(mat, xlateTemp, mat); } static void matScale(double mat[][], double sx, double sy, double sz) @@ -378,7 +386,8 @@ xlateTemp[0][0] = sx; xlateTemp[1][1] = sy; xlateTemp[2][2] = sz; - matConcat(mat, xlateTemp, mat); + matConcat(xlateTemp, mat, mat); + //matConcat(mat, xlateTemp, mat); } static void matXRotate(double mat[][], double radians) @@ -387,9 +396,9 @@ rotTemp[1][1] = rotTemp[2][2] = (double) Math.cos(radians); rotTemp[2][1] = -(rotTemp[1][2] = (double) Math.sin(radians)); // if (CameraPane.LOCALTRANSFORM) - // matConcat(rotTemp, mat, mat); + matConcat(rotTemp, mat, mat); // else - matConcat(mat, rotTemp, mat); + // matConcat(mat, rotTemp, mat); } static void matYRotate(double mat[][], double radians) @@ -398,9 +407,9 @@ rotTemp[0][0] = rotTemp[2][2] = (double) Math.cos(-radians); rotTemp[2][0] = -(rotTemp[0][2] = (double) Math.sin(-radians)); // if (CameraPane.LOCALTRANSFORM) - // matConcat(rotTemp, mat, mat); + matConcat(rotTemp, mat, mat); // else - matConcat(mat, rotTemp, mat); + // matConcat(mat, rotTemp, mat); } static void matZRotate(double mat[][], double radians) @@ -409,9 +418,9 @@ rotTemp[0][0] = rotTemp[1][1] = (double) Math.cos(radians); rotTemp[1][0] = -(rotTemp[0][1] = (double) Math.sin(radians)); // if (CameraPane.LOCALTRANSFORM) - // matConcat(rotTemp, mat, mat); + matConcat(rotTemp, mat, mat); // else - matConcat(mat, rotTemp, mat); + // matConcat(mat, rotTemp, mat); } // Project A onto B -- Gitblit v1.6.2