commit ca82444820fb341ca3bbf00408564984d6d1798d
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Apr 2 21:17:03 2021 +0200

    Any size Kilominx: finished

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 1f1f5f4d..34195689 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -31,8 +31,6 @@ import org.distorted.library.type.Static1D;
 import org.distorted.library.type.Static3D;
 import org.distorted.library.type.Static4D;
 
-import static org.distorted.objects.TwistyMegaminx.MEGA_D;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 class FactoryCubit
diff --git a/src/main/java/org/distorted/objects/ObjectList.java b/src/main/java/org/distorted/objects/ObjectList.java
index b8c554d4..1acef628 100644
--- a/src/main/java/org/distorted/objects/ObjectList.java
+++ b/src/main/java/org/distorted/objects/ObjectList.java
@@ -143,7 +143,7 @@ public enum ObjectList
   KILO (
          new int[][] {
                        {3 , 18, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
-                       {5 , 31, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
+                       {5 , 33, R.raw.kilo3, R.drawable.ui_small_kilo3, R.drawable.ui_medium_kilo3, R.drawable.ui_big_kilo3, R.drawable.ui_huge_kilo3} ,
                      },
          TwistyKilominx.class,
          new MovementMinx(),
diff --git a/src/main/java/org/distorted/objects/TwistyKilominx.java b/src/main/java/org/distorted/objects/TwistyKilominx.java
index 2d00f6a6..d5e01ea8 100644
--- a/src/main/java/org/distorted/objects/TwistyKilominx.java
+++ b/src/main/java/org/distorted/objects/TwistyKilominx.java
@@ -36,6 +36,7 @@ import org.distorted.main.RubikSurfaceView;
 import static org.distorted.objects.FactoryCubit.COS18;
 import static org.distorted.objects.FactoryCubit.COS54;
 import static org.distorted.objects.FactoryCubit.SIN18;
+import static org.distorted.objects.FactoryCubit.SIN54;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -477,27 +478,60 @@ public class TwistyKilominx extends TwistyMinx
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// TODO
 
   void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top)
     {
-    float S = 0.07f;
-    float R = 0.09f;
+    int COLORS = FACE_COLORS.length;
+    int variant = face/COLORS;
+    int numLayers = getNumLayers();
 
-    float A = 0.86f;
-    float X1= (SQ5+1)/8;
-    float Y1= (float)(Math.sqrt(2+0.4f*SQ5)/4);
-    float Y2= Y1 - (float)(Math.sqrt(10-2*SQ5)/8);
+    if( variant == (numLayers-1)/2 || numLayers==3 )
+      {
+      float S = 0.07f;
+      float R = 0.09f;
+
+      float A = 0.86f;
+      float X1= (SQ5+1)/8;
+      float Y1= (float)(Math.sqrt(2+0.4f*SQ5)/4);
+      float Y2= Y1 - (float)(Math.sqrt(10-2*SQ5)/8);
+
+      float[] vertices = { -X1, Y2, 0, -A*Y1, X1, Y2, 0, Y1 };
 
-    float[] vertices = { -X1, Y2, 0, -A*Y1, X1, Y2, 0, Y1 };
+      FactorySticker factory = FactorySticker.getInstance();
+      factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face%NUM_FACES], R);
 
-    FactorySticker factory = FactorySticker.getInstance();
-    factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face%NUM_FACES], R);
+      float MID = TEXTURE_HEIGHT*0.5f;
+      float WID = TEXTURE_HEIGHT*0.1f;
+      float HEI = TEXTURE_HEIGHT*(0.47f+Y1);
+      canvas.drawLine(left+MID-WID,top+HEI,left+MID+WID,top+HEI,paint);
+      }
+    else if( variant==0 )
+      {
+      float Y = COS54/(2*SIN54);
+      float R = 0.09f;
+      float S = 0.09f;
+      float[] vertices = { -0.5f, 0.0f, 0.0f, -Y, 0.5f, 0.0f, 0.0f, Y };
 
-    float MID = TEXTURE_HEIGHT*0.5f;
-    float WID = TEXTURE_HEIGHT*0.1f;
-    float HEI = TEXTURE_HEIGHT*(0.47f+Y1);
-    canvas.drawLine(left+MID-WID,top+HEI,left+MID+WID,top+HEI,paint);
+      FactorySticker factory = FactorySticker.getInstance();
+      factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face%COLORS], R);
+      }
+    else
+      {
+      float R = 0.07f;
+      float S = 0.07f;
+
+      float tmp   = (numLayers/3.0f)/(numLayers-1);
+      float height= tmp*COS18;
+      float width = tmp + (variant-1)*tmp*SIN18;
+      float D = height/COS18;
+      float W = D*SIN18;
+      float X1 = height/2;
+      float Y1 = width/2;
+      float[] vertices = { -X1,-Y1, X1, -Y1, X1, Y1+W,-X1, Y1 };
+
+      FactorySticker factory = FactorySticker.getInstance();
+      factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face%COLORS], R);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/objects/TwistyMegaminx.java b/src/main/java/org/distorted/objects/TwistyMegaminx.java
index 8a05c7ae..8fe9b057 100644
--- a/src/main/java/org/distorted/objects/TwistyMegaminx.java
+++ b/src/main/java/org/distorted/objects/TwistyMegaminx.java
@@ -435,7 +435,7 @@ public class TwistyMegaminx extends TwistyMinx
         float Y2 = 0.5f*width + W;
 
         R = 0.05f;
-        S = 0.07f;
+        S = 0.06f;
         vertices = new float[] { -X1, Y1, -X1, -Y1, X1, -Y2, X1, Y2 };
         }
       else
