commit bc9968ad98b040e55fd5f834fe1cb4666cce6301
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Jan 7 23:16:44 2022 +0100

    Implement the Windmill Cube

diff --git a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
index 92a5b75..cc8db2d 100644
--- a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
+++ b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
@@ -289,7 +289,7 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
 
     private void createMesh()
       {
-      int mode            =19;
+      int mode            =22;
       int numComponents   = 0;
       float[][] vertices  = null;
       int[][] vertIndexes = null;
@@ -1423,6 +1423,86 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
         numComponents = 9;
         }
 
+      ///// WINDMILL CORNER ///////////////////////////////////////////////////////////////
+
+      else if( mode==21 )
+        {
+        final float X = 1.8f;  // the cut goes from a corner and splits the opposing side 1.2 / 1.8
+        final float h = 3*X*X/(X*X+9);
+        final float d = h*X/3;
+        final float l = X/2;
+
+        vertices = new float[][]
+          {
+             {  -l, 0.5f, 0.0f },
+             {   l, 0.5f, 0.0f },
+             {   l,-0.5f, 0.0f },
+             {  -l,-0.5f, 0.0f },
+             { d-l, 0.5f,   -h },
+             { d-l,-0.5f,   -h },
+          };
+
+        vertIndexes = new int[][]
+          {
+             { 3,2,1,0 },
+             { 0,1,4 },
+             { 5,2,3 },
+             { 5,3,0,4 },
+             { 2,5,4,1 },
+          };
+
+        bands        = new float[][] { {0.03f,20,0.2f,0.4f,5,1,1}, {0.01f,20,0.2f,0.4f,5,1,1} };
+        bandIndexes  = new int[] { 0,0,0,1,1 };
+        corners      = new float[][] { {0.05f,0.10f} };
+        cornerIndexes= new int[] { 0,0,0,0,-1,-1 };
+        centers      = new float[][] { { d-l, 0.0f,-h } };
+        centerIndexes= new int[] { 0,0,0,0,-1,-1 };
+
+        numComponents = 5;
+        }
+
+      ///// WINDMILL EDGE ///////////////////////////////////////////////////////////////
+
+      else if( mode==22 )
+        {
+        final float X = 1.8f;  // the cut goes from a corner and splits the opposing side 1.2 / 1.8
+        final float h = 3*X*X/(X*X+9);
+        final float d = h*X/3;
+        final float H = 3*h/X;
+        final float l = (3-X)/2;
+
+        vertices = new float[][]
+          {
+             { -l, 0.5f, 0.0f },
+             {  l, 0.5f, 0.0f },
+             {  l,-0.5f, 0.0f },
+             { -l,-0.5f, 0.0f },
+             {h-l, 0.5f,  -H  },
+             {d+l, 0.5f,  -h  },
+             {d+l,-0.5f,  -h  },
+             {h-l,-0.5f,  -H  }
+          };
+
+        vertIndexes = new int[][]
+          {
+             { 3,2,1,0 },
+             { 0,1,5,4 },
+             { 7,6,2,3 },
+             { 2,6,5,1 },
+             { 6,7,4,5 },
+             { 7,3,0,4 }
+          };
+
+        bands        = new float[][] { {0.03f,20,0.2f,0.4f,5,1,1}, {0.01f,20,0.2f,0.4f,5,1,1} };
+        bandIndexes  = new int[] { 0,0,0,1,1,1 };
+        corners      = new float[][] { {0.05f,0.10f} };
+        cornerIndexes= new int[] { 0,0,0,0,-1,-1,-1,-1 };
+        centers      = new float[][] { {h-l, 0.5f, -H } };
+        centerIndexes= new int[] { 0,0,0,0,-1,-1,-1,-1 };
+
+        numComponents = 6;
+        }
+
       ///// END DEFINITIONS /////////////////////////////////////////////////////////////////
 
       FactoryCubit factory = FactoryCubit.getInstance();
@@ -1434,7 +1514,7 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
       int[] outer = new int[vertIndexes.length];
 
       factory.createNewFaceTransform(shape,outer);
-      mMesh = factory.createRoundedSolid(shape,face,numComponents, MESH_NICE );
+      mMesh = factory.createRoundedSolid(shape,face,MESH_NICE,numComponents);
 
       int numEff = mMesh.getNumEffComponents();
 
