commit a76d9cb418b8d4b968ddfd985955cbd16610ba77
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Sep 24 16:23:32 2021 +0200

    Correct the cuts of Mega/Kilominx.

diff --git a/src/main/java/org/distorted/objects/Movement.java b/src/main/java/org/distorted/objects/Movement.java
index 02e82e0e..b15a713d 100644
--- a/src/main/java/org/distorted/objects/Movement.java
+++ b/src/main/java/org/distorted/objects/Movement.java
@@ -190,8 +190,7 @@ public abstract class Movement
     if( denom != 0.0f )
       {
       float axisCam = a0*mCamera[0] + a1*mCamera[1] + a2*mCamera[2];
-      float distance = mDistanceCenterFace3D;
-      float alpha = (distance-axisCam)/denom;
+      float alpha = (mDistanceCenterFace3D-axisCam)/denom;
 
       output[0] = mCamera[0] + d0*alpha;
       output[1] = mCamera[1] + d1*alpha;
@@ -336,7 +335,7 @@ public abstract class Movement
 // the 3D 'cuts' to translate it from 3D (i.e. with respect to the rotAxis) to 2D in-face (i.e. with
 // respect to the 2D rotAxis cast into a particular face)
 
-  void computeLinear(float distance3D, Static3D[] rotAxis, Static3D[] faceAxis)
+  private void computeLinear(float distance3D, Static3D[] rotAxis, Static3D[] faceAxis)
     {
     int numFaces = faceAxis.length;
     int numRot   = rotAxis.length;
@@ -356,8 +355,6 @@ public abstract class Movement
           mB[i][j] = sign*distance3D*coeff;
           }
         else mB[i][j] = 0.0f;
-
-        android.util.Log.e("D", "face="+i+" rot="+j+" a="+mA[i][j]+" B="+mB[i][j]);
         }
     }
 
@@ -376,9 +373,6 @@ public abstract class Movement
       for(int i=0; i<len; i++)
         {
         float translated = B + borders[i]/A;
-
-        android.util.Log.e("D", "offset="+offset+" borders[i]="+borders[i]+" translated="+translated+" A="+A+" B="+B);
-
         if( offset<translated ) return i;
         }
       }
diff --git a/src/main/java/org/distorted/objects/TwistyMinx.java b/src/main/java/org/distorted/objects/TwistyMinx.java
index 071885c0..cddcd419 100644
--- a/src/main/java/org/distorted/objects/TwistyMinx.java
+++ b/src/main/java/org/distorted/objects/TwistyMinx.java
@@ -514,17 +514,16 @@ abstract class TwistyMinx extends Twisty12
       {
       mCuts = new float[6][numLayers-1];
       float D = numLayers*MovementMinx.DIST3D;
-      float E = 2*SIN54;
-      float X = 2*D*E/(1+2*E);  // height of the 'upper' part of a dodecahedron, i.e. put it on a table,
-                                // its height is then D*2*DIST3D, it has one 'lower' part of height X, one
+      float X = 2*D/(2+SIN18);  // height of the 'upper' part of a dodecahedron, i.e. put it on a table,
+                                // its height is then 2D, it has one 'lower' part of height X, one
                                 // 'middle' part of height Y and one upper part of height X again.
-                                // It's edge length = numLayers/3.0f.
       int num = (numLayers-1)/2;
       float G = X*dist/num;     // height of one Layer
 
       for(int i=0; i<num; i++)
         {
-        float cut = -D + (i+0.5f)*G;
+        float cut = -D + (i+0.85f)*G;  // 0.85? not fully correct; attempt to make it
+                                       // easier to rotate the outer layers
         int j = 2*num-1-i;
         mCuts[0][i] = +cut;
         mCuts[0][j] = -cut;
