commit 28b54fe30540aaa2d05595618b2ee660545bde26
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Jan 20 14:24:36 2021 +0100

    Progress with Megaminx. Darken the RED color.

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 2ce4f1a7..3927cd14 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -1313,7 +1313,7 @@ class FactoryCubit
     float sinA = (2*SIN54*SIN54-1)/COS54;
     float cosA = (float)Math.sqrt(1-sinA*sinA);
     float LEN  = 0.5f/SIN54;
-    float scale= 2*SIN54*(0.5f-MEGA_D)/(0.5f*(numLayers-1));
+    float scale= (numLayers/6.0f-MEGA_D)/(LEN*0.5f*(numLayers-1));
 
     Static3D axisA = new Static3D( SIN54, COS54, 0.0f);
     Static3D axisB = new Static3D(-SIN54, COS54, 0.0f);
diff --git a/src/main/java/org/distorted/objects/TwistyMegaminx.java b/src/main/java/org/distorted/objects/TwistyMegaminx.java
index 12ea6ad5..c1fe0264 100644
--- a/src/main/java/org/distorted/objects/TwistyMegaminx.java
+++ b/src/main/java/org/distorted/objects/TwistyMegaminx.java
@@ -59,21 +59,18 @@ public class TwistyMegaminx extends TwistyMinx
            { 1,  3, 19,  7, 17},
          };
 
-  private static MeshBase mCenterMesh, mCornerMesh;
-  private static MeshBase[] mEdgeMesh;
+  private static MeshBase[] mCenterMeshes, mCornerMeshes, mEdgeMeshes;
 
   private static final Static4D[] mBasicV, mCurrV;
 
   static
     {
-    float D = 0.5f-MEGA_D;
-
     mBasicV = new Static4D[3];
     mCurrV  = new Static4D[3];
 
-    mBasicV[0] = new Static4D( (SQ5+1)*0.125f*D, (SQ5-1)*0.125f*D, 0.250f*D, 0.0f );
-    mBasicV[1] = new Static4D(-(SQ5+1)*0.125f*D, (SQ5-1)*0.125f*D, 0.250f*D, 0.0f );
-    mBasicV[2] = new Static4D(                0,        -0.500f*D,     0.0f, 0.0f );
+    mBasicV[0] = new Static4D( (SQ5+1)*0.125f, (SQ5-1)*0.125f, -0.250f, 0.0f );
+    mBasicV[1] = new Static4D(-(SQ5+1)*0.125f, (SQ5-1)*0.125f, -0.250f, 0.0f );
+    mBasicV[2] = new Static4D(              0,        -0.500f,    0.0f, 0.0f );
     };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -181,15 +178,15 @@ public class TwistyMegaminx extends TwistyMinx
       }
     else
       {
-      float E = 2.0f/(numLayers-1);
+      float E = 2.0f*(numLayers/6.0f - MEGA_D)/(0.5f*(numLayers-1));
       int N = (numCubitsPerCorner-1)/3;
       int b1 = (part-1) % N;
       int b2 = (part-1) / N;
       Static4D pri = mCurrV[b2];
       Static4D sec = mCurrV[(b2+2)%3];
 
-      int multP = b1 % ((numLayers-3)/2);
-      int multS = b1 / ((numLayers-3)/2);
+      int multP = (b1 % ((numLayers-3)/2)) + 1;
+      int multS = (b1 / ((numLayers-3)/2));
 
       pos.set( corn.get0()*D + (pri.get0()*multP + sec.get0()*multS)*E,
                corn.get1()*D + (pri.get1()*multP + sec.get1()*multS)*E,
@@ -287,12 +284,15 @@ public class TwistyMegaminx extends TwistyMinx
     {
     int numCubitsPerCorner = numCubitsPerCorner(numLayers);
     int numCubitsPerEdge   = numCubitsPerEdge(numLayers);
+    int index = (numLayers-3)/2;
     MeshBase mesh;
 
+    if( mCornerMeshes==null ) mCornerMeshes = new MeshBase[ObjectList.MEGA.getNumVariants()];
+
 //    if( cubit < NUM_CORNERS*numCubitsPerCorner )
       {
-      if( mCenterMesh==null ) mCenterMesh = FactoryCubit.getInstance().createMegaminxCornerMesh(numLayers);
-      mesh = mCenterMesh.copy(true);
+      if( mCornerMeshes[index]==null ) mCornerMeshes[index] = FactoryCubit.getInstance().createMegaminxCornerMesh(numLayers);
+      mesh = mCornerMeshes[index].copy(true);
       }
 /*
     else if( cubit<NUM_CENTERS + NUM_CORNERS*numCubitsPerCorner )
diff --git a/src/main/java/org/distorted/objects/TwistyObject.java b/src/main/java/org/distorted/objects/TwistyObject.java
index e2446c68..a43b2710 100644
--- a/src/main/java/org/distorted/objects/TwistyObject.java
+++ b/src/main/java/org/distorted/objects/TwistyObject.java
@@ -61,7 +61,7 @@ public abstract class TwistyObject extends DistortedNode
   static final int COLOR_WHITE  = 0xffffffff;
   static final int COLOR_BLUE   = 0xff0000ff;
   static final int COLOR_GREEN  = 0xff00bb00;
-  static final int COLOR_RED    = 0xffff0000;
+  static final int COLOR_RED    = 0xff990000;
   static final int COLOR_ORANGE = 0xffff6200;
   static final int COLOR_GREY   = 0xff727c7b;
   static final int COLOR_VIOLET = 0xff7700bb;
