commit c6f4bd1e6c8074932b310e74b9b47f591d6be603
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Dec 19 22:40:14 2021 +0100

    Trajber's Octahedron: first try.

diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index f948e1a..1055c87 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -12,7 +12,7 @@
         android:allowBackup="true"
         android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
 
-        <activity android:name=".TableOfContents">
+        <activity android:name=".TableOfContents" android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
diff --git a/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java b/src/main/java/org/distorted/examples/meshfile/MeshFileRenderer.java
index 5c80721..b067398 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            =17;
+      int mode            =20;
       int numComponents   = 0;
       float[][] vertices  = null;
       int[][] vertIndexes = null;
@@ -1293,6 +1293,134 @@ class MeshFileRenderer implements GLSurfaceView.Renderer, DistortedLibrary.Excep
         numComponents = 5;
         }
 
+      ///// TRAJBER'S FACE ///////////////////////////////////////////////////////////////
+
+      else if( mode==18 )
+        {
+        final float CUT = 1.0f/6;
+        final float LEN = 3*SQ2/2;
+
+        final float A = CUT*LEN;
+        final float B = A-LEN;
+
+        vertices = new float[][]
+          {
+             {    0,    0,    0},
+             {    0,    A,   -A},
+             {    0,   -A,   -A},
+             {    A,    0,   -A},
+             {   -A,    0,   -A},
+             {    A,    A, -2*A},
+             {    A,   -A, -2*A},
+             {   -A,    A, -2*A},
+             {   -A,   -A, -2*A},
+             {    A,    A,    B},
+             {    A,   -A,    B},
+             {   -A,    A,    B},
+             {   -A,   -A,    B}
+          };
+
+        vertIndexes = new int[][]
+          {
+             {0,3,5,1},
+             {0,2,6,3},
+             {0,4,8,2},
+             {0,1,7,4},
+             {3,6,10,9,5},
+             {2,8,12,10,6},
+             {4,7,11,12,8},
+             {1,5,9,11,7},
+             {9,10,12,11}
+          };
+
+         bands         = new float[][] { {0.05f,35,0.15f,0.3f,4,1,1},{0.00f,35,0.15f,0.3f,3,0,0} };
+         bandIndexes   = new int[] { 0,0,0,0,1,1,1,1,1 };
+         corners       = new float[][] { {0.03f,0.10f} };
+         cornerIndexes = new int[] { 0,-1,-1,-1,-1,0,0,0,0,-1,-1,-1,-1 };
+         centers       = new float[][] { {0.0f, 0.0f, -LEN/2} };
+         centerIndexes = new int[] { 0,-1,-1,-1,-1,0,0,0,0,-1,-1,-1,-1 };
+
+         numComponents = 9;
+         }
+
+      ///// TRAJBER'S EDGE ///////////////////////////////////////////////////////////////
+
+      else if( mode==19 )
+        {
+        final float CUT = 1.0f/6;
+        final float LEN = 3*SQ2/2;
+
+        final float A = CUT*LEN;
+        final float B = A-LEN;
+
+        vertices = new float[][]
+          {
+             {    A-LEN/2,    0,   -A+LEN/2},
+             {    A-LEN/2,    A, -2*A+LEN/2},
+             {    A-LEN/2,   -A, -2*A+LEN/2},
+             {   -B-LEN/2,    0,    B+LEN/2},
+             { -B-A-LEN/2,    A,    B+LEN/2},
+             { -B-A-LEN/2,   -A,    B+LEN/2},
+             {    A-LEN/2,    A,    B+LEN/2},
+             {    A-LEN/2,   -A,    B+LEN/2},
+          };
+
+        vertIndexes = new int[][]
+          {
+             {0,3,4,1},
+             {0,2,5,3},
+             {1,4,6},
+             {2,7,5},
+             {0,1,6,7,2},
+             {3,5,7,6,4}
+          };
+
+        bands        = new float[][] { {0.03f,35,0.15f,0.3f,3,1,1},{0.00f,35,0.15f,0.3f,3,0,0} };
+        bandIndexes  = new int[] { 0,0,1,1,1,1 };
+        corners      = new float[][] { {0.02f,0.10f} };
+        cornerIndexes= new int[] { 0,0,0,0,0,0,-1,-1 };
+        centers      = new float[][] { {-LEN/4, 0, -LEN/4} };
+        centerIndexes= new int[] { 0,0,0,0,0,0,-1,-1 };
+
+        numComponents = 9;
+        }
+
+      ///// TRAJBER'S CORNER ///////////////////////////////////////////////////////////////
+
+      else if( mode==20 )
+        {
+        final float CUT = 1.0f/6;
+        final float LEN = 3*SQ2/2;
+
+        final float A = CUT*LEN;
+        final float B = A-LEN;
+
+        vertices = new float[][]
+          {
+             {   A-LEN/3,   A-LEN/3, -2*A+2*LEN/3},
+             {-B-A-LEN/3,   A-LEN/3,    B+2*LEN/3},
+             {   A-LEN/3,-B-A-LEN/3,    B+2*LEN/3},
+             {   A-LEN/3,   A-LEN/3,    B+2*LEN/3},
+          };
+
+        vertIndexes = new int[][]
+          {
+             {0,1,2},
+             {0,1,3},
+             {0,2,3},
+             {1,3,2},
+          };
+
+        bands        = new float[][] { {0.05f,35,0.15f,0.3f,4,1,1},{0.00f,35,0.15f,0.3f,4,0,0} };
+        bandIndexes  = new int[] { 0,1,1,1 };
+        corners      = new float[][] { {0.02f,0.10f} };
+        cornerIndexes= new int[] { 0,0,0,-1 };
+        centers      = new float[][] { {(A-LEN/3)/2 , (A-LEN/3)/2 , (B-LEN/3)/2} };
+        centerIndexes= new int[] { 0,0,0,-1 };
+
+        numComponents = 9;
+        }
+
       ///// END DEFINITIONS /////////////////////////////////////////////////////////////////
 
       FactoryCubit factory = FactoryCubit.getInstance();
