Revision ac172590
Added by Leszek Koltunski about 1 year ago
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
Cuboids: produce the real quaternion group!