commit cc99cf917710b8a54229e6de292af2015083600b
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sat Sep 26 21:44:05 2020 +0100

    Progress with the Diamond. Everything working, expect one thing: half of the faces are upside down, and computing offset doesn't work on those faces properly.

diff --git a/src/main/java/org/distorted/objects/Movement.java b/src/main/java/org/distorted/objects/Movement.java
index 02733a3c..a5c80cd0 100644
--- a/src/main/java/org/distorted/objects/Movement.java
+++ b/src/main/java/org/distorted/objects/Movement.java
@@ -38,7 +38,7 @@ public abstract class Movement
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  abstract boolean isInsideFace(float[] point);
+  abstract boolean isInsideFace(int face, float[] point);
   abstract void computeEnabledAxis(int face, float[] touchPoint, int[] enabledAxis);
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -60,8 +60,8 @@ public abstract class Movement
     mDistanceCenterFace3D = distance3D; // distance from the center of the object to each of its faces
     mDistanceCenterFace2D = distance2D; // distance from the center of a face to its edge
 
-    // mCastedRotAxis[1][2]{0,1} are the 2D coords of the 2nd axis cast onto the face defined by the
-    // 1st pair (axis,lr)
+    // mCastedRotAxis[1][2]{0,1} are the 2D coords of the 2nd rotAxis cast onto the face defined by the
+    // 1st faceAxis.
     mCastedRotAxis   = new float[mNumFaceAxis][rotAxis.length][2];
     mCastedRotAxis4D = new Static4D[mNumFaceAxis][rotAxis.length];
 
@@ -155,9 +155,7 @@ public abstract class Movement
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // given precomputed mCamera and mPoint, respectively camera and touch point positions in ScreenSpace,
 // compute point 'output[]' which:
-// 1) lies on a face of the Object, i.e. surface defined by (axis, distance from (0,0,0)) [and this
-//    distance is +-mDistanceCenterFace, depending if it is the face on the left or the right end of
-//    the axis] (lr=0 or 1, so (2lr-1)*mDistanceCenterFace)
+// 1) lies on a face of the Object, i.e. surface defined by (axis, distance from (0,0,0))
 // 2) is co-linear with mCamera and mPoint
 //
 // output = camera + alpha*(point-camera), where alpha = [dist-axis*camera] / [axis*(point-camera)]
@@ -256,7 +254,7 @@ public abstract class Movement
         {
         castTouchPointOntoFace(mFaceAxis[mLastTouchedFace], mTouch);
         convertTo2Dcoords(mTouch, mFaceAxis[mLastTouchedFace], mPoint2D);
-        if( isInsideFace(mPoint2D) ) return true;
+        if( isInsideFace(mLastTouchedFace,mPoint2D) ) return true;
         }
       }
 
diff --git a/src/main/java/org/distorted/objects/MovementCube.java b/src/main/java/org/distorted/objects/MovementCube.java
index ed96119e..f3142a10 100644
--- a/src/main/java/org/distorted/objects/MovementCube.java
+++ b/src/main/java/org/distorted/objects/MovementCube.java
@@ -19,20 +19,34 @@
 
 package org.distorted.objects;
 
+import org.distorted.library.type.Static3D;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class MovementCube extends Movement
 {
+  static final float DIST3D = 0.5f;
+  static final float DIST2D = 0.5f;
+
+  static final Static3D[] FACE_AXIS = new Static3D[]
+         {
+           new Static3D(1,0,0), new Static3D(-1,0,0),
+           new Static3D(0,1,0), new Static3D(0,-1,0),
+           new Static3D(0,0,1), new Static3D(0,0,-1)
+         };
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   MovementCube()
     {
-    super(TwistyCube.ROT_AXIS, TwistyCube.FACE_AXIS, 0.5f, 0.5f);
+    super(TwistyCube.ROT_AXIS, FACE_AXIS, DIST3D, DIST2D);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  boolean isInsideFace(float[] p)
+  boolean isInsideFace(int face, float[] p)
     {
-    return ( p[0]<=0.5f && p[0]>=-0.5f && p[1]<=0.5f && p[1]>=-0.5f );
+    return ( p[0]<=DIST2D && p[0]>=-DIST2D && p[1]<=DIST2D && p[1]>=-DIST2D );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/MovementDiamond.java b/src/main/java/org/distorted/objects/MovementDiamond.java
index 0a5e5b68..cf053a15 100644
--- a/src/main/java/org/distorted/objects/MovementDiamond.java
+++ b/src/main/java/org/distorted/objects/MovementDiamond.java
@@ -19,97 +19,62 @@
 
 package org.distorted.objects;
 
+import org.distorted.library.type.Static3D;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class MovementDiamond extends Movement
 {
-  MovementDiamond()
-    {
-    super(TwistyDiamond.ROT_AXIS, TwistyDiamond.FACE_AXIS, 0.25f, 0.25f);
-    }
+  private static final float SQ3 = (float)Math.sqrt(3);
+  private static final float SQ6 = (float)Math.sqrt(6);
+
+  static final float DIST3D = SQ6/6;
+  static final float DIST2D = SQ3/6;
+
+  static final Static3D[] FACE_AXIS = new Static3D[]
+         {
+           new Static3D(+SQ6/3,+SQ3/3,     0), new Static3D(-SQ6/3,-SQ3/3,     0),
+           new Static3D(-SQ6/3,+SQ3/3,     0), new Static3D(+SQ6/3,-SQ3/3,     0),
+           new Static3D(     0,+SQ3/3,+SQ6/3), new Static3D(     0,-SQ3/3,-SQ6/3),
+           new Static3D(     0,+SQ3/3,-SQ6/3), new Static3D(     0,-SQ3/3,+SQ6/3)
+         };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// _____________
-// |  \  0  /  |
-// |   \   /   |
-// | 3 |   | 1 |
-// |   /   \   |
-// |  /  2  \  |
-// -------------
 
-  private int getQuarter(float[] touchPoint)
+  MovementDiamond()
     {
-    boolean p0 = touchPoint[1] >= touchPoint[0];
-    boolean p1 = touchPoint[1] >=-touchPoint[0];
-
-    if( p0 )  return p1 ? 0:3;
-    else      return p1 ? 1:2;
+    super(TwistyDiamond.ROT_AXIS, FACE_AXIS, DIST3D, DIST2D);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  boolean isInsideFace(float[] p)
+  boolean isInsideFace(int face, float[] p)
     {
-    return ( p[0]<=0.25f && p[0]>=-0.25f && p[1]<=0.25f && p[1]>=-0.25f );
+    float y = (face%2 == 0 ? p[1] : -p[1]);
+    float x = p[0];
+
+    return (y >= -DIST2D) && (y <= DIST2D*(2-6*x)) && (y <= DIST2D*(2+6*x));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   void computeEnabledAxis(int face, float[] touchPoint, int[] enabled)
     {
-    enabled[0] = 2;
-
-    int quarter = getQuarter(touchPoint);
+    enabled[0] = 3;
 
     switch(face)
       {
-      case 0: switch(quarter)
-                {
-                case 0: enabled[1]=0; enabled[2]=1; break;
-                case 1: enabled[1]=3; enabled[2]=1; break;
-                case 2: enabled[1]=2; enabled[2]=3; break;
-                case 3: enabled[1]=0; enabled[2]=2; break;
-                }
-              break;
-      case 1: switch(quarter)
-                {
-                case 0: enabled[1]=2; enabled[2]=3; break;
-                case 1: enabled[1]=3; enabled[2]=1; break;
-                case 2: enabled[1]=0; enabled[2]=1; break;
-                case 3: enabled[1]=0; enabled[2]=2; break;
-                }
-              break;
-      case 2: switch(quarter)
-                {
-                case 0: enabled[1]=1; enabled[2]=2; break;
-                case 1: enabled[1]=0; enabled[2]=1; break;
-                case 2: enabled[1]=0; enabled[2]=3; break;
-                case 3: enabled[1]=2; enabled[2]=3; break;
-                }
+      case 0:
+      case 1: enabled[1]=1; enabled[2]=2; enabled[3]=3;
               break;
-      case 3: switch(quarter)
-                {
-                case 0: enabled[1]=1; enabled[2]=2; break;
-                case 1: enabled[1]=2; enabled[2]=3; break;
-                case 2: enabled[1]=0; enabled[2]=3; break;
-                case 3: enabled[1]=0; enabled[2]=1; break;
-                }
+      case 2:
+      case 3: enabled[1]=0; enabled[2]=2; enabled[3]=3;
               break;
-      case 4: switch(quarter)
-                {
-                case 0: enabled[1]=0; enabled[2]=3; break;
-                case 1: enabled[1]=0; enabled[2]=2; break;
-                case 2: enabled[1]=1; enabled[2]=2; break;
-                case 3: enabled[1]=1; enabled[2]=3; break;
-                }
+      case 4:
+      case 5: enabled[1]=0; enabled[2]=1; enabled[3]=3;
               break;
-      case 5: switch(quarter)
-                {
-                case 0: enabled[1]=1; enabled[2]=2; break;
-                case 1: enabled[1]=0; enabled[2]=2; break;
-                case 2: enabled[1]=0; enabled[2]=3; break;
-                case 3: enabled[1]=1; enabled[2]=3; break;
-                }
+      case 6:
+      case 7: enabled[1]=0; enabled[2]=1; enabled[3]=2;
               break;
       }
     }
diff --git a/src/main/java/org/distorted/objects/MovementDino.java b/src/main/java/org/distorted/objects/MovementDino.java
index 88dd98ab..e9187345 100644
--- a/src/main/java/org/distorted/objects/MovementDino.java
+++ b/src/main/java/org/distorted/objects/MovementDino.java
@@ -19,13 +19,27 @@
 
 package org.distorted.objects;
 
+import org.distorted.library.type.Static3D;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class MovementDino extends Movement
 {
+  static final float DIST3D = 0.5f;
+  static final float DIST2D = 0.5f;
+
+  static final Static3D[] FACE_AXIS = new Static3D[]
+         {
+           new Static3D(1,0,0), new Static3D(-1,0,0),
+           new Static3D(0,1,0), new Static3D(0,-1,0),
+           new Static3D(0,0,1), new Static3D(0,0,-1)
+         };
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   MovementDino()
     {
-    super(TwistyDino.ROT_AXIS, TwistyDino.FACE_AXIS, 0.5f, 0.5f);
+    super(TwistyDino.ROT_AXIS, FACE_AXIS, DIST3D, DIST2D);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -48,9 +62,9 @@ class MovementDino extends Movement
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  boolean isInsideFace(float[] p)
+  boolean isInsideFace(int face, float[] p)
     {
-    return ( p[0]<=0.5f && p[0]>=-0.5f && p[1]<=0.5f && p[1]>=-0.5f );
+    return ( p[0]<=DIST2D && p[0]>=-DIST2D && p[1]<=DIST2D && p[1]>=-DIST2D );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/MovementHelicopter.java b/src/main/java/org/distorted/objects/MovementHelicopter.java
index 5f2e7782..bcc58824 100644
--- a/src/main/java/org/distorted/objects/MovementHelicopter.java
+++ b/src/main/java/org/distorted/objects/MovementHelicopter.java
@@ -19,13 +19,27 @@
 
 package org.distorted.objects;
 
+import org.distorted.library.type.Static3D;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class MovementHelicopter extends Movement
 {
+  static final float DIST3D = 1.0f/6;
+  static final float DIST2D = 1.0f/6;
+
+  static final Static3D[] FACE_AXIS = new Static3D[]
+         {
+           new Static3D(1,0,0), new Static3D(-1,0,0),
+           new Static3D(0,1,0), new Static3D(0,-1,0),
+           new Static3D(0,0,1), new Static3D(0,0,-1)
+         };
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   MovementHelicopter()
     {
-    super(TwistyHelicopter.ROT_AXIS, TwistyHelicopter.FACE_AXIS, 0.166f, 0.166f);
+    super(TwistyHelicopter.ROT_AXIS, FACE_AXIS, DIST3D, DIST2D);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -48,9 +62,9 @@ class MovementHelicopter extends Movement
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  boolean isInsideFace(float[] p)
+  boolean isInsideFace(int face, float[] p)
     {
-    return ( p[0]<=0.166f && p[0]>=-0.166f && p[1]<=0.166f && p[1]>=-0.166f );
+    return ( p[0]<=DIST2D && p[0]>=-DIST2D && p[1]<=DIST2D && p[1]>=-DIST2D );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/MovementPyraminx.java b/src/main/java/org/distorted/objects/MovementPyraminx.java
index e608d85f..781ea551 100644
--- a/src/main/java/org/distorted/objects/MovementPyraminx.java
+++ b/src/main/java/org/distorted/objects/MovementPyraminx.java
@@ -19,29 +19,39 @@
 
 package org.distorted.objects;
 
+import org.distorted.library.type.Static3D;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class MovementPyraminx extends Movement
 {
-  private static final float SQ6 = (float)Math.sqrt(6);
+  private static final float SQ2 = (float)Math.sqrt(2);
   private static final float SQ3 = (float)Math.sqrt(3);
+  private static final float SQ6 = (float)Math.sqrt(6);
+
+  static final float DIST3D = SQ6/12;
+  static final float DIST2D = SQ3/6;
+
+  static final Static3D[] FACE_AXIS = new Static3D[]
+         {
+           new Static3D(     0,      -1,       0 ),
+           new Static3D(     0,  1.0f/3,-2*SQ2/3 ),
+           new Static3D( SQ6/3,  1.0f/3,   SQ2/3 ),
+           new Static3D(-SQ6/3,  1.0f/3,   SQ2/3 )
+         };
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   MovementPyraminx()
     {
-    super(TwistyPyraminx.ROT_AXIS, TwistyPyraminx.FACE_AXIS, SQ6/12, SQ3/6);
+    super(TwistyPyraminx.ROT_AXIS, FACE_AXIS, DIST3D, DIST2D);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  boolean isInsideFace(float[] p)
+  boolean isInsideFace(int face, float[] p)
     {
-    boolean a1 = p[1] >= -SQ3/6;
-    boolean a2 = p[1] <=  SQ3*(1.0f/3 + p[0]);
-    boolean a3 = p[1] <=  SQ3*(1.0f/3 - p[0]);
-
-    return a1 && a2 && a3;
+    return (p[1] >= -DIST2D) && (p[1] <=  DIST2D*(2+6*p[0])) && (p[1] <=  DIST2D*(2-6*p[0]));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/MovementSkewb.java b/src/main/java/org/distorted/objects/MovementSkewb.java
index b3e46995..d9804ba2 100644
--- a/src/main/java/org/distorted/objects/MovementSkewb.java
+++ b/src/main/java/org/distorted/objects/MovementSkewb.java
@@ -19,13 +19,27 @@
 
 package org.distorted.objects;
 
+import org.distorted.library.type.Static3D;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class MovementSkewb extends Movement
 {
+  static final float DIST3D = 0.25f;
+  static final float DIST2D = 0.25f;
+
+  static final Static3D[] FACE_AXIS = new Static3D[]
+         {
+           new Static3D(1,0,0), new Static3D(-1,0,0),
+           new Static3D(0,1,0), new Static3D(0,-1,0),
+           new Static3D(0,0,1), new Static3D(0,0,-1)
+         };
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   MovementSkewb()
     {
-    super(TwistySkewb.ROT_AXIS, TwistySkewb.FACE_AXIS, 0.25f, 0.25f);
+    super(TwistySkewb.ROT_AXIS, FACE_AXIS, DIST3D, DIST2D);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -48,9 +62,9 @@ class MovementSkewb extends Movement
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  boolean isInsideFace(float[] p)
+  boolean isInsideFace(int face, float[] p)
     {
-    return ( p[0]<=0.25f && p[0]>=-0.25f && p[1]<=0.25f && p[1]>=-0.25f );
+    return ( p[0]<=DIST2D && p[0]>=-DIST2D && p[1]<=DIST2D && p[1]>=-DIST2D );
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/TwistyCube.java b/src/main/java/org/distorted/objects/TwistyCube.java
index 7782ca77..13e891f8 100644
--- a/src/main/java/org/distorted/objects/TwistyCube.java
+++ b/src/main/java/org/distorted/objects/TwistyCube.java
@@ -55,14 +55,6 @@ class TwistyCube extends TwistyObject
            new Static3D(0,0,1)
          };
 
-  // the six axis that determine the faces
-  static final Static3D[] FACE_AXIS = new Static3D[]
-         {
-           new Static3D(1,0,0), new Static3D(-1,0,0),
-           new Static3D(0,1,0), new Static3D(0,-1,0),
-           new Static3D(0,0,1), new Static3D(0,0,-1)
-         };
-
   private static final int[] FACE_COLORS = new int[]
          {
            COLOR_YELLOW, COLOR_WHITE,
diff --git a/src/main/java/org/distorted/objects/TwistyDiamond.java b/src/main/java/org/distorted/objects/TwistyDiamond.java
index 0ee7f861..bac6cd90 100644
--- a/src/main/java/org/distorted/objects/TwistyDiamond.java
+++ b/src/main/java/org/distorted/objects/TwistyDiamond.java
@@ -58,17 +58,8 @@ public class TwistyDiamond extends TwistyObject
          {
            new Static3D(+SQ6/3,+SQ3/3,     0),
            new Static3D(-SQ6/3,+SQ3/3,     0),
-           new Static3D(     0,+SQ3/3,+SQ6/3),
-           new Static3D(     0,+SQ3/3,-SQ6/3)
-         };
-
-  // the eight axis that determine the faces
-  static final Static3D[] FACE_AXIS = new Static3D[]
-         {
-           new Static3D(+SQ6/3,+SQ3/3,     0), new Static3D(-SQ6/3,-SQ3/3,     0),
-           new Static3D(-SQ6/3,+SQ3/3,     0), new Static3D(+SQ6/3,-SQ3/3,     0),
-           new Static3D(     0,+SQ3/3,+SQ6/3), new Static3D(     0,-SQ3/3,-SQ6/3),
-           new Static3D(     0,+SQ3/3,-SQ6/3), new Static3D(     0,-SQ3/3,+SQ6/3)
+           new Static3D(     0,-SQ3/3,-SQ6/3),
+           new Static3D(     0,-SQ3/3,+SQ6/3)
          };
 
   private static final int[] FACE_COLORS = new int[]
@@ -537,7 +528,7 @@ public class TwistyDiamond extends TwistyObject
 
   float returnMultiplier()
     {
-    return 2.0f;
+    return 1.5f;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -571,7 +562,7 @@ public class TwistyDiamond extends TwistyObject
 
   public int computeRowFromOffset(float offset)
     {
-    return offset<0.25f ? 0:1;
+    return offset<SQ3/12 ? 0:1;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/TwistyDino.java b/src/main/java/org/distorted/objects/TwistyDino.java
index 18c25978..fa366ee4 100644
--- a/src/main/java/org/distorted/objects/TwistyDino.java
+++ b/src/main/java/org/distorted/objects/TwistyDino.java
@@ -59,14 +59,6 @@ public abstract class TwistyDino extends TwistyObject
            new Static3D(+SQ3/3,-SQ3/3,-SQ3/3)
          };
 
-  // the six axis that determine the faces
-  static final Static3D[] FACE_AXIS = new Static3D[]
-         {
-           new Static3D(1,0,0), new Static3D(-1,0,0),
-           new Static3D(0,1,0), new Static3D(0,-1,0),
-           new Static3D(0,0,1), new Static3D(0,0,-1)
-         };
-
   private static final int[] FACE_COLORS = new int[]
          {
            COLOR_YELLOW, COLOR_WHITE,
diff --git a/src/main/java/org/distorted/objects/TwistyHelicopter.java b/src/main/java/org/distorted/objects/TwistyHelicopter.java
index 7be6cfaa..0e7c8d15 100644
--- a/src/main/java/org/distorted/objects/TwistyHelicopter.java
+++ b/src/main/java/org/distorted/objects/TwistyHelicopter.java
@@ -64,14 +64,6 @@ public class TwistyHelicopter extends TwistyObject
            new Static3D(-SQ2/2, -SQ2/2,      0)
          };
 
-  // the six axis that determine the faces
-  static final Static3D[] FACE_AXIS = new Static3D[]
-         {
-           new Static3D(1,0,0), new Static3D(-1,0,0),
-           new Static3D(0,1,0), new Static3D(0,-1,0),
-           new Static3D(0,0,1), new Static3D(0,0,-1)
-         };
-
   private static final int[] FACE_COLORS = new int[]
          {
            COLOR_YELLOW, COLOR_WHITE,
diff --git a/src/main/java/org/distorted/objects/TwistyPyraminx.java b/src/main/java/org/distorted/objects/TwistyPyraminx.java
index db244ad1..7841c727 100644
--- a/src/main/java/org/distorted/objects/TwistyPyraminx.java
+++ b/src/main/java/org/distorted/objects/TwistyPyraminx.java
@@ -58,14 +58,6 @@ public class TwistyPyraminx extends TwistyObject
            new Static3D( SQ2*SQ3/3,  -1.0f/3,  -SQ2/3 )
          };
 
-  static final Static3D[] FACE_AXIS = new Static3D[]
-         {
-           new Static3D(         0,      -1,       0 ),
-           new Static3D(         0,  1.0f/3,-2*SQ2/3 ),
-           new Static3D( SQ2*SQ3/3,  1.0f/3,   SQ2/3 ),
-           new Static3D(-SQ2*SQ3/3,  1.0f/3,   SQ2/3 )
-         };
-
   private static final int[] FACE_COLORS = new int[]
          {
            COLOR_GREEN , COLOR_YELLOW,
diff --git a/src/main/java/org/distorted/objects/TwistySkewb.java b/src/main/java/org/distorted/objects/TwistySkewb.java
index 5ea8ed18..15eecc60 100644
--- a/src/main/java/org/distorted/objects/TwistySkewb.java
+++ b/src/main/java/org/distorted/objects/TwistySkewb.java
@@ -62,14 +62,6 @@ public class TwistySkewb extends TwistyObject
            new Static3D(+SQ3/3,-SQ3/3,-SQ3/3)
          };
 
-  // the six axis that determine the faces
-  static final Static3D[] FACE_AXIS = new Static3D[]
-         {
-           new Static3D(1,0,0), new Static3D(-1,0,0),
-           new Static3D(0,1,0), new Static3D(0,-1,0),
-           new Static3D(0,0,1), new Static3D(0,0,-1)
-         };
-
   private static final int[] FACE_COLORS = new int[]
          {
            COLOR_YELLOW, COLOR_WHITE,
