Project

General

Profile

« Previous | Next » 

Revision 0203be88

Added by Leszek Koltunski over 3 years ago

Remove the need for RowChances.

View differences:

src/main/java/org/distorted/objects/TwistyBandagedAbstract.java
535 535
    return getNumLayers();
536 536
    }
537 537

  
538
///////////////////////////////////////////////////////////////////////////////////////////////////
539

  
540
  float[] getRowChances(int numLayers)
541
    {
542
    float[] chances = new float[numLayers];
543

  
544
    for(int i=0; i<numLayers; i++)
545
      {
546
      chances[i] = (i+1.0f) / numLayers;
547
      }
548

  
549
    return chances;
550
    }
551

  
552 538
///////////////////////////////////////////////////////////////////////////////////////////////////
553 539
// PUBLIC API
554 540

  
src/main/java/org/distorted/objects/TwistyBandagedEvil.java
263 263
      case 1: mUseX = true ; mUseY = false; mUseZ = true ; break;
264 264
      case 2: mUseX = true ; mUseY = true ; mUseZ = false; break;
265 265
      }
266

  
267
    //android.util.Log.e("D", (info[0]==0 ? "X" : (info[0]==1 ? "Y" : "Z")) + info[2] +" --> "+info[3]);
268 266
    }
269 267

  
270 268
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/objects/TwistyBandagedFused.java
103 103
      }
104 104

  
105 105
    float rowFloat = rnd.nextFloat();
106
    int numLayers = getNumLayers();
106 107

  
107
    for(int row=0; row<mRowChances.length; row++)
108
    for(int row=0; row<numLayers; row++)
108 109
      {
109
      if( rowFloat<=mRowChances[row] )
110
      if( rowFloat*numLayers <= row+1 )
110 111
        {
111 112
        scramble[num][1] = row;
112 113
        break;
src/main/java/org/distorted/objects/TwistyCube.java
277 277
    return getNumLayers();
278 278
    }
279 279

  
280
///////////////////////////////////////////////////////////////////////////////////////////////////
281

  
282
  float[] getRowChances(int numLayers)
283
    {
284
    float[] chances = new float[numLayers];
285

  
286
    for(int i=0; i<numLayers; i++)
287
      {
288
      chances[i] = (i+1.0f) / numLayers;
289
      }
290

  
291
    return chances;
292
    }
293

  
294 280
///////////////////////////////////////////////////////////////////////////////////////////////////
295 281
// PUBLIC API
296 282

  
......
321 307
      }
322 308

  
323 309
    float rowFloat = rnd.nextFloat();
310
    int numLayers = getNumLayers();
324 311

  
325
    for(int row=0; row<mRowChances.length; row++)
312
    for(int row=0; row<numLayers; row++)
326 313
      {
327
      if( rowFloat<=mRowChances[row] )
314
      if( rowFloat*numLayers <= row+1 )
328 315
        {
329 316
        scramble[num][1] = row;
330 317
        break;
src/main/java/org/distorted/objects/TwistyDiamond.java
500 500
    return 1.5f;
501 501
    }
502 502

  
503
///////////////////////////////////////////////////////////////////////////////////////////////////
504

  
505
  float[] getRowChances(int numLayers)
506
    {
507
    float[] chances = new float[numLayers];
508

  
509
    for(int i=0; i<numLayers; i++) chances[i] = ((float)(i+1))/numLayers;
510

  
511
    return chances;
512
    }
513

  
514 503
///////////////////////////////////////////////////////////////////////////////////////////////////
515 504
// PUBLIC API
516 505

  
......
541 530
      }
542 531

  
543 532
    float rowFloat = rnd.nextFloat();
533
    int numLayers = getNumLayers();
544 534

  
545
    for(int row=0; row<mRowChances.length; row++)
535
    for(int row=0; row<numLayers; row++)
546 536
      {
547
      if( rowFloat<=mRowChances[row] )
537
      if( rowFloat*numLayers <= row+1 )
548 538
        {
549 539
        scramble[num][1] = row;
550 540
        break;
src/main/java/org/distorted/objects/TwistyDino.java
226 226
    return 2.0f;
227 227
    }
228 228

  
229
///////////////////////////////////////////////////////////////////////////////////////////////////
230

  
231
  float[] getRowChances(int numLayers)
232
    {
233
    float[] chances = new float[3];
234

  
235
    chances[0] = 0.5f;
236
    chances[1] = 0.5f;
237
    chances[2] = 1.0f;
238

  
239
    return chances;
240
    }
241

  
242 229
///////////////////////////////////////////////////////////////////////////////////////////////////
243 230
// PUBLIC API
244 231

  
src/main/java/org/distorted/objects/TwistyHelicopter.java
393 393
    return 2.0f;
394 394
    }
395 395

  
396
///////////////////////////////////////////////////////////////////////////////////////////////////
397

  
398
  float[] getRowChances(int numLayers)
399
    {
400
    float[] chances = new float[3];
401

  
402
    chances[0] = 0.5f;
403
    chances[1] = 0.5f;
404
    chances[2] = 1.0f;
405

  
406
    return chances;
407
    }
408

  
409 396
///////////////////////////////////////////////////////////////////////////////////////////////////
410 397
// PUBLIC API
411 398

  
......
446 433
        }
447 434
      }
448 435

  
449
    float rowFloat = rnd.nextFloat();
450

  
451
    for(int row=0; row<mRowChances.length; row++)
452
      {
453
      if( rowFloat<=mRowChances[row] )
454
        {
455
        scramble[num][1] = row;
456
        break;
457
        }
458
      }
436
    scramble[num][1] = rnd.nextFloat()<=0.5f ? 0 : 2;
459 437

  
460 438
    switch( rnd.nextInt(2) )
461 439
      {
src/main/java/org/distorted/objects/TwistyIvy.java
416 416
    return 2.0f;
417 417
    }
418 418

  
419
///////////////////////////////////////////////////////////////////////////////////////////////////
420

  
421
  float[] getRowChances(int numLayers)
422
    {
423
    float[] chances = new float[2];
424
    chances[0] = 0.5f;
425
    chances[1] = 1.0f;
426

  
427
    return chances;
428
    }
429

  
430 419
///////////////////////////////////////////////////////////////////////////////////////////////////
431 420
// PUBLIC API
432 421

  
......
456 445
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
457 446
      }
458 447

  
459
    float rowFloat = rnd.nextFloat();
460

  
461
    for(int row=0; row<mRowChances.length; row++)
462
      {
463
      if( rowFloat<=mRowChances[row] )
464
        {
465
        scramble[num][1] = row;
466
        break;
467
        }
468
      }
448
    scramble[num][1] = rnd.nextFloat()<=0.5f ? 0 : 1;
469 449

  
470 450
    switch( rnd.nextInt(2) )
471 451
      {
src/main/java/org/distorted/objects/TwistyMinx.java
324 324
    mBasicCornerV[2] = new Static4D(              0,        -0.500f,    0.0f, 0.0f );
325 325
    }
326 326

  
327
  private static float[] mRowChances;
327 328

  
328 329
///////////////////////////////////////////////////////////////////////////////////////////////////
329 330

  
......
333 334
    super(numLayers, realSize, quat, texture, mesh, effects, moves, obj, res, scrWidth);
334 335
    }
335 336

  
337
///////////////////////////////////////////////////////////////////////////////////////////////////
338

  
339
  private float[] getRowChances(int numLayers)
340
    {
341
    float[] chances = new float[numLayers];
342
    float denom = (float)(numLayers-1);
343
    int change  = (numLayers-1)/2;
344

  
345
    for(int i=     0; i<change   ; i++) chances[i] = (i+1)/denom;
346
    for(int i=change; i<numLayers; i++) chances[i] = (i  )/denom;
347

  
348
    return chances;
349
    }
350

  
336 351
///////////////////////////////////////////////////////////////////////////////////////////////////
337 352

  
338 353
  Static4D[] getQuats()
......
368 383
    return 2.0f;
369 384
    }
370 385

  
371
///////////////////////////////////////////////////////////////////////////////////////////////////
372

  
373
  float[] getRowChances(int numLayers)
374
    {
375
    float[] chances = new float[numLayers];
376
    float denom = (float)(numLayers-1);
377
    int change  = (numLayers-1)/2;
378

  
379
    for(int i=     0; i<change   ; i++) chances[i] = (i+1)/denom;
380
    for(int i=change; i<numLayers; i++) chances[i] = (i  )/denom;
381

  
382
    return chances;
383
    }
384

  
385 386
///////////////////////////////////////////////////////////////////////////////////////////////////
386 387

  
387 388
  MeshBase createCornerMesh(int numLayers, float width)
......
458 459

  
459 460
  public void randomizeNewScramble(int[][] scramble, Random rnd, int num)
460 461
    {
462
    int numLayers = getNumLayers();
463

  
464
    if( mRowChances==null ) mRowChances = getRowChances(numLayers);
465

  
461 466
    if( num==0 )
462 467
      {
463 468
      scramble[num][0] = rnd.nextInt(ROTATION_AXIS.length);
......
472 477
      {
473 478
      float rowFloat = rnd.nextFloat();
474 479

  
475
      for(int row=0; row<mRowChances.length; row++)
480
      for(int row=0; row<numLayers; row++)
476 481
        {
477 482
        if( rowFloat<=mRowChances[row] )
478 483
          {
......
483 488
      }
484 489
    else
485 490
      {
486
      int size = mRowChances.length;
487
      int nom = (size-1)/2;
491
      int nom = (numLayers-1)/2;
488 492
      int row = rnd.nextInt(nom);
489 493
      boolean opposite = OPPOSITE_ROWS[scramble[num-1][0]][scramble[num][0]];
490 494
      boolean low = opposite^(scramble[num-1][1]<nom);
491
      scramble[num][1] = low ? row : size-1-row;
495
      scramble[num][1] = low ? row : numLayers-1-row;
492 496
      }
493 497

  
494 498
    switch( rnd.nextInt(4) )
src/main/java/org/distorted/objects/TwistyObject.java
118 118
  private int mRotAxis;
119 119
  private MeshBase mMesh;
120 120

  
121
  float[] mRowChances;
122 121
  Static1D mRotationAngleStatic, mRotationAngleMiddle, mRotationAngleFinal;
123 122
  DistortedTexture mTexture;
124 123
  MatrixEffectScale mScaleEffect;
......
159 158
    mNodeScale= new Static3D(1,NODE_RATIO,1);
160 159
    mQuat = quat;
161 160

  
162
    mRowChances = getRowChances(mNumLayers);
163

  
164 161
    mRotationAngle= new Dynamic1D();
165 162
    mRotationAxis = new Static3D(1,0,0);
166 163
    mRotateEffect = new VertexEffectRotate(mRotationAngle, mRotationAxis, CENTER);
......
965 962
  abstract void createFaceTexture(Canvas canvas, Paint paint, int face, int left, int top);
966 963
  abstract int getFaceColor(int cubit, int cubitface, int numLayers);
967 964
  abstract float returnMultiplier();
968
  abstract float[] getRowChances(int numLayers);
969 965
  abstract float[] getCuts(int numLayers);
970 966
  abstract boolean shouldResetTextureMaps();
971 967

  
src/main/java/org/distorted/objects/TwistyPyraminx.java
114 114
          };
115 115

  
116 116
  private static MeshBase[] mMeshes;
117
  private static float[] mRowChances;
117 118

  
118 119
///////////////////////////////////////////////////////////////////////////////////////////////////
119 120

  
......
123 124
    super(size, size, quat, texture, mesh, effects, moves, ObjectList.PYRA, res, scrWidth);
124 125
    }
125 126

  
127
///////////////////////////////////////////////////////////////////////////////////////////////////
128

  
129
  private float[] getRowChances(int numLayers)
130
    {
131
    int total = numLayers*(numLayers+1)/2;
132
    float running=0.0f;
133
    float[] chances = new float[numLayers];
134

  
135
    for(int i=0; i<numLayers; i++)
136
      {
137
      running += (numLayers-i);
138
      chances[i] = running / total;
139
      }
140

  
141
    return chances;
142
    }
143

  
126 144
///////////////////////////////////////////////////////////////////////////////////////////////////
127 145

  
128 146
  private void addTetrahedralLattice(int size, int index, float[][] pos)
......
349 367
    return getNumLayers()/(SQ6/3);
350 368
    }
351 369

  
352
///////////////////////////////////////////////////////////////////////////////////////////////////
353

  
354
  float[] getRowChances(int numLayers)
355
    {
356
    int total = numLayers*(numLayers+1)/2;
357
    float running=0.0f;
358
    float[] chances = new float[numLayers];
359

  
360
    for(int i=0; i<numLayers; i++)
361
      {
362
      running += (numLayers-i);
363
      chances[i] = running / total;
364
      }
365

  
366
    return chances;
367
    }
368

  
369 370
///////////////////////////////////////////////////////////////////////////////////////////////////
370 371
// PUBLIC API
371 372

  
......
385 386

  
386 387
  public void randomizeNewScramble(int[][] scramble, Random rnd, int num)
387 388
    {
389
    int numLayers = getNumLayers();
390

  
391
    if( mRowChances==null ) mRowChances = getRowChances(numLayers);
392

  
388 393
    if( num==0 )
389 394
      {
390 395
      scramble[num][0] = rnd.nextInt(ROTATION_AXIS.length);
......
397 402

  
398 403
    float rowFloat = rnd.nextFloat();
399 404

  
400
    for(int row=0; row<mRowChances.length; row++)
405
    for(int row=0; row<numLayers; row++)
401 406
      {
402 407
      if( rowFloat<=mRowChances[row] )
403 408
        {
src/main/java/org/distorted/objects/TwistyRedi.java
406 406
    return 2.0f;
407 407
    }
408 408

  
409
///////////////////////////////////////////////////////////////////////////////////////////////////
410

  
411
  float[] getRowChances(int numLayers)
412
    {
413
    float[] chances = new float[3];
414

  
415
    chances[0] = 0.5f;
416
    chances[1] = 0.5f;
417
    chances[2] = 1.0f;
418

  
419
    return chances;
420
    }
421

  
422 409
///////////////////////////////////////////////////////////////////////////////////////////////////
423 410
// PUBLIC API
424 411

  
src/main/java/org/distorted/objects/TwistyRex.java
581 581
    return 2.0f;
582 582
    }
583 583

  
584
///////////////////////////////////////////////////////////////////////////////////////////////////
585

  
586
  float[] getRowChances(int numLayers)
587
    {
588
    return new float[] { 0.5f, 0.5f, 1.0f };
589
    }
590

  
591 584
///////////////////////////////////////////////////////////////////////////////////////////////////
592 585
// PUBLIC API
593 586

  
......
617 610
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
618 611
      }
619 612

  
620
    float rowFloat = rnd.nextFloat();
621

  
622
    for(int row=0; row<mRowChances.length; row++)
623
      {
624
      if( rowFloat<=mRowChances[row] )
625
        {
626
        scramble[num][1] = row;
627
        break;
628
        }
629
      }
613
    scramble[num][1] = rnd.nextFloat()<=0.5f ? 0 : 2;
630 614

  
631 615
    switch( rnd.nextInt(2) )
632 616
      {
src/main/java/org/distorted/objects/TwistySkewb.java
601 601
    return 2.0f;
602 602
    }
603 603

  
604
///////////////////////////////////////////////////////////////////////////////////////////////////
605

  
606
  float[] getRowChances(int numLayers)
607
    {
608
    float[] chances = new float[numLayers];
609

  
610
    switch(numLayers)
611
      {
612
      case 2: chances[0] = 0.5f;
613
              chances[1] = 1.0f;
614
              break;
615
      case 3: chances[0] = 0.5f;
616
              chances[1] = 0.5f;
617
              chances[2] = 1.0f;
618
              break;
619
      default:for(int i=0; i<numLayers; i++)
620
                {
621
                chances[i] = (float)(i+1)/numLayers;
622
                }
623
      }
624

  
625
    return chances;
626
    }
627

  
628 604
///////////////////////////////////////////////////////////////////////////////////////////////////
629 605
// PUBLIC API
630 606

  
......
654 630
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
655 631
      }
656 632

  
657
    float rowFloat = rnd.nextFloat();
658

  
659
    for(int row=0; row<mRowChances.length; row++)
660
      {
661
      if( rowFloat<=mRowChances[row] )
662
        {
663
        scramble[num][1] = row;
664
        break;
665
        }
666
      }
633
    scramble[num][1] = rnd.nextFloat()<=0.5f ? 0 : getNumLayers()-1;
667 634

  
668 635
    switch( rnd.nextInt(2) )
669 636
      {
src/main/java/org/distorted/objects/TwistySquare1.java
200 200
           {       5,NUM_ST,2,     2,NUM_ST,NUM_ST }
201 201
         };
202 202

  
203
  // YELLOW 0 WHITE 1 BLUE 2 GREEN 3 RED 4  ORANGE 5
203
  // YELLOW 0 WHITE 1 BLUE 2 GREEN 3 RED 4 ORANGE 5
204 204
  private static final int[][] mStickerColor = new int[][]
205 205
         {
206 206
           { 0, 0, 4, 0, 5, 0 },
......
350 350
      {
351 351
      case 0:  R = 0.06f; S = 0.05f; break;
352 352
      case 1:  R = 0.04f; S = 0.04f; break;
353
      case 2:  R = 0.10f; S = 0.08f; break;
353
      case 2:  R = 0.11f; S = 0.09f; break;
354 354
      case 3:  R = 0.03f; S = 0.05f; break;
355 355
      case 4:  R = 0.11f; S = 0.08f; break;
356 356
      case 5:  R = 0.08f; S = 0.08f; break;
......
445 445
    return 1.0f;
446 446
    }
447 447

  
448
///////////////////////////////////////////////////////////////////////////////////////////////////
449
// TODO
450

  
451
  float[] getRowChances(int numLayers)
452
    {
453
    float[] chances = new float[numLayers];
454

  
455
    for(int i=0; i<numLayers; i++)
456
      {
457
      chances[i] = (i+1.0f) / numLayers;
458
      }
459

  
460
    return chances;
461
    }
462

  
463 448
///////////////////////////////////////////////////////////////////////////////////////////////////
464 449
// PUBLIC API
465 450

  
......
491 476
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
492 477
      }
493 478

  
494
    float rowFloat = rnd.nextFloat();
495

  
496
    for(int row=0; row<mRowChances.length; row++)
497
      {
498
      if( rowFloat<=mRowChances[row] )
499
        {
500
        scramble[num][1] = row;
501
        break;
502
        }
503
      }
479
    scramble[num][1] = rnd.nextFloat()<=0.5f ? 0 : 1;
504 480

  
505 481
    switch( rnd.nextInt(4) )
506 482
      {
src/main/java/org/distorted/objects/TwistyUltimate.java
424 424
    return 0.67f;
425 425
    }
426 426

  
427
///////////////////////////////////////////////////////////////////////////////////////////////////
428

  
429
  float[] getRowChances(int numLayers)
430
    {
431
    float[] chances = new float[2];
432
    chances[0] = 0.5f;
433
    chances[1] = 1.0f;
434

  
435
    return chances;
436
    }
437

  
438 427
///////////////////////////////////////////////////////////////////////////////////////////////////
439 428
// PUBLIC API
440 429

  
......
464 453
      scramble[num][0] = (newVector>=scramble[num-1][0] ? newVector+1 : newVector);
465 454
      }
466 455

  
467
    float rowFloat = rnd.nextFloat();
468

  
469
    for(int row=0; row<mRowChances.length; row++)
470
      {
471
      if( rowFloat<=mRowChances[row] )
472
        {
473
        scramble[num][1] = row;
474
        break;
475
        }
476
      }
456
    scramble[num][1] = rnd.nextFloat()<=0.5f ? 0 : 1;
477 457

  
478 458
    switch( rnd.nextInt(2) )
479 459
      {

Also available in: Unified diff