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/TwistyObject.java
458 458
    pos[offset+2] = mOrigPos[minErrorIndex1][3*minErrorIndex2+2];
459 459
    }
460 460

  
461
///////////////////////////////////////////////////////////////////////////////////////////////////
462
// remember about the double cover or unit quaternions!
463

  
464
  int mulQuat(int q1, int q2)
465
    {
466
    Static4D result = RubikSurfaceView.quatMultiply(QUATS[q1],QUATS[q2]);
467

  
468
    float rX = result.get0();
469
    float rY = result.get1();
470
    float rZ = result.get2();
471
    float rW = result.get3();
472

  
473
    final float MAX_ERROR = 0.1f;
474
    float dX,dY,dZ,dW;
475

  
476
    for(int i=0; i<QUATS.length; i++)
477
      {
478
      dX = QUATS[i].get0() - rX;
479
      dY = QUATS[i].get1() - rY;
480
      dZ = QUATS[i].get2() - rZ;
481
      dW = QUATS[i].get3() - rW;
482

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

  
488
      dX = QUATS[i].get0() + rX;
489
      dY = QUATS[i].get1() + rY;
490
      dZ = QUATS[i].get2() + rZ;
491
      dW = QUATS[i].get3() + rW;
492

  
493
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
494
          dY<MAX_ERROR && dY>-MAX_ERROR &&
495
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
496
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
497
      }
498

  
499
    return -1;
500
    }
501

  
461 502
///////////////////////////////////////////////////////////////////////////////////////////////////
462 503
// return if the Cubit, when rotated with its own mQuatScramble, would have looked any different
463 504
// then if it were rotated by quaternion 'quat'.

Also available in: Unified diff