Revision 5eedd516
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/TwistyRex.java | ||
---|---|---|
352 | 352 |
{ |
353 | 353 |
int COLORS = FACE_COLORS.length; |
354 | 354 |
FactorySticker factory = FactorySticker.getInstance(); |
355 |
float S = 0.04f; |
|
355 |
float S1 = 0.06f; |
|
356 |
float S2 = 0.04f; |
|
356 | 357 |
float R1 = 0.12f; |
357 | 358 |
float R2 = 0.06f; |
358 | 359 |
|
359 | 360 |
if( face<COLORS ) |
360 | 361 |
{ |
361 |
factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R2); |
|
362 |
factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R2);
|
|
362 | 363 |
} |
363 | 364 |
else if( face<2*COLORS ) |
364 | 365 |
{ |
365 |
factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R1); |
|
366 |
factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R1);
|
|
366 | 367 |
} |
367 | 368 |
else |
368 | 369 |
{ |
369 |
factory.drawRexEdgeSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S, R1); |
|
370 |
factory.drawRexEdgeSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S2, R1);
|
|
370 | 371 |
} |
371 | 372 |
} |
372 | 373 |
|
... | ... | |
474 | 475 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
475 | 476 |
// The Rex is solved if and only if: |
476 | 477 |
// |
477 |
// TODO |
|
478 |
// 1) all 12 of its edge cubits are rotated with the same quat |
|
479 |
// 2) all its face & corner cubits are rotated with the same quat like the edge ones, |
|
480 |
// and optionally they also might be upside down. |
|
481 |
// |
|
482 |
// i.e. |
|
483 |
// corners ( 0, 1, 2, 3, 4, 5, 6, 7) and faces (24,25) - might be extra QUAT[1] |
|
484 |
// corners ( 8, 9,10,11,12,13,14,15) and faces (26,27) - might be extra QUAT[2] |
|
485 |
// corners (16,17,18,19,20,21,22,23) and faces (28,29) - might be extra QUAT[3] |
|
478 | 486 |
|
479 | 487 |
public boolean isSolved() |
480 | 488 |
{ |
481 |
int q = CUBITS[0].mQuatIndex; |
|
489 |
int q1,q = CUBITS[0].mQuatIndex;
|
|
482 | 490 |
|
483 |
for(int i=1; i<42; i++)
|
|
491 |
for(int i=30; i<42; i++)
|
|
484 | 492 |
{ |
485 | 493 |
if( CUBITS[i].mQuatIndex != q) return false; |
486 | 494 |
} |
487 | 495 |
|
496 |
q1 = mulQuat(q,1); |
|
497 |
|
|
498 |
for(int i=0; i<8; i++) |
|
499 |
{ |
|
500 |
if( CUBITS[i].mQuatIndex != q && CUBITS[i].mQuatIndex != q1 ) return false; |
|
501 |
} |
|
502 |
|
|
503 |
if( CUBITS[24].mQuatIndex != q && CUBITS[24].mQuatIndex != q1 ) return false; |
|
504 |
if( CUBITS[25].mQuatIndex != q && CUBITS[25].mQuatIndex != q1 ) return false; |
|
505 |
|
|
506 |
q1 = mulQuat(q,2); |
|
507 |
|
|
508 |
for(int i=8; i<16; i++) |
|
509 |
{ |
|
510 |
if( CUBITS[i].mQuatIndex != q && CUBITS[i].mQuatIndex != q1 ) return false; |
|
511 |
} |
|
512 |
|
|
513 |
if( CUBITS[26].mQuatIndex != q && CUBITS[26].mQuatIndex != q1 ) return false; |
|
514 |
if( CUBITS[27].mQuatIndex != q && CUBITS[27].mQuatIndex != q1 ) return false; |
|
515 |
|
|
516 |
q1 = mulQuat(q,3); |
|
517 |
|
|
518 |
for(int i=16; i<24; i++) |
|
519 |
{ |
|
520 |
if( CUBITS[i].mQuatIndex != q && CUBITS[i].mQuatIndex != q1 ) return false; |
|
521 |
} |
|
522 |
|
|
523 |
if( CUBITS[28].mQuatIndex != q && CUBITS[28].mQuatIndex != q1 ) return false; |
|
524 |
if( CUBITS[29].mQuatIndex != q && CUBITS[29].mQuatIndex != q1 ) return false; |
|
525 |
|
|
488 | 526 |
return true; |
489 | 527 |
} |
490 | 528 |
|
Also available in: Unified diff
Progress with the Rex Cube (icons)