commit 0b8ffe1aef07f537427084a2f89b1e2608a9c8bb
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Mon Dec 14 00:15:58 2020 +0100

    Progress with the Rex Cube (stickers)

diff --git a/src/main/java/org/distorted/objects/FactoryCubit.java b/src/main/java/org/distorted/objects/FactoryCubit.java
index 736db65c..35529593 100644
--- a/src/main/java/org/distorted/objects/FactoryCubit.java
+++ b/src/main/java/org/distorted/objects/FactoryCubit.java
@@ -1521,7 +1521,7 @@ class FactoryCubit
     Static3D center = new Static3D(0.0f,0.0f,-H);
     Static3D[] vertices = new Static3D[1];
     vertices[0] = new Static3D(+G,-G,+0.0f);
-    roundCorners(mesh,center,vertices,0.12f,0.15f);
+    roundCorners(mesh,center,vertices,0.08f,0.10f);
 
     mesh.mergeEffComponents();
     mesh.addEmptyTexComponent();
@@ -1555,7 +1555,7 @@ class FactoryCubit
     Static3D[] vertices = new Static3D[2];
     vertices[0] = new Static3D(+0.5f,+0.0f,+0.0f);
     vertices[1] = new Static3D(-0.5f,+0.0f,+0.0f);
-    roundCorners(mesh,center,vertices,0.08f,0.15f);
+    roundCorners(mesh,center,vertices,0.06f,0.10f);
 
     mesh.mergeEffComponents();
 
diff --git a/src/main/java/org/distorted/objects/FactorySticker.java b/src/main/java/org/distorted/objects/FactorySticker.java
index b1ce2d0b..3707badd 100644
--- a/src/main/java/org/distorted/objects/FactorySticker.java
+++ b/src/main/java/org/distorted/objects/FactorySticker.java
@@ -245,7 +245,6 @@ class FactorySticker
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// TODO
 
   void drawRexCornerSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke, float radius)
     {
@@ -257,9 +256,9 @@ class FactorySticker
     paint.setStyle(Paint.Style.STROKE);
     paint.setStrokeWidth(stroke*TEXTURE_HEIGHT);
 
-    float T  = (0.5f-REX_D)*SQ2*(SQ3-1);
-    float H1 = T*(1.0f + 2*SQ3/3);
-    float H2 = T*(0.5f +   SQ3/6);
+    float F  = (0.5f-REX_D)*SQ2*(SQ3-1);
+    float H1 = F*(1.0f + 2*SQ3/3);
+    float H2 = F*(0.5f +   SQ3/6);
     float D  = H2*SQ3;
 
     float cx1 = left+ TEXTURE_HEIGHT*0.5f;
@@ -274,17 +273,19 @@ class FactorySticker
     canvas.drawArc( cx1-R1, cy1-R1, cx1+R1, cy1+R1, 255, 30, false ,paint);
     canvas.drawArc( cx2-R1, cy2-R1, cx2+R1, cy2+R1, 315, 30, false ,paint);
     canvas.drawArc( cx3-R1, cy3-R1, cx3+R1, cy3+R1, 195, 30, false ,paint);
-/*
+
     float cx   = left+ TEXTURE_HEIGHT*0.5f;
     float cy   = top + TEXTURE_HEIGHT*0.5f;
     float R2   = radius*TEXTURE_HEIGHT;
-    float dist = ( (0.5f-REX_D)*(SQ3-1) - (2*SQ3/3)*radius )*TEXTURE_HEIGHT;
-
-    canvas.drawArc( cx+dist-R2, cy-R2, cx+dist+R2, cy+R2, 330, 60, false ,paint);
-    canvas.drawArc( cx-R2, cy+dist-R2, cx+R2, cy+dist+R2,  60, 60, false ,paint);
-    canvas.drawArc( cx-dist-R2, cy-R2, cx-dist+R2, cy+R2, 150, 60, false ,paint);
-    canvas.drawArc( cx-R2, cy-dist-R2, cx+R2, cy-dist+R2, 240, 60, false ,paint);
- */
+    float dist = ( (SQ3/3)*F - SQ2*radius )*TEXTURE_HEIGHT;
+    float dist2= 1.0f*(SQ3/3)*F*TEXTURE_HEIGHT;
+    float tmp  = SQ2*radius*TEXTURE_HEIGHT;
+    float distX= (SQ3/2)*dist2 - 1.05f*tmp;
+    float distY= (0.5f )*dist2 - 0.90f*tmp;
+
+    canvas.drawArc( cx      -R2, cy-dist -R2, cx      +R2, cy-dist +R2, 225, 90, false ,paint);
+    canvas.drawArc( cx-distX-R2, cy+distY-R2, cx-distX+R2, cy+distY+R2,  75,120, false ,paint);
+    canvas.drawArc( cx+distX-R2, cy+distY-R2, cx+distX+R2, cy+distY+R2, 345,120, false ,paint);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -326,12 +327,37 @@ class FactorySticker
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
-// TODO
 
   void drawRexEdgeSticker(Canvas canvas, Paint paint, int left, int top, int color, float stroke, float radius)
     {
     paint.setColor(color);
     paint.setStyle(Paint.Style.FILL);
     canvas.drawRect(left,top,left+TEXTURE_HEIGHT,top+TEXTURE_HEIGHT,paint);
+
+    paint.setColor(COLOR_BLACK);
+    paint.setStyle(Paint.Style.STROKE);
+    paint.setStrokeWidth(stroke*TEXTURE_HEIGHT);
+
+    final float D = 0.5f - REX_D;
+    final float F = 0.5f*(0.5f - D*(SQ3-1));
+
+    float cx1 = left+ TEXTURE_HEIGHT*REX_D;
+    float cy  = top + TEXTURE_HEIGHT*(1-REX_D-F+0.5f);
+    float cx2 = left+ TEXTURE_HEIGHT*(1-REX_D);
+    float R1  = 1.0f*TEXTURE_HEIGHT*(1-2*REX_D);
+
+    canvas.drawArc( cx1-R1, cy-R1, cx1+R1, cy+R1, 270, 30, false ,paint);
+    canvas.drawArc( cx2-R1, cy-R1, cx2+R1, cy+R1, 240, 30, false ,paint);
+
+    float cx = left + TEXTURE_HEIGHT*0.5f;
+    float R2 = radius*TEXTURE_HEIGHT;
+    cy       = top + TEXTURE_HEIGHT*(0.5f+F-(2*SQ3/3)*radius);
+
+    canvas.drawArc( cx-R2, cy-R2, cx+R2, cy+R2, 60, 60, false ,paint);
+
+    cy = top + (0.5f-F)*TEXTURE_HEIGHT;
+
+    paint.setStrokeWidth(0.6f*stroke*TEXTURE_HEIGHT);
+    canvas.drawLine(left, cy, left+TEXTURE_HEIGHT, cy, paint);
     }
   }
diff --git a/src/main/java/org/distorted/objects/TwistyRex.java b/src/main/java/org/distorted/objects/TwistyRex.java
index beccc19b..7886c39e 100644
--- a/src/main/java/org/distorted/objects/TwistyRex.java
+++ b/src/main/java/org/distorted/objects/TwistyRex.java
@@ -352,20 +352,21 @@ public class TwistyRex extends TwistyObject
     {
     int COLORS = FACE_COLORS.length;
     FactorySticker factory = FactorySticker.getInstance();
-    float S = 0.08f;
-    float R = 0.12f;
+    float S  = 0.04f;
+    float R1 = 0.12f;
+    float R2 = 0.06f;
 
     if( face<COLORS )
       {
-      factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R);
+      factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R2);
       }
     else if( face<2*COLORS )
       {
-      factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R);
+      factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R1);
       }
     else
       {
-      factory.drawRexEdgeSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R);
+      factory.drawRexEdgeSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R1);
       }
     }
 
