Project

General

Profile

« Previous | Next » 

Revision ac172590

Added by Leszek Koltunski about 1 year ago

Cuboids: produce the real quaternion group!

View differences:

src/main/java/org/distorted/objectlib/objects/TwistyCuboid.java
42 42
  private int[][] mEdges;
43 43
  private float[][] mCuts;
44 44
  private int[][] mBasicAngle;
45
  private Static4D[] mLocQuats;
45 46

  
46 47
///////////////////////////////////////////////////////////////////////////////////////////////////
47 48

  
......
51 52
    }
52 53

  
53 54
///////////////////////////////////////////////////////////////////////////////////////////////////
54
// we need to explicitly provide the quaternion group because the Cuboids do not have the whole
55
// group and it would crash in getCubitQuats()
56 55

  
57
  @Override
58
  public Static4D[] getQuats()
56
  public Static4D[] getLocQuats()
59 57
    {
60 58
    return new Static4D[]
61 59
      {
......
379 377

  
380 378
  public Static4D getCubitQuats(int cubit, int[] numLayers)
381 379
    {
380
    if( mLocQuats==null ) mLocQuats = getLocQuats();
382 381
    int variant = getCubitVariant(cubit,numLayers);
383 382

  
384 383
    switch(variant)
385 384
      {
386 385
      case 0: switch(cubit)
387 386
                {
388
                case 0: return mObjectQuats[ 0];
389
                case 1: return mObjectQuats[18];
390
                case 2: return mObjectQuats[17];
391
                case 3: return mObjectQuats[ 2];
392
                case 4: return mObjectQuats[14];
393
                case 5: return mObjectQuats[ 5];
394
                case 6: return mObjectQuats[ 8];
395
                case 7: return mObjectQuats[11];
387
                case 0: return mLocQuats[ 0];
388
                case 1: return mLocQuats[18];
389
                case 2: return mLocQuats[17];
390
                case 3: return mLocQuats[ 2];
391
                case 4: return mLocQuats[14];
392
                case 5: return mLocQuats[ 5];
393
                case 6: return mLocQuats[ 8];
394
                case 7: return mLocQuats[11];
396 395
                }
397 396
      case 1: int edgeEdge   = getEdgeNum(cubit,numLayers);
398 397
              switch(edgeEdge)
399 398
                {
400
                case  0: return mObjectQuats[ 0];
401
                case  1: return mObjectQuats[ 1];
402
                case  2: return mObjectQuats[ 3];
403
                case  3: return mObjectQuats[ 2];
404
                case  4: return mObjectQuats[21];
405
                case  5: return mObjectQuats[18];
406
                case  6: return mObjectQuats[20];
407
                case  7: return mObjectQuats[19];
408
                case  8: return mObjectQuats[13];
409
                case  9: return mObjectQuats[17];
410
                case 10: return mObjectQuats[15];
411
                case 11: return mObjectQuats[16];
399
                case  0: return mLocQuats[ 0];
400
                case  1: return mLocQuats[ 1];
401
                case  2: return mLocQuats[ 3];
402
                case  3: return mLocQuats[ 2];
403
                case  4: return mLocQuats[21];
404
                case  5: return mLocQuats[18];
405
                case  6: return mLocQuats[20];
406
                case  7: return mLocQuats[19];
407
                case  8: return mLocQuats[13];
408
                case  9: return mLocQuats[17];
409
                case 10: return mLocQuats[15];
410
                case 11: return mLocQuats[16];
412 411
                }
413 412
              break;
414 413
      case 2: int centerFace = getCenterNum(cubit,numLayers);
415 414
              switch(centerFace)
416 415
                {
417
                case 0 : return mObjectQuats[ 6];
418
                case 1 : return mObjectQuats[ 4];
419
                case 2 : return mObjectQuats[ 1];
420
                case 3 : return mObjectQuats[ 3];
421
                case 4 : return mObjectQuats[ 0];
422
                case 5 : return mObjectQuats[ 2];
416
                case 0 : return mLocQuats[ 6];
417
                case 1 : return mLocQuats[ 4];
418
                case 2 : return mLocQuats[ 1];
419
                case 3 : return mLocQuats[ 3];
420
                case 4 : return mLocQuats[ 0];
421
                case 5 : return mLocQuats[ 2];
423 422
                }
424 423
      }
425 424

  
426
    return mObjectQuats[0];
425
    return mLocQuats[0];
427 426
    }
428 427

  
429 428
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff