Project

General

Profile

« Previous | Next » 

Revision cb137f36

Added by Leszek Koltunski about 3 years ago

Objects: tidy up some repeated code.

View differences:

src/main/java/org/distorted/objects/TwistyRex.java
33 33
import org.distorted.library.type.Static3D;
34 34
import org.distorted.library.type.Static4D;
35 35
import org.distorted.main.R;
36
import org.distorted.main.RubikSurfaceView;
37 36

  
38 37
import java.util.Random;
39 38

  
......
447 446
      }
448 447
    }
449 448

  
450
///////////////////////////////////////////////////////////////////////////////////////////////////
451
// remember about the double cover or unit quaternions!
452

  
453
  private int mulQuat(int q1, int q2)
454
    {
455
    Static4D result = RubikSurfaceView.quatMultiply(QUATS[q1],QUATS[q2]);
456

  
457
    float rX = result.get0();
458
    float rY = result.get1();
459
    float rZ = result.get2();
460
    float rW = result.get3();
461

  
462
    final float MAX_ERROR = 0.1f;
463
    float dX,dY,dZ,dW;
464

  
465
    for(int i=0; i<QUATS.length; i++)
466
      {
467
      dX = QUATS[i].get0() - rX;
468
      dY = QUATS[i].get1() - rY;
469
      dZ = QUATS[i].get2() - rZ;
470
      dW = QUATS[i].get3() - rW;
471

  
472
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
473
          dY<MAX_ERROR && dY>-MAX_ERROR &&
474
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
475
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
476

  
477
      dX = QUATS[i].get0() + rX;
478
      dY = QUATS[i].get1() + rY;
479
      dZ = QUATS[i].get2() + rZ;
480
      dW = QUATS[i].get3() + rW;
481

  
482
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
483
          dY<MAX_ERROR && dY>-MAX_ERROR &&
484
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
485
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
486
      }
487

  
488
    return -1;
489
    }
490

  
491 449
///////////////////////////////////////////////////////////////////////////////////////////////////
492 450
// The Rex is solved if and only if:
493 451
//

Also available in: Unified diff