Revision 6beb2998
Added by Leszek Koltunski 12 months ago
src/main/java/org/distorted/objectlib/tablebases/TBCuboid323.java | ||
---|---|---|
57 | 57 |
private boolean mUpsideDown; |
58 | 58 |
private int[] mCornerPerm, mEdgePerm; |
59 | 59 |
|
60 |
private static final int[] mCPerm = new int[8]; |
|
61 |
private static final int[] mE7Perm = new int[7]; |
|
62 |
private static final int[] mE8Perm = new int[8]; |
|
63 |
|
|
60 | 64 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
61 | 65 |
// remove perm[1] which is always equal to 1. |
62 | 66 |
|
... | ... | |
78 | 82 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
79 | 83 |
// reverse the above |
80 | 84 |
|
81 |
private static int[] edgePermTo8(int[] perm)
|
|
85 |
private static void edgePermTo8()
|
|
82 | 86 |
{ |
83 |
int[] ret = new int[8]; |
|
84 |
|
|
85 |
ret[0] = perm[0]; if( ret[0]>=1 ) ret[0]++; |
|
86 |
ret[1] = 1; |
|
87 |
ret[2] = perm[1]; if( ret[2]>=1 ) ret[2]++; |
|
88 |
ret[3] = perm[2]; if( ret[3]>=1 ) ret[3]++; |
|
89 |
ret[4] = perm[3]; if( ret[4]>=1 ) ret[4]++; |
|
90 |
ret[5] = perm[4]; if( ret[5]>=1 ) ret[5]++; |
|
91 |
ret[6] = perm[5]; if( ret[6]>=1 ) ret[6]++; |
|
92 |
ret[7] = perm[6]; if( ret[7]>=1 ) ret[7]++; |
|
93 |
|
|
94 |
return ret; |
|
87 |
mE8Perm[0] = mE7Perm[0]; if( mE8Perm[0]>=1 ) mE8Perm[0]++; |
|
88 |
mE8Perm[1] = 1; |
|
89 |
mE8Perm[2] = mE7Perm[1]; if( mE8Perm[2]>=1 ) mE8Perm[2]++; |
|
90 |
mE8Perm[3] = mE7Perm[2]; if( mE8Perm[3]>=1 ) mE8Perm[3]++; |
|
91 |
mE8Perm[4] = mE7Perm[3]; if( mE8Perm[4]>=1 ) mE8Perm[4]++; |
|
92 |
mE8Perm[5] = mE7Perm[4]; if( mE8Perm[5]>=1 ) mE8Perm[5]++; |
|
93 |
mE8Perm[6] = mE7Perm[5]; if( mE8Perm[6]>=1 ) mE8Perm[6]++; |
|
94 |
mE8Perm[7] = mE7Perm[6]; if( mE8Perm[7]>=1 ) mE8Perm[7]++; |
|
95 | 95 |
} |
96 | 96 |
|
97 | 97 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
322 | 322 |
|
323 | 323 |
for(int i=0; i<8; i++) |
324 | 324 |
{ |
325 |
int q = CORNER_MAP[i][corner[i]]; |
|
326 |
quats[i] = q; |
|
327 |
} |
|
328 |
for(int i=0; i<8; i++) |
|
329 |
{ |
|
330 |
int q = EDGE_MAP[i][edge8[i]]; |
|
331 |
quats[i+8] = q; |
|
325 |
quats[i] = CORNER_MAP[i][corner[i]]; |
|
326 |
quats[i+8] = EDGE_MAP[i][edge8[i]]; |
|
332 | 327 |
} |
333 | 328 |
|
334 |
if( centers==0 ) |
|
335 |
{ |
|
336 |
quats[16]=0; |
|
337 |
quats[17]=0; |
|
338 |
} |
|
339 |
else |
|
340 |
{ |
|
341 |
quats[16]=5; |
|
342 |
quats[17]=5; |
|
343 |
} |
|
329 |
int c = centers==0 ? 0:5; |
|
330 |
quats[16]=c; |
|
331 |
quats[17]=c; |
|
344 | 332 |
|
345 | 333 |
return quats; |
346 | 334 |
} |
... | ... | |
374 | 362 |
int centers = (index%2); |
375 | 363 |
int edgePermNum = index/2; |
376 | 364 |
|
377 |
int[] corner_perm = new int[8]; |
|
378 |
TablebaseHelpers.getPermutationFromNum(corner_perm,8,cornerPermNum); |
|
379 |
int[] edge_perm7 = new int[7]; |
|
380 |
TablebaseHelpers.getPermutationFromNum(edge_perm7,7,edgePermNum); |
|
381 |
int[] edge_perm8 = edgePermTo8(edge_perm7); |
|
365 |
TablebaseHelpers.getPermutationFromNum(mCPerm,8,cornerPermNum); |
|
366 |
TablebaseHelpers.getPermutationFromNum(mE7Perm,7,edgePermNum); |
|
367 |
edgePermTo8(); |
|
382 | 368 |
|
383 |
return quatsFromPermutations(corner_perm,edge_perm8,centers);
|
|
369 |
return quatsFromPermutations(mCPerm,mE8Perm,centers);
|
|
384 | 370 |
} |
385 | 371 |
|
386 | 372 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
minor speedup