commit 823f63f729da69f7e0c96577eacf88a88359cb6b
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Jan 3 21:09:51 2019 +0000

    Correct the z-axis of the center of fragment effects (it was inverted)

diff --git a/src/main/java/org/distorted/examples/earth/EarthRenderer.java b/src/main/java/org/distorted/examples/earth/EarthRenderer.java
index f26ded6..c5ef813 100644
--- a/src/main/java/org/distorted/examples/earth/EarthRenderer.java
+++ b/src/main/java/org/distorted/examples/earth/EarthRenderer.java
@@ -63,13 +63,14 @@ import javax.microedition.khronos.opengles.GL10;
 
 class EarthRenderer implements GLSurfaceView.Renderer
 {
-    private static final int   SIZE    =   500;
-    private static final int   RADIUS  =    30;
-    private static final int   LEVEL   =    32;
-    private static final float FOV     = 30.0f;
-    private static final float NEAR    =  0.1f;
-    private static final int   MAX_EFF =    20;
-    private static final float SCALE   = 1.10f;
+    private static final int   SIZE    =     500;
+    private static final int   RADIUS_V= SIZE/10;
+    private static final int   RADIUS_F= SIZE/15;
+    private static final int   LEVEL   =      32;
+    private static final float FOV     =   30.0f;
+    private static final float NEAR    =    0.1f;
+    private static final int   MAX_EFF =      20;
+    private static final float SCALE   =   1.10f;
 
     private GLSurfaceView mView;
     private DistortedTexture mTexture;
@@ -78,13 +79,13 @@ class EarthRenderer implements GLSurfaceView.Renderer
     private DistortedScreen mScreen;
     private int mObjWidth, mObjHeight, mObjDepth;
     private Static3D mMove, mScaleFactor, mCenter;
-    private Dynamic3D mScale;
 
     private int mScrWidth, mScrHeight;
     private float mLevel;
 
     private Static3D mColor;
     private Static3D mRegionF;
+    private Static4D mRegionV;
     private Static1D mStrength;
 
     Static4D mQuat1, mQuat2;
@@ -101,15 +102,16 @@ class EarthRenderer implements GLSurfaceView.Renderer
       DistortedEffects.setMax(EffectType.VERTEX  , MAX_EFF);
       DistortedEffects.setMax(EffectType.FRAGMENT, MAX_EFF);
 
-      mScale      = new Dynamic3D(0,0.5f);
       mStrength   = new Static1D(0.5f);
       mColor      = new Static3D(255,0,0);
-      mRegionF    = new Static3D(RADIUS,RADIUS,RADIUS);
+      mRegionF    = new Static3D(RADIUS_F,RADIUS_F,RADIUS_F);
+      mRegionV    = new Static4D(0,0,0,RADIUS_V);
       mMove       = new Static3D(0,0,0);
       mScaleFactor= new Static3D(1,1,1);
       mCenter     = new Static3D(0,0,0);
 
-      mScale.add(mScaleFactor);
+      Dynamic3D scale = new Dynamic3D(0,0.5f);
+      scale.add(mScaleFactor);
 
       mMesh     = new MeshSphere(LEVEL);
       mTexture  = new DistortedTexture(SIZE,SIZE);
@@ -129,7 +131,7 @@ class EarthRenderer implements GLSurfaceView.Renderer
 
       mEffects = new DistortedEffects();
       mEffects.apply( new MatrixEffectMove(mMove) );
-      mEffects.apply( new MatrixEffectScale(mScale));
+      mEffects.apply( new MatrixEffectScale(scale));
       mEffects.apply( new MatrixEffectQuaternion(quatInt1, mCenter) );
       mEffects.apply( new MatrixEffectQuaternion(quatInt2, mCenter) );
 
@@ -187,6 +189,8 @@ class EarthRenderer implements GLSurfaceView.Renderer
 
     void addNewPoint(float longitude, float latitude, EffectName name)
       {
+      final float CORR = 10.0F;
+      Static3D vector;
       Effect effect =null;
 
       double sinLON = Math.sin(longitude);
@@ -198,16 +202,18 @@ class EarthRenderer implements GLSurfaceView.Renderer
       float y = (float)        sinLAT /2.0f;
       float z = (float)(cosLON*cosLAT)/2.0f;
 
-      Static3D center = new Static3D( (0.5f+x)*mObjWidth, (0.5f+y)*mObjHeight, (0.5f-z)*mObjDepth);
+      Static3D center = new Static3D( (0.5f+x)*mObjWidth, (0.5f+y)*mObjHeight, (0.5f+z)*mObjDepth);
 
       //android.util.Log.e("earth", "center "+(x*mObjWidth)+" "+(y*mObjHeight)+" "+(z*mObjDepth));
       //android.util.Log.e("earth", "longitude: "+longitude+" latitude:"+latitude);
 
       switch(name)
         {
+        case DISTORT          : vector = new Static3D( +x*mObjWidth/CORR, +y*mObjHeight/CORR, +z*mObjDepth/CORR);
+                                effect = new VertexEffectDistort( vector, center, mRegionV); break;
+        case DEFORM           : vector = new Static3D( +x*mObjWidth/CORR, +y*mObjHeight/CORR, +z*mObjDepth/CORR);
+                                effect = new VertexEffectDeform ( vector, center, mRegionV); break;
         /*
-        case DISTORT          : effect = new VertexEffectDistort(mDyn3, center, mRegionV); break;
-        case DEFORM           : effect = new VertexEffectDeform (mDyn3, center, mRegionV); break;
         case SINK             : effect = new VertexEffectSink   (mDyn1, center, mRegionV); break;
         case PINCH            : effect = new VertexEffectPinch  (mDyn2, center, mRegionV); break;
         case SWIRL            : effect = new VertexEffectSwirl  (mDyn1, center, mRegionV); break;
