Revision cb137f36
Added by Leszek Koltunski about 3 years ago
src/main/java/org/distorted/objects/TwistyObject.java | ||
---|---|---|
458 | 458 |
pos[offset+2] = mOrigPos[minErrorIndex1][3*minErrorIndex2+2]; |
459 | 459 |
} |
460 | 460 |
|
461 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
462 |
// remember about the double cover or unit quaternions! |
|
463 |
|
|
464 |
int mulQuat(int q1, int q2) |
|
465 |
{ |
|
466 |
Static4D result = RubikSurfaceView.quatMultiply(QUATS[q1],QUATS[q2]); |
|
467 |
|
|
468 |
float rX = result.get0(); |
|
469 |
float rY = result.get1(); |
|
470 |
float rZ = result.get2(); |
|
471 |
float rW = result.get3(); |
|
472 |
|
|
473 |
final float MAX_ERROR = 0.1f; |
|
474 |
float dX,dY,dZ,dW; |
|
475 |
|
|
476 |
for(int i=0; i<QUATS.length; i++) |
|
477 |
{ |
|
478 |
dX = QUATS[i].get0() - rX; |
|
479 |
dY = QUATS[i].get1() - rY; |
|
480 |
dZ = QUATS[i].get2() - rZ; |
|
481 |
dW = QUATS[i].get3() - rW; |
|
482 |
|
|
483 |
if( dX<MAX_ERROR && dX>-MAX_ERROR && |
|
484 |
dY<MAX_ERROR && dY>-MAX_ERROR && |
|
485 |
dZ<MAX_ERROR && dZ>-MAX_ERROR && |
|
486 |
dW<MAX_ERROR && dW>-MAX_ERROR ) return i; |
|
487 |
|
|
488 |
dX = QUATS[i].get0() + rX; |
|
489 |
dY = QUATS[i].get1() + rY; |
|
490 |
dZ = QUATS[i].get2() + rZ; |
|
491 |
dW = QUATS[i].get3() + rW; |
|
492 |
|
|
493 |
if( dX<MAX_ERROR && dX>-MAX_ERROR && |
|
494 |
dY<MAX_ERROR && dY>-MAX_ERROR && |
|
495 |
dZ<MAX_ERROR && dZ>-MAX_ERROR && |
|
496 |
dW<MAX_ERROR && dW>-MAX_ERROR ) return i; |
|
497 |
} |
|
498 |
|
|
499 |
return -1; |
|
500 |
} |
|
501 |
|
|
461 | 502 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
462 | 503 |
// return if the Cubit, when rotated with its own mQuatScramble, would have looked any different |
463 | 504 |
// then if it were rotated by quaternion 'quat'. |
Also available in: Unified diff
Objects: tidy up some repeated code.