commit 18a5f95f340f431ff0c526176d9e2223f17c7464
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Oct 19 12:45:02 2020 +0100

    Progress with the Ivy

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 27c14939..eebc7f8b 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -39,7 +39,7 @@ class FactoryCubit
   private static final float SQ3 = (float)Math.sqrt(3);
   private static final float SQ6 = (float)Math.sqrt(6);
 
-  private static final float IVY_D = 0.05f;
+  private static final float IVY_D = 0.10f;
   private static final int   IVY_N = 8;
 
   private static final Static1D RADIUS = new Static1D(1);
@@ -502,9 +502,7 @@ class FactoryCubit
 
   MeshBase createFacesIvyCorner()
     {
-    MeshBase mesh = createFacesSkewbCorner();
-    mesh.addEmptyTexComponent();
-    return mesh;
+    return createFacesSkewbCorner();
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -514,6 +512,7 @@ class FactoryCubit
     MeshBase[] meshes = new MeshBase[2];
 
     final float angle = (float)Math.PI/(2*IVY_N);
+    final float CORR  = 1.0f - IVY_D*SQ2;
     float[] vertices = new float[4*IVY_N];
 
     for(int i=0; i<IVY_N; i++)
@@ -521,16 +520,16 @@ class FactoryCubit
       float sin = (float)Math.sin(i*angle);
       float cos = (float)Math.cos(i*angle);
 
-      vertices[2*i          ] = 0.5f-cos;
-      vertices[2*i+1        ] = 0.5f-sin;
-      vertices[2*i  +2*IVY_N] = cos-0.5f;
-      vertices[2*i+1+2*IVY_N] = sin-0.5f;
+      vertices[2*i          ] = CORR*(0.5f-cos);
+      vertices[2*i+1        ] = CORR*(0.5f-sin);
+      vertices[2*i  +2*IVY_N] = CORR*(cos-0.5f);
+      vertices[2*i+1+2*IVY_N] = CORR*(sin-0.5f);
       }
 
-    float[] bands0 = computeBands(+0.08f,35,0.5f,0.7f,6);
+    float[] bands0 = computeBands(+0.05f,35,0.5f,0.5f,5);
     float[] bands1 = computeBands(-0.10f,45,0.5f,0.0f,2);
 
-    meshes[0] = new MeshPolygon(vertices,bands0,1,1);
+    meshes[0] = new MeshPolygon(vertices,bands0,0,0);
     meshes[0].setEffectAssociation(0,1,0);
     meshes[1] = new MeshPolygon(vertices,bands1,0,0);
     meshes[1].setEffectAssociation(0,2,0);
@@ -1226,19 +1225,19 @@ class FactoryCubit
     {
     MeshBase mesh = createFacesIvyFace();
 
-    Static3D center = new Static3D(0.0f,0.0f,-0.5f);
+    float DIST = SQ2*(0.5f-IVY_D);
+    Static3D center = new Static3D(0.0f,0.0f,-0.0f);
     Static3D[] vertices = new Static3D[2];
-    vertices[0] = new Static3D(+SQ2/2 -IVY_D,-SQ2/2 +IVY_D,+0.0f);
-    vertices[1] = new Static3D(-SQ2/2 +IVY_D,+SQ2/2 -IVY_D,+0.0f);
+    vertices[0] = new Static3D(+DIST,-DIST,+0.0f);
+    vertices[1] = new Static3D(-DIST,+DIST,+0.0f);
 
-    roundCorners(mesh,center,vertices,0.06f,0.12f);
+    roundCorners(mesh,center,vertices,0.10f,0.30f);
 
     mesh.mergeEffComponents();
     mesh.addEmptyTexComponent();
     mesh.addEmptyTexComponent();
     mesh.addEmptyTexComponent();
     mesh.addEmptyTexComponent();
-    mesh.addEmptyTexComponent();
 
     return mesh;
     }
diff --git a/src/main/java/org/distorted/objects/TwistyIvy.java b/src/main/java/org/distorted/objects/TwistyIvy.java
index 878814b3..eb273c72 100644
--- a/src/main/java/org/distorted/objects/TwistyIvy.java
+++ b/src/main/java/org/distorted/objects/TwistyIvy.java
@@ -40,7 +40,7 @@ import static org.distorted.effects.scramble.ScrambleEffect.START_AXIS;
 
 public class TwistyIvy extends TwistyObject
 {
-  private static final int FACES_PER_CUBIT =7;
+  private static final int FACES_PER_CUBIT =6;
 
   // the four rotation axis of a RubikIvy. Must be normalized.
   static final Static3D[] ROT_AXIS = new Static3D[]
@@ -76,22 +76,19 @@ public class TwistyIvy extends TwistyObject
            new Static4D(  0.5f, -0.5f, -0.5f, -0.5f )
          };
 
-  private static final int[][] mCornerMap =
+  private static final int[][] mFaceMap =
          {
-           {  4, 2, 0, 12,12,12,12 },
-           {  5, 2, 1, 12,12,12,12 },
-           {  4, 3, 1, 12,12,12,12 },
-           {  5, 3, 0, 12,12,12,12 },
-         };
-
-  private static final int[][] mCenterMap =
-         {
-           {  6, 12,12,12,12,12,12 },
-           {  7, 12,12,12,12,12,12 },
-           {  8, 12,12,12,12,12,12 },
-           {  9, 12,12,12,12,12,12 },
-           { 10, 12,12,12,12,12,12 },
-           { 11, 12,12,12,12,12,12 },
+           {  4, 2, 0, 12,12,12 },
+           {  5, 2, 1, 12,12,12 },
+           {  4, 3, 1, 12,12,12 },
+           {  5, 3, 0, 12,12,12 },
+
+           {  6, 12,12,12,12,12 },
+           {  7, 12,12,12,12,12 },
+           {  8, 12,12,12,12,12 },
+           {  9, 12,12,12,12,12 },
+           { 10, 12,12,12,12,12 },
+           { 11, 12,12,12,12,12 },
          };
 
   private static MeshBase mCornerMesh, mFaceMesh;
@@ -228,14 +225,7 @@ public class TwistyIvy extends TwistyObject
 
   int getFaceColor(int cubit, int cubitface, int numLayers)
     {
-    if( cubit<4 )
-      {
-      return mCornerMap[cubit][cubitface];
-      }
-    else
-      {
-      return mCenterMap[cubit-4][cubitface];
-      }
+    return mFaceMap[cubit][cubitface];
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
