Revision ce7202ef
Added by Leszek Koltunski over 1 year ago
src/main/java/org/distorted/objectlib/tablebases/TablebasesCreator.java | ||
---|---|---|
229 | 229 |
int numQuats = quats.length; |
230 | 230 |
int[] tmpQuats = new int[numQuats]; |
231 | 231 |
byte newLevel = (byte)(level+1); |
232 |
boolean[] belongs = new boolean[mNumCubits]; |
|
233 | 232 |
int quatBasis = 0; |
234 | 233 |
|
234 |
for(int ax=0; ax<mNumAxis; ax++) |
|
235 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
|
236 |
mRotRow[cubit][ax] = computeRow(mPosition[cubit],quats[cubit],ax); |
|
237 |
|
|
235 | 238 |
for(int ax=0; ax<mNumAxis; ax++) |
236 | 239 |
{ |
237 | 240 |
for(int layer=0; layer<mNumLayers[ax]; layer++) |
238 | 241 |
{ |
239 | 242 |
if( !mRotatable[ax][layer] ) continue; |
240 | 243 |
int bitLayer = (1<<layer); |
241 |
|
|
242 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
|
243 |
{ |
|
244 |
mRotRow[cubit][ax] = computeRow(mPosition[cubit],quats[cubit],ax); |
|
245 |
belongs[cubit] = belongsToMove(cubit,ax,bitLayer); |
|
246 |
} |
|
247 |
|
|
248 | 244 |
int maxAngle = mAngles[ax][layer]; |
249 | 245 |
|
250 | 246 |
for(int angle=1; angle<maxAngle; angle++ ) |
... | ... | |
253 | 249 |
int quat = quatBasis + angle; |
254 | 250 |
|
255 | 251 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
256 |
if( belongs[cubit] )
|
|
252 |
if( mRotRow[cubit][ax]==bitLayer )
|
|
257 | 253 |
{ |
258 | 254 |
int currQuat = tmpQuats[cubit]; |
259 | 255 |
int newQuat = getMultQuat(quat,currQuat); |
... | ... | |
358 | 354 |
int[] quats = getQuats(index); |
359 | 355 |
int numQuats = quats.length; |
360 | 356 |
int[] tmpQuats = new int[numQuats]; |
361 |
boolean[] belongs = new boolean[mNumCubits]; |
|
362 | 357 |
|
363 | 358 |
while(index!=0) |
364 | 359 |
{ |
365 | 360 |
boolean found = false; |
366 | 361 |
|
362 |
for(int ax=0; ax<mNumAxis; ax++) |
|
363 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
|
364 |
mRotRow[cubit][ax] = computeRow(mPosition[cubit],quats[cubit],ax); |
|
365 |
|
|
367 | 366 |
for(int ax=0; ax<mNumAxis; ax++) |
368 | 367 |
{ |
369 | 368 |
int numLayers = mNumLayers[ax]; |
... | ... | |
373 | 372 |
{ |
374 | 373 |
if( !mRotatable[ax][layer] ) continue; |
375 | 374 |
int bitLayer = (1<<layer); |
376 |
|
|
377 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
|
378 |
{ |
|
379 |
mRotRow[cubit][ax] = computeRow(mPosition[cubit],quats[cubit],ax); |
|
380 |
belongs[cubit] = belongsToMove(cubit,ax,bitLayer); |
|
381 |
} |
|
382 |
|
|
383 | 375 |
int maxAngle = angles[layer]; |
384 | 376 |
|
385 | 377 |
for(int angle=1; angle<maxAngle; angle++ ) |
... | ... | |
388 | 380 |
int quat = quatBasis + angle; |
389 | 381 |
|
390 | 382 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
391 |
if( belongs[cubit] )
|
|
383 |
if( mRotRow[cubit][ax]==bitLayer )
|
|
392 | 384 |
{ |
393 | 385 |
int currQuat = tmpQuats[cubit]; |
394 | 386 |
int newQuat = getMultQuat(quat,currQuat); |
... | ... | |
438 | 430 |
int[] quats = getQuats(0); |
439 | 431 |
int numQuats = quats.length; |
440 | 432 |
int[] tmpQuats = new int[numQuats]; |
441 |
boolean[] belongs = new boolean[mNumCubits]; |
|
442 | 433 |
|
443 | 434 |
while(level<depth) |
444 | 435 |
{ |
445 | 436 |
boolean found = false; |
446 | 437 |
|
438 |
for(int ax=0; ax<mNumAxis; ax++) |
|
439 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
|
440 |
mRotRow[cubit][ax] = computeRow(mPosition[cubit],quats[cubit],ax); |
|
441 |
|
|
447 | 442 |
for(int ax=0; ax<mNumAxis; ax++) |
448 | 443 |
{ |
449 | 444 |
int numLayers = mNumLayers[ax]; |
... | ... | |
453 | 448 |
{ |
454 | 449 |
if( !mRotatable[ax][layer] ) continue; |
455 | 450 |
int bitLayer = (1<<layer); |
456 |
|
|
457 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
|
458 |
{ |
|
459 |
mRotRow[cubit][ax] = computeRow(mPosition[cubit],quats[cubit],ax); |
|
460 |
belongs[cubit] = belongsToMove(cubit,ax,bitLayer); |
|
461 |
} |
|
462 |
|
|
463 | 451 |
int maxAngle = angles[layer]; |
464 | 452 |
|
465 | 453 |
for(int angle=1; angle<maxAngle; angle++ ) |
... | ... | |
468 | 456 |
int quat = quatBasis + angle; |
469 | 457 |
|
470 | 458 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
471 |
if( belongs[cubit] )
|
|
459 |
if( mRotRow[cubit][ax]==bitLayer )
|
|
472 | 460 |
{ |
473 | 461 |
int currQuat = tmpQuats[cubit]; |
474 | 462 |
int newQuat = getMultQuat(quat,currQuat); |
Also available in: Unified diff
Improve the tablebase code a bit