Project

General

Profile

« Previous | Next » 

Revision 4e627d8b

Added by Leszek Koltunski over 3 years ago

Progress with the Kilominx.

View differences:

src/main/java/org/distorted/objects/TwistyMinx.java
41 41
public class TwistyMinx extends TwistyObject
42 42
{
43 43
  private static final int FACES_PER_CUBIT =6;
44
  private static final float AXIS_LEN = 1.0f/(float)Math.sqrt(2.5f+0.5f*SQ5);
45
  private static final float C0 = (SQ5-1)/4;
46
  private static final float C1 = (SQ5+1)/4;
44

  
45
  static final float C0 = (SQ5-1)/4;
46
  static final float C1 = (SQ5+1)/4;
47
  static final float C2 = (SQ5+3)/4;
48
  static final float C3 = (float)(Math.sqrt(10-2*SQ5)/4);  // cos(54 deg)
47 49

  
48 50
  // the six rotation axis of a RubikMegaminx. Must be normalized.
49 51
  static final Static3D[] ROT_AXIS = new Static3D[]
50 52
         {
51
           new Static3D( AXIS_LEN*C1, AXIS_LEN   , 0          ),
52
           new Static3D(-AXIS_LEN*C1, AXIS_LEN   , 0          ),
53
           new Static3D( 0          , AXIS_LEN*C1, AXIS_LEN   ),
54
           new Static3D( 0          ,-AXIS_LEN*C1, AXIS_LEN   ),
55
           new Static3D( AXIS_LEN   , 0          , AXIS_LEN*C1),
56
           new Static3D( AXIS_LEN   , 0          ,-AXIS_LEN*C1)
53
           new Static3D( C1/(2*C3), 1/(2*C3) , 0        ),
54
           new Static3D(-C1/(2*C3), 1/(2*C3) , 0        ),
55
           new Static3D( 0        , C1/(2*C3), 1/(2*C3) ),
56
           new Static3D( 0        ,-C1/(2*C3), 1/(2*C3) ),
57
           new Static3D( 1/(2*C3) , 0        , C1/(2*C3)),
58
           new Static3D( 1/(2*C3) , 0        ,-C1/(2*C3))
57 59
         };
58 60

  
59 61
  private static final int MINX_LGREEN = 0xff53aa00;
......
233 235

  
234 236
  Static3D[] getCubitPositions(int numLayers)
235 237
    {
236
    final float C0 = (SQ5+1)/4;
237
    final float C1 = (SQ5+3)/4;
238

  
239 238
    final Static3D[] CENTERS = new Static3D[20];
240 239

  
241
    CENTERS[ 0] = new Static3D( 0.0f, 0.5f,   C1);
242
    CENTERS[ 1] = new Static3D( 0.0f, 0.5f,  -C1);
243
    CENTERS[ 2] = new Static3D( 0.0f,-0.5f,   C1);
244
    CENTERS[ 3] = new Static3D( 0.0f,-0.5f,  -C1);
245
    CENTERS[ 4] = new Static3D(   C1, 0.0f, 0.5f);
246
    CENTERS[ 5] = new Static3D(   C1, 0.0f,-0.5f);
247
    CENTERS[ 6] = new Static3D(  -C1, 0.0f, 0.5f);
248
    CENTERS[ 7] = new Static3D(  -C1, 0.0f,-0.5f);
249
    CENTERS[ 8] = new Static3D( 0.5f,   C1, 0.0f);
250
    CENTERS[ 9] = new Static3D( 0.5f,  -C1, 0.0f);
251
    CENTERS[10] = new Static3D(-0.5f,   C1, 0.0f);
252
    CENTERS[11] = new Static3D(-0.5f,  -C1, 0.0f);
253
    CENTERS[12] = new Static3D(   C0,   C0,   C0);
254
    CENTERS[13] = new Static3D(   C0,   C0,  -C0);
255
    CENTERS[14] = new Static3D(   C0,  -C0,   C0);
256
    CENTERS[15] = new Static3D(   C0,  -C0,  -C0);
257
    CENTERS[16] = new Static3D(  -C0,   C0,   C0);
258
    CENTERS[17] = new Static3D(  -C0,   C0,  -C0);
259
    CENTERS[18] = new Static3D(  -C0,  -C0,   C0);
260
    CENTERS[19] = new Static3D(  -C0,  -C0,  -C0);
240
    CENTERS[ 0] = new Static3D( 0.0f, 0.5f,   C2);
241
    CENTERS[ 1] = new Static3D( 0.0f, 0.5f,  -C2);
242
    CENTERS[ 2] = new Static3D( 0.0f,-0.5f,   C2);
243
    CENTERS[ 3] = new Static3D( 0.0f,-0.5f,  -C2);
244
    CENTERS[ 4] = new Static3D(   C2, 0.0f, 0.5f);
245
    CENTERS[ 5] = new Static3D(   C2, 0.0f,-0.5f);
246
    CENTERS[ 6] = new Static3D(  -C2, 0.0f, 0.5f);
247
    CENTERS[ 7] = new Static3D(  -C2, 0.0f,-0.5f);
248
    CENTERS[ 8] = new Static3D( 0.5f,   C2, 0.0f);
249
    CENTERS[ 9] = new Static3D( 0.5f,  -C2, 0.0f);
250
    CENTERS[10] = new Static3D(-0.5f,   C2, 0.0f);
251
    CENTERS[11] = new Static3D(-0.5f,  -C2, 0.0f);
252
    CENTERS[12] = new Static3D(   C1,   C1,   C1);
253
    CENTERS[13] = new Static3D(   C1,   C1,  -C1);
254
    CENTERS[14] = new Static3D(   C1,  -C1,   C1);
255
    CENTERS[15] = new Static3D(   C1,  -C1,  -C1);
256
    CENTERS[16] = new Static3D(  -C1,   C1,   C1);
257
    CENTERS[17] = new Static3D(  -C1,   C1,  -C1);
258
    CENTERS[18] = new Static3D(  -C1,  -C1,   C1);
259
    CENTERS[19] = new Static3D(  -C1,  -C1,  -C1);
261 260

  
262 261
    return CENTERS;
263 262
    }
......
320 319
    float S = 0.08f;
321 320
    float R = 0.12f;
322 321

  
323
    float[] vertices = {  };   // TODO
322
    float X1= (SQ5+1)/8;
323
    float Y1= (float)(Math.sqrt(2+0.4f*SQ5)/4);
324
    float Y2= Y1 - (float)(Math.sqrt(10-2*SQ5)/8);
325

  
326
    float[] vertices = { -X1, Y2, 0, -Y1, X1, Y2, 0, Y1 };
324 327

  
325 328
    FactorySticker factory = FactorySticker.getInstance();
326 329
    factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face], R);

Also available in: Unified diff