commit b424b062b7d4018222356782335daa5e0f9d9dca
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Dec 18 23:29:25 2018 +0000

    Make Matrix effects Rotate and Quaternion actually correct when it comes to the Z-axis. Also corresponding adjustments in apps.

diff --git a/src/main/java/org/distorted/examples/cubes/CubesRenderer.java b/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
index 568acd8..586b772 100644
--- a/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
+++ b/src/main/java/org/distorted/examples/cubes/CubesRenderer.java
@@ -117,7 +117,7 @@ class CubesRenderer implements GLSurfaceView.Renderer
       float factor = ( width*mObjHeight > height*mObjWidth ) ? (0.75f*height)/mObjHeight :  (0.75f*width)/mObjWidth;
       mMove.set( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0);
       mScale.set(factor,factor,factor);
-      mCenter.set( (float)mObjWidth/2, (float)mObjHeight/2, -(float)mObjDepth/2 );
+      mCenter.set( (float)mObjWidth/2, (float)mObjHeight/2, (float)mObjDepth/2 );
       mScreen.resize(width, height);
       }
 
diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
index 43232c6..4e598ae 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DRenderer.java
@@ -54,7 +54,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
     private DistortedTexture mObjectTexture, mBackgroundTexture, mCenterTexture, mRegionTexture;
     private DistortedScreen mScreen;
     private DistortedNode mCenterNode, mRegionNode;
-    private int mObjWidth, mObjHeight;
+    private int mObjWidth, mObjHeight, mObjDepth;
     private Static3D mCenterPoint, mRegionPoint, mRegionScalePoint;
     private Static3D mRotateCen, mMoveObject, mScaleObject, mMoveCenter, mScaleCenter, mMoveRegion, mMoveBackground, mScaleBackground;
     private boolean mShowingCenter=false;
@@ -97,6 +97,7 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
 
       mObjWidth = mObjectTexture.getWidth();
       mObjHeight= mObjectTexture.getHeight();
+      mObjDepth = mObjectTexture.getDepth(mesh);
 
       mQuat1 = new Static4D(0,0,0,1);  // unity
       mQuat2 = new Static4D(0,0,0,1);  // quaternions
@@ -146,13 +147,8 @@ class Effects3DRenderer implements GLSurfaceView.Renderer
     void resetMatrixEffects()
       {
       Effects3DActivity2 act = (Effects3DActivity2)mView.getContext();
-
       DistortedEffects objectEffects= act.getEffects();
-      MeshBase mesh  = act.getMesh();
-
-      int objDepth = mObjectTexture.getDepth(mesh);
-
-      Static3D rotateObj = new Static3D( (float)mObjWidth/2, (float)mObjHeight/2, -(float)objDepth/2 );
+      Static3D rotateObj = new Static3D( (float)mObjWidth/2, (float)mObjHeight/2, (float)mObjDepth/2 );
 
       MatrixEffectQuaternion quat1obj = new MatrixEffectQuaternion(mQuat1,  rotateObj);
       MatrixEffectQuaternion quat2obj = new MatrixEffectQuaternion(mQuat2,  rotateObj);
diff --git a/src/main/java/org/distorted/examples/inflate/InflateRenderer.java b/src/main/java/org/distorted/examples/inflate/InflateRenderer.java
index 93f7084..5306cff 100644
--- a/src/main/java/org/distorted/examples/inflate/InflateRenderer.java
+++ b/src/main/java/org/distorted/examples/inflate/InflateRenderer.java
@@ -110,7 +110,7 @@ class InflateRenderer implements GLSurfaceView.Renderer
       float factor = ( width*mObjHeight > height*mObjWidth ) ? (SCALE*height)/mObjHeight :  (SCALE*width)/mObjWidth;
       mMove.set( (width-factor*mObjWidth)/2 , (height-factor*mObjHeight)/2 , 0);
       mScale.set(factor,factor,factor);
-      mCenter.set( (float)mObjWidth/2, (float)mObjHeight/2, -(float)mObjDepth/2 );
+      mCenter.set( (float)mObjWidth/2, (float)mObjHeight/2, (float)mObjDepth/2 );
       mScreen.resize(width, height);
       }
 
diff --git a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
index c5a2760..7e079d1 100644
--- a/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
+++ b/src/main/java/org/distorted/examples/multiblur/MultiblurRenderer.java
@@ -169,7 +169,7 @@ class MultiblurRenderer implements GLSurfaceView.Renderer
 
     	float factor    = 0.15f*mScreenMin/OBJ_SIZE;
     	mScale.set(factor,factor,factor);
-      mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, -(float)OBJ_SIZE/2 );
+      mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, (float)OBJ_SIZE/2 );
       mMove.set( (width -factor*OBJ_SIZE)/2 ,(height-factor*OBJ_SIZE)/2 ,0);
       computeMoveVectors();
       mScreen.resize(width, height);
diff --git a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
index 33526ff..51956b7 100644
--- a/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
+++ b/src/main/java/org/distorted/examples/quaternion/QuaternionRenderer.java
@@ -117,7 +117,7 @@ class QuaternionRenderer implements GLSurfaceView.Renderer
 
     float factor = 0.5f*(width>height ? height/h:width/w);
 
-    mCenter.set(w/2,h/2,-d/2);
+    mCenter.set(w/2,h/2,d/2);
     mMove.set( (width-factor*w)/2 , (height-factor*h)/2 , 0 );
     mScale.set(factor,factor,factor);
 
diff --git a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
index 5f5fd85..c083248 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
@@ -148,8 +148,8 @@ class StencilRenderer implements GLSurfaceView.Renderer
       float fh = mFloorTex.getHeight();
       float fd = mFloorTex.getDepth(mQuad);
 
-      Static3D cubeCenter = new Static3D(cw/2,ch  ,-cd/2);
-      Static3D floorCenter= new Static3D(fw/2,fh/2,-fd/2);
+      Static3D cubeCenter = new Static3D(cw/2,ch  ,cd/2);
+      Static3D floorCenter= new Static3D(fw/2,fh/2,fd/2);
 
       Static3D axisX = new Static3D(1,0,0);
       Static3D axisY = new Static3D(0,1,0);
diff --git a/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java b/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java
index 4231b11..5409bcd 100644
--- a/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java
+++ b/src/main/java/org/distorted/examples/transparency/TransparencyRenderer.java
@@ -214,15 +214,14 @@ class TransparencyRenderer implements GLSurfaceView.Renderer
 
     public void onSurfaceChanged(GL10 glUnused, int width, int height)
       {
+      float size= 0.02f*OBJ_SIZE;
       mScreenMin = width<height ? width:height;
 
       float factor = 0.70f*mScreenMin/OBJ_SIZE;
       mScale.set(factor,factor,factor);
-      mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, -(float)OBJ_SIZE/2 );
+      mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, (float)OBJ_SIZE/2 );
       mMove.set( (width -factor*OBJ_SIZE)/2 ,(height-factor*OBJ_SIZE)/2 ,0);
 
-      float size= 0.02f*OBJ_SIZE;
-
       for(int i=0; i<NUM_OBJECTS; i++)
         {
         mMoveVector[i].set(size*OBJECTS[NUM*i], size*OBJECTS[NUM*i+1], size*OBJECTS[NUM*i+2]);
diff --git a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
index e78a768..eb7fca5 100644
--- a/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
+++ b/src/main/java/org/distorted/examples/triblur/TriblurRenderer.java
@@ -220,7 +220,7 @@ class TriblurRenderer implements GLSurfaceView.Renderer
       float factor2 = 0.80f*factor1;
       mScale1.set(factor1,factor1,factor1);
       mScale2.set(factor2,factor2,factor2);
-      mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, -(float)OBJ_SIZE/2 );
+      mCenter.set((float)OBJ_SIZE/2, (float)OBJ_SIZE/2, (float)OBJ_SIZE/2 );
       mMove1.set( (width -factor1*OBJ_SIZE)/2 ,(height-factor1*OBJ_SIZE)/2 ,0);
       mMove2.set( (width -factor2*OBJ_SIZE)/2 ,(height-factor2*OBJ_SIZE)/2 ,0);
       mScreen.resize(width, height);
