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/TwistyIvy.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

  
......
336 335
      }
337 336
    }
338 337

  
339
///////////////////////////////////////////////////////////////////////////////////////////////////
340
// remember about the double cover or unit quaternions!
341

  
342
  private int mulQuat(int q1, int q2)
343
    {
344
    Static4D result = RubikSurfaceView.quatMultiply(QUATS[q1],QUATS[q2]);
345

  
346
    float rX = result.get0();
347
    float rY = result.get1();
348
    float rZ = result.get2();
349
    float rW = result.get3();
350

  
351
    final float MAX_ERROR = 0.1f;
352
    float dX,dY,dZ,dW;
353

  
354
    for(int i=0; i<QUATS.length; i++)
355
      {
356
      dX = QUATS[i].get0() - rX;
357
      dY = QUATS[i].get1() - rY;
358
      dZ = QUATS[i].get2() - rZ;
359
      dW = QUATS[i].get3() - rW;
360

  
361
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
362
          dY<MAX_ERROR && dY>-MAX_ERROR &&
363
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
364
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
365

  
366
      dX = QUATS[i].get0() + rX;
367
      dY = QUATS[i].get1() + rY;
368
      dZ = QUATS[i].get2() + rZ;
369
      dW = QUATS[i].get3() + rW;
370

  
371
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
372
          dY<MAX_ERROR && dY>-MAX_ERROR &&
373
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
374
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
375
      }
376

  
377
    return -1;
378
    }
379

  
380 338
///////////////////////////////////////////////////////////////////////////////////////////////////
381 339
// The Ivy is solved if and only if:
382 340
//

Also available in: Unified diff