Revision 3feba94e
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/tablebases/TablebasesAbstract.java | ||
---|---|---|
126 | 126 |
} |
127 | 127 |
} |
128 | 128 |
|
129 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
130 |
|
|
131 |
int computeBitLayer(int ax, int layer) |
|
132 |
{ |
|
133 |
return (1<<layer); |
|
134 |
} |
|
135 |
|
|
129 | 136 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
130 | 137 |
|
131 | 138 |
int computeRow(float[] pos, int quat, int axisIndex) |
... | ... | |
271 | 278 |
for(int layer=0; layer<mNumLayers[ax]; layer++) |
272 | 279 |
{ |
273 | 280 |
if( !mRotatable[ax][layer] ) continue; |
274 |
int bitLayer = (1<<layer);
|
|
281 |
int bitLayer = computeBitLayer(ax,layer);
|
|
275 | 282 |
int maxAngle = mAngles[ax][layer]; |
276 | 283 |
|
277 | 284 |
for(int angle=1; angle<maxAngle; angle++ ) |
... | ... | |
280 | 287 |
int quat = quatBasis + angle; |
281 | 288 |
|
282 | 289 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
283 |
if( mRotRow[cubit][ax]==bitLayer )
|
|
290 |
if( (mRotRow[cubit][ax] & bitLayer) != 0 )
|
|
284 | 291 |
{ |
285 | 292 |
int currQuat = tmpQuats[cubit]; |
286 | 293 |
int newQuat = getMultQuat(quat,currQuat); |
... | ... | |
393 | 400 |
|
394 | 401 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
395 | 402 |
|
396 |
int[] newMove(int axis, int layer, int angle)
|
|
403 |
int[] newMove(int ax, int layer, int angle) |
|
397 | 404 |
{ |
398 |
int maxAngle = mAngles[axis][layer];
|
|
405 |
int maxAngle = mAngles[ax][layer]; |
|
399 | 406 |
angle = maxAngle-angle; |
400 | 407 |
if( angle> 0.5f*maxAngle ) angle -= maxAngle; |
401 | 408 |
|
402 |
return new int[] { axis, (1<<layer), angle };
|
|
409 |
return new int[] { ax, computeBitLayer(ax,layer), angle };
|
|
403 | 410 |
} |
404 | 411 |
|
405 | 412 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
479 | 486 |
|
480 | 487 |
if( mRotatable[ax][layer] ) |
481 | 488 |
{ |
482 |
int bitLayer = (1<<layer);
|
|
489 |
int bitLayer = computeBitLayer(ax,layer);
|
|
483 | 490 |
System.arraycopy(quats, 0, tmpQuats, 0, numQuats); |
484 | 491 |
|
485 | 492 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
486 |
if( mRotRow[cubit][ax]==bitLayer )
|
|
493 |
if( (mRotRow[cubit][ax] & bitLayer) != 0 )
|
|
487 | 494 |
{ |
488 | 495 |
int currQuat = tmpQuats[cubit]; |
489 | 496 |
int newQuat = getMultQuat(quat,currQuat); |
... | ... | |
584 | 591 |
|
585 | 592 |
if( mRotatable[ax][layer] ) |
586 | 593 |
{ |
587 |
int bitLayer = (1<<layer);
|
|
594 |
int bitLayer = computeBitLayer(ax,layer);
|
|
588 | 595 |
System.arraycopy(quats, 0, tmpQuats, 0, numQuats); |
589 | 596 |
|
590 | 597 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
591 |
if( mRotRow[cubit][ax]==bitLayer )
|
|
598 |
if( (mRotRow[cubit][ax] & bitLayer) != 0 )
|
|
592 | 599 |
{ |
593 | 600 |
int currQuat = tmpQuats[cubit]; |
594 | 601 |
int newQuat = getMultQuat(quat,currQuat); |
Also available in: Unified diff
CU_323 solver: return to the old way of moving layers with a twist (we do not move the front layer, we move the middle and back layers to imitate this move and keep edge1 always in place)