commit 30bc2d91900eb657ed19bd00f132092ba2a1af2f
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Mar 8 14:58:58 2021 +0100

    Fix movements of objects - before it really worked only when an object's FOV was about 60 degrees.

diff --git a/src/main/java/org/distorted/main/RubikSurfaceView.java b/src/main/java/org/distorted/main/RubikSurfaceView.java
index c21b4d47..5609969f 100644
--- a/src/main/java/org/distorted/main/RubikSurfaceView.java
+++ b/src/main/java/org/distorted/main/RubikSurfaceView.java
@@ -57,7 +57,7 @@ public class RubikSurfaceView extends GLSurfaceView
     // Moving the finger by 0.3 of an inch will start a Rotation.
     private final static float ROTATION_SENSITIVITY = 0.3f;
 
-    private final Static4D CAMERA_POINT = new Static4D(0, 0, 1, 0);
+    private final Static4D CAMERA_POINT = new Static4D(0, 0, 0, 0);
 
     private RubikRenderer mRenderer;
     private RubikPreRender mPreRender;
@@ -305,6 +305,9 @@ public class RubikSurfaceView extends GLSurfaceView
         }
       else
         {
+        TwistyObject object = mPreRender.getObject();
+        CAMERA_POINT.set2( object.getCameraDist() );
+
         Static4D touchPoint = new Static4D(x, y, 0, 0);
         Static4D rotatedTouchPoint= rotateVectorByInvertedQuat(touchPoint, mQuat);
         Static4D rotatedCamera= rotateVectorByInvertedQuat(CAMERA_POINT, mQuat);
@@ -328,7 +331,6 @@ public class RubikSurfaceView extends GLSurfaceView
               mLastCubitFace = mMovement.getTouchedFace();
               float[] point = mMovement.getTouchedPoint3D();
               int color = solver.getCurrentColor();
-              TwistyObject object = mPreRender.getObject();
               mLastCubit = object.getCubit(point);
               mPreRender.setTextureMap( mLastCubit, mLastCubitFace, color );
               mLastCubitColor = SolverMain.cubitIsLocked(object.getObjectList(), object.getNumLayers(), mLastCubit);
diff --git a/src/main/java/org/distorted/objects/MovementMinx.java b/src/main/java/org/distorted/objects/MovementMinx.java
index c8f4ed0f..2975df64 100644
--- a/src/main/java/org/distorted/objects/MovementMinx.java
+++ b/src/main/java/org/distorted/objects/MovementMinx.java
@@ -26,8 +26,6 @@ import static org.distorted.objects.TwistyKilominx.LEN;
 import static org.distorted.objects.FactoryCubit.SIN54;
 import static org.distorted.objects.FactoryCubit.COS54;
 import static org.distorted.objects.TwistyObject.SQ5;
-import static org.distorted.objects.FactoryCubit.COS18;
-import static org.distorted.objects.TwistyMegaminx.MEGA_D;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -69,14 +67,12 @@ class MovementMinx extends Movement
       }
     if( size==5 )
       {
-      // TODO
+      float quot = offset / DIST2D;
 
-      float LEN = (0.5f-MEGA_D)*COS18/3;
-
-      android.util.Log.e("mega", "offset = "+offset+" len="+LEN+" dist2D="+DIST2D);
-
-      if( offset<LEN/2 ) return 0;
-      if( offset<LEN   ) return 1;
+      if( quot>0.00f && quot<=0.34f ) return 0;
+      if( quot>0.34f && quot<=1.00f ) return 1;
+      if( quot>1.00f && quot<=1.66f ) return 3;
+      if( quot>1.66f && quot<=2.00f ) return 4;
       }
 
     return 0;
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index 44e6d491..ff7e20bd 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -110,6 +110,7 @@ public abstract class TwistyObject extends DistortedNode
   private final Static3D mRotationAxis;
   private final Static3D mObjectScale;
   private final int[] mQuatDebug;
+  private final float mCameraDist;
   private int mNumTexRows, mNumTexCols;
   private int mRotRowBitmap;
   private int mRotAxis;
@@ -205,7 +206,11 @@ public abstract class TwistyObject extends DistortedNode
 
     setupPosition(moves);
 
-    setProjection( list.getFOV(), 0.1f);
+    float fov = list.getFOV();
+    double halfFOV = fov * (Math.PI/360);
+    mCameraDist = 0.5f*NODE_RATIO / (float)Math.tan(halfFOV);
+
+    setProjection( fov, 0.1f);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -759,6 +764,13 @@ public abstract class TwistyObject extends DistortedNode
     return speed> 1.2f ? NEAREST*(angle>0 ? 1:-1) : 0;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public float getCameraDist()
+    {
+    return mCameraDist;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public int getNodeSize()
