From 07750666120cf38c7ad4f3a3a583a8c4d582bb0e Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Tue, 23 Apr 2019 22:30:47 -0400 Subject: [PATCH] Cross-platform main. --- LA.java | 44 ++++++++++++++++++++++++++++---------------- 1 files changed, 28 insertions(+), 16 deletions(-) diff --git a/LA.java b/LA.java index 87bd7d8..a667209 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) @@ -319,16 +327,16 @@ //left = right; //right = tmp; - for (int i = 0; i < 4; i++) + for (int j = 0; j < 4; j++) { - double[] lefti = left[i]; - double[] concati = concatTemp[i]; - for (int j = 0; j < 4; j++) + double[] rightj = right[j]; + double[] concat = concatTemp[j]; + for (int i = 0; i < 4; i++) { - concati[j] = 0; + concat[i] = 0; for (int k = 0; k < 4; k++) { - concati[j] += lefti[k] * right[k][j]; + 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 @@ -614,6 +623,7 @@ private static int indxr[] = new int[4]; private static int indxc[] = new int[4]; + static double[][] Identity = new double[4][4]; static int SIZE = 0; // 65536*64; @@ -629,6 +639,8 @@ costable[i] = Math.cos(PI2 * i/SIZE); sintable[i] = Math.sin(PI2 * i*i/SIZE/SIZE); } + + LA.matIdentity(Identity); } static double cos(double x0) -- Gitblit v1.6.2