commit d92030e4900aaf271047c5efa8cfbbfecdfd3b3e
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Oct 17 00:23:04 2020 +0100

    Improve the Skewb; set max components to 110 in MeshBase so that all of Professor Skewb's components fit.

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 903df2a4..598968b5 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -232,6 +232,7 @@ class FactoryCubit
 
     float E = 0.5f;
     float F = SQ2/2;
+    float G = SQ6/16;
     float[] vertices0 = { -E+E/4,E/4, E/4,-E+E/4, E/4,E/4};
     float[] bands0 = computeBands(0.028f,35,E/3,0.7f,7);
 
@@ -242,7 +243,7 @@ class FactoryCubit
     meshes[2] = meshes[0].copy(true);
     meshes[2].setEffectAssociation(0,4,0);
 
-    float[] vertices1 = { 0,0, F,0, 7*F/8,(SQ3/8)*F, 5*F/8,(3*SQ3/8)*F, F/2,(SQ3/2)*F };
+    float[] vertices1 = { -F/2,-2*G, F/2,-2*G, 3*F/8,-G, 1*F/8,G, 0,2*G };
     float[] bands1 = computeBands(0,0,1,0,3);
 
     meshes[3] = new MeshPolygon(vertices1,bands1,1,5);
@@ -545,7 +546,7 @@ class FactoryCubit
     Static3D center1= new Static3D(0,0,0);
     Static3D center2= new Static3D(-0.5f,-0.5f,-0.5f);
     Static3D move1  = new Static3D(-E/4,-E/4,0);
-    Static3D move2  = new Static3D(-0.5f,-0.5f,-0.5f);
+    Static3D move2  = new Static3D(-0.5f+SQ2/4,-0.5f+SQ6/8,-0.5f);
 
     VertexEffect[] effect = new VertexEffect[10];
 
@@ -966,7 +967,7 @@ class FactoryCubit
     vertices[1] = new Static3D(+E*SQ2,      0, 0);
     vertices[2] = new Static3D(     0, -E*SQ2, 0);
     vertices[3] = new Static3D(     0, +E*SQ2, 0);
-    roundCorners(mesh,roundingCenter,vertices,0.10f,0.10f);
+    roundCorners(mesh,roundingCenter,vertices,0.06f,0.10f);
 
     mesh.mergeEffComponents();
     mesh.addEmptyTexComponent();
diff --git a/src/main/java/org/distorted/objects/TwistySkewb.java b/src/main/java/org/distorted/objects/TwistySkewb.java
index af48b98c..278af73c 100644
--- a/src/main/java/org/distorted/objects/TwistySkewb.java
+++ b/src/main/java/org/distorted/objects/TwistySkewb.java
@@ -128,7 +128,7 @@ public class TwistySkewb extends TwistyObject
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private int getNumCorners(int layers)
+  private int getNumCorners()
     {
     return 8;
     }
@@ -142,9 +142,9 @@ public class TwistySkewb extends TwistyObject
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private int getNumCenters(int layers)
+  private int getNumCentersPerFace(int layers)
     {
-    return ((layers-2)*(layers-2) + (layers-1)*(layers-1))*6;
+    return ((layers-2)*(layers-2) + (layers-1)*(layers-1));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -218,9 +218,9 @@ public class TwistySkewb extends TwistyObject
     final float DIST_EDGE   = (numLayers-1)*0.50f;
     final float DIST_CENTER = (numLayers-1)*0.50f;
 
-    final int numCorners = getNumCorners(numLayers);
+    final int numCorners = getNumCorners();
     final int numEdges   = getNumEdges(numLayers);
-    final int numCenters = getNumCenters(numLayers);
+    final int numCenters = 6*getNumCentersPerFace(numLayers);
 
     final Static3D[] CENTERS = new Static3D[numCorners+numEdges+numCenters];
 
@@ -340,10 +340,10 @@ public class TwistySkewb extends TwistyObject
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private Static4D getQuat(int cubit, int size)
+  private Static4D getQuat(int cubit, int numLayers)
     {
-    int numCorners = getNumCorners(size);
-    int numEdges   = getNumEdges(size);
+    int numCorners = getNumCorners();
+    int numEdges   = getNumEdges(numLayers);
 
     if( cubit<numCorners )
       {
@@ -361,7 +361,7 @@ public class TwistySkewb extends TwistyObject
       }
     else if( cubit<numCorners+numEdges )
       {
-      int edge = (cubit-numCorners)/(size-2);
+      int edge = (cubit-numCorners)/(numLayers-2);
 
       switch(edge)
         {
@@ -381,7 +381,7 @@ public class TwistySkewb extends TwistyObject
       }
     else
       {
-      int center = (cubit-numCorners-numEdges)/((size-2)*(size-2)+(size-1)*(size-1));
+      int center = (cubit-numCorners-numEdges)/getNumCentersPerFace(numLayers);
 
       switch(center)
         {
@@ -403,8 +403,8 @@ public class TwistySkewb extends TwistyObject
     {
     MeshBase mesh;
 
-    int numLayers = getNumLayers();
-    int numCorners = getNumCorners(numLayers);
+    int numLayers  = getNumLayers();
+    int numCorners = getNumCorners();
     int numEdges   = getNumEdges(numLayers);
 
     if( cubit<numCorners )
@@ -438,10 +438,10 @@ public class TwistySkewb extends TwistyObject
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  int getFaceColor(int cubit, int cubitface, int size)
+  int getFaceColor(int cubit, int cubitface, int numLayers)
     {
-    int numCorners = getNumCorners(size);
-    int numEdges   = getNumEdges(size);
+    int numCorners = getNumCorners();
+    int numEdges   = getNumEdges(numLayers);
 
     if( cubit<numCorners )
       {
@@ -449,12 +449,12 @@ public class TwistySkewb extends TwistyObject
       }
     else if( cubit<numCorners+numEdges )
       {
-      int edge = (cubit-numCorners)/(size-2);
+      int edge = (cubit-numCorners)/(numLayers-2);
       return mEdgeMap[edge][cubitface];
       }
     else
       {
-      int center = (cubit-numCorners-numEdges)/((size-2)*(size-2)+(size-1)*(size-1));
+      int center = (cubit-numCorners-numEdges)/getNumCentersPerFace(numLayers);
       return mCenterMap[center][cubitface];
       }
     }
@@ -618,11 +618,11 @@ public class TwistySkewb extends TwistyObject
     {
     int q = CUBITS[0].mQuatIndex;
 
-    int numLayers  = getNumLayers();
-    int numCorners = getNumCorners(numLayers);
-    int numEdges   = getNumEdges(numLayers);
-    int cornersAndEdges = numCorners + numEdges;
-    int cubitsPerFace = (numLayers-2)*(numLayers-2) + (numLayers-1)*(numLayers-1);
+    int numLayers      = getNumLayers();
+    int numCorners     = getNumCorners();
+    int numEdges       = getNumEdges(numLayers);
+    int cornersAndEdges= numCorners + numEdges;
+    int centersPerFace = getNumCentersPerFace(numLayers);
     int cubit, q1=q;
 
     for(cubit=0; cubit<cornersAndEdges; cubit++)
@@ -634,7 +634,7 @@ public class TwistySkewb extends TwistyObject
       {
       if( face%2==0 ) q1 = mulQuat(q, (face/2)+1);
 
-      for(int center=0; center<cubitsPerFace; center++)
+      for(int center=0; center<centersPerFace; center++)
         {
         if( CUBITS[cubit].mQuatIndex != q && CUBITS[cubit].mQuatIndex != q1 ) return false;
         cubit++;
