commit 30e77a6ccba6842941345a5e8f6c850cdcb48a99
Author: Leszek Koltunski <leszek@distorted.org>
Date:   Mon Aug 29 17:51:56 2016 +0100

    Beginnings of the WAVE effect.

diff --git a/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java b/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
index cf039a1..16463c7 100644
--- a/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
+++ b/src/main/java/org/distorted/examples/effects3d/Effects3DEffect.java
@@ -71,7 +71,8 @@ public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
     switch(mName)
       {
       case DISTORT      :
-      case DEFORM       : return 3;
+      case DEFORM       :
+      case WAVE         : return 3;
 
       case CHROMA       :
       case SMOOTH_CHROMA: return 4;
@@ -91,6 +92,7 @@ public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
       case DEFORM : object.deform (mDyn3, mCenterDyn            ); break;
       case SINK   : object.sink   (mDyn1, mCenterDyn, mRegionDyn); break;
       case SWIRL  : object.swirl  (mDyn1, mCenterDyn, mRegionDyn); break;
+      case WAVE   : object.wave   (mDyn3, mCenterDyn, mRegionDyn); break;
 
       case ALPHA            : object.alpha     (mDyn1,        mRegionDyn, false); break;
       case SMOOTH_ALPHA     : object.alpha     (mDyn1,        mRegionDyn, true ); break;
@@ -127,6 +129,12 @@ public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
                               float z = (mInter[2]-50)*l;
                               mSta3.set(x,y,z);
                               break;
+      case WAVE             : float l2 = mAct.get().getWidth()/50.0f;
+                              float x2 = (mInter[0]-50)*l2;
+                              float y2 = (mInter[1]-50)*180 / 50;
+                              float z2 = (mInter[2]-50)*l2;
+                              mSta3.set(x2,y2,z2);
+                              break;
       case SINK             : mSta1.set(mInter[0] > 50 ? 50.0f/(100.01f-mInter[0]) : mInter[0] / 50.0f);
                               break;
       case SWIRL            : mSta1.set( 3.6f*(mInter[0]-50) );
@@ -159,7 +167,8 @@ public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
     switch(mName)
       {
       case DISTORT          :
-      case DEFORM           : mInter[0] = 50;
+      case DEFORM           :
+      case WAVE             : mInter[0] = 50;
                               mInter[1] = 50;
                               mInter[2] = 50;
                               break;
@@ -187,7 +196,6 @@ public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// requires knowledge about effect nature
 
   private void setText()
     {
@@ -198,8 +206,7 @@ public class Effects3DEffect implements SeekBar.OnSeekBarChangeListener
       text+=(" "+((int)(mSta1.getX()*100))/100.0f);
       }
 
-    if( mName==EffectNames.DISTORT || mName==EffectNames.DEFORM       ||
-        mName==EffectNames.CHROMA  || mName==EffectNames.SMOOTH_CHROMA )
+    if( mDimension>=3 )
       {
       int f1 = (int)mSta3.getX();
       int f2 = (int)mSta3.getY();
