commit edc4a0e4c6fec376254aa584d9962927bfc75a36
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jan 4 00:35:04 2019 +0000

    Make the Sink effect fully 3D.

diff --git a/src/main/java/org/distorted/examples/earth/EarthRenderer.java b/src/main/java/org/distorted/examples/earth/EarthRenderer.java
index c5ef813..b61fb59 100644
--- a/src/main/java/org/distorted/examples/earth/EarthRenderer.java
+++ b/src/main/java/org/distorted/examples/earth/EarthRenderer.java
@@ -50,8 +50,10 @@ import org.distorted.library.mesh.MeshSphere;
 import org.distorted.library.type.Dynamic3D;
 import org.distorted.library.type.DynamicQuat;
 import org.distorted.library.type.Static1D;
+import org.distorted.library.type.Static2D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
+import org.distorted.library.type.Static5D;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -64,7 +66,7 @@ import javax.microedition.khronos.opengles.GL10;
 class EarthRenderer implements GLSurfaceView.Renderer
 {
     private static final int   SIZE    =     500;
-    private static final int   RADIUS_V= SIZE/10;
+    private static final int   RADIUS_V= SIZE/ 8;
     private static final int   RADIUS_F= SIZE/15;
     private static final int   LEVEL   =      32;
     private static final float FOV     =   30.0f;
@@ -87,6 +89,8 @@ class EarthRenderer implements GLSurfaceView.Renderer
     private Static3D mRegionF;
     private Static4D mRegionV;
     private Static1D mStrength;
+    private Static2D mPinch;
+    private Static1D mSwirl;
 
     Static4D mQuat1, mQuat2;
     int mScreenMin;
@@ -109,6 +113,8 @@ class EarthRenderer implements GLSurfaceView.Renderer
       mMove       = new Static3D(0,0,0);
       mScaleFactor= new Static3D(1,1,1);
       mCenter     = new Static3D(0,0,0);
+      mPinch      = new Static2D(0.5f,0.0f);
+      mSwirl      = new Static1D(45.0f);
 
       Dynamic3D scale = new Dynamic3D(0,0.5f);
       scale.add(mScaleFactor);
@@ -204,21 +210,18 @@ class EarthRenderer implements GLSurfaceView.Renderer
 
       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;
+                                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 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;
-        case WAVE             : effect = new VertexEffectWave   (mDyn5, center, mRegionV); break;
-        */
+                                effect = new VertexEffectDeform (   vector, center, mRegionV); break;
+        case SINK             : effect = new VertexEffectSink   (mStrength, center, mRegionV); break;
+        case PINCH            : effect = new VertexEffectPinch  (mPinch   , center, mRegionV); break;      // Those 3 are not really
+        case SWIRL            : effect = new VertexEffectSwirl  (mSwirl   , center, mRegionV); break;      // fully 3D effects. They
+        case WAVE             : Static5D wave = new Static5D( RADIUS_V/2, RADIUS_V/2, 0, 90-latitude, 90); // will not look good
+                                effect = new VertexEffectWave   (wave     , center, mRegionV); break;      // everywhere on the sphere.
+
         case ALPHA            : effect = new FragmentEffectAlpha     (mStrength,        center, mRegionF, false); break;
         case SMOOTH_ALPHA     : effect = new FragmentEffectAlpha     (mStrength,        center, mRegionF, true ); break;
         case CHROMA           : effect = new FragmentEffectChroma    (mStrength, mColor,center, mRegionF, false); break;
