Project

General

Profile

« Previous | Next » 

Revision a64e07d0

Added by Leszek Koltunski over 3 years ago

Beginnings of Megaminx & Gigaminx

View differences:

src/main/java/org/distorted/objects/TwistyRedi.java
31 31
import org.distorted.library.type.Static3D;
32 32
import org.distorted.library.type.Static4D;
33 33
import org.distorted.main.R;
34
import org.distorted.main.RubikSurfaceView;
35 34

  
36 35
import java.util.Random;
37 36

  
......
174 173

  
175 174
///////////////////////////////////////////////////////////////////////////////////////////////////
176 175

  
177
  int getNumStickerTypes()
176
  int getNumStickerTypes(int numLayers)
178 177
    {
179 178
    return 2;
180 179
    }
......
239 238

  
240 239
///////////////////////////////////////////////////////////////////////////////////////////////////
241 240

  
242
  MeshBase createCubitMesh(int cubit)
241
  MeshBase createCubitMesh(int cubit, int numLayers)
243 242
    {
244 243
    MeshBase mesh;
245 244

  
......
303 302

  
304 303
///////////////////////////////////////////////////////////////////////////////////////////////////
305 304

  
306
  float[] getRowChances()
305
  float[] getRowChances(int numLayers)
307 306
    {
308 307
    float[] chances = new float[3];
309 308

  
......
353 352
    return (oldRotAxis==START_AXIS) ? (rnd.nextFloat()<=0.5f ? 0:2) : (oldRotAxis+newRotAxis==3 ? 2-oldRow : oldRow);
354 353
    }
355 354

  
356
///////////////////////////////////////////////////////////////////////////////////////////////////
357
// remember about the double cover or unit quaternions!
358

  
359
  private int mulQuat(int q1, int q2)
360
    {
361
    Static4D result = RubikSurfaceView.quatMultiply(QUATS[q1],QUATS[q2]);
362

  
363
    float rX = result.get0();
364
    float rY = result.get1();
365
    float rZ = result.get2();
366
    float rW = result.get3();
367

  
368
    final float MAX_ERROR = 0.1f;
369
    float dX,dY,dZ,dW;
370

  
371
    for(int i=0; i<QUATS.length; i++)
372
      {
373
      dX = QUATS[i].get0() - rX;
374
      dY = QUATS[i].get1() - rY;
375
      dZ = QUATS[i].get2() - rZ;
376
      dW = QUATS[i].get3() - rW;
377

  
378
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
379
          dY<MAX_ERROR && dY>-MAX_ERROR &&
380
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
381
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
382

  
383
      dX = QUATS[i].get0() + rX;
384
      dY = QUATS[i].get1() + rY;
385
      dZ = QUATS[i].get2() + rZ;
386
      dW = QUATS[i].get3() + rW;
387

  
388
      if( dX<MAX_ERROR && dX>-MAX_ERROR &&
389
          dY<MAX_ERROR && dY>-MAX_ERROR &&
390
          dZ<MAX_ERROR && dZ>-MAX_ERROR &&
391
          dW<MAX_ERROR && dW>-MAX_ERROR  ) return i;
392
      }
393

  
394
    return -1;
395
    }
396

  
397 355
///////////////////////////////////////////////////////////////////////////////////////////////////
398 356
// The Redi is solved if and only if:
399 357
//

Also available in: Unified diff