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 |
|
Progress with the Rex Cube (icons)