Revision 59c20632
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/objects/TwistyJing.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.objectlib.objects; |
21 | 21 |
|
22 |
import static org.distorted.objectlib.main.Movement.MOVEMENT_TETRAHEDRON; |
|
22 | 23 |
import static org.distorted.objectlib.main.Movement.TYPE_NOT_SPLIT; |
23 | 24 |
|
24 | 25 |
import android.content.res.Resources; |
... | ... | |
30 | 31 |
import org.distorted.library.type.Static4D; |
31 | 32 |
|
32 | 33 |
import org.distorted.objectlib.R; |
33 |
import org.distorted.objectlib.main.Movement; |
|
34 | 34 |
import org.distorted.objectlib.main.Movement4; |
35 | 35 |
import org.distorted.objectlib.main.ObjectControl; |
36 | 36 |
import org.distorted.objectlib.main.ObjectType; |
... | ... | |
51 | 51 |
new Static3D(-SQ6/3,+SQ3/3, 0), |
52 | 52 |
}; |
53 | 53 |
|
54 |
private static final int[][][] ENABLED = new int[][][] |
|
55 |
{ |
|
56 |
{{1,2,3}},{{0,2,3}},{{0,1,3}},{{0,1,2}} |
|
57 |
}; |
|
58 |
|
|
59 | 54 |
static final float F = 0.48f; // length of the edge of the corner cubit. Keep<0.5 |
60 | 55 |
// Assuming the length of the edge of the whole |
61 | 56 |
// tetrahedron is 2.0 (ie standard, equal to numLayers |
... | ... | |
65 | 60 |
private int[] mRotQuat; |
66 | 61 |
private Static4D[] mQuats; |
67 | 62 |
private float[][] mCuts; |
68 |
private boolean[][] mLayerRotatable; |
|
69 | 63 |
private float[][] mCenters; |
70 | 64 |
private int[][] mFaceMap; |
71 | 65 |
private ObjectSticker[] mStickers; |
72 |
private Movement mMovement; |
|
73 | 66 |
|
74 | 67 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
75 | 68 |
|
... | ... | |
173 | 166 |
|
174 | 167 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
175 | 168 |
|
176 |
protected int getSolvedFunctionIndex()
|
|
169 |
public int getSolvedFunctionIndex()
|
|
177 | 170 |
{ |
178 | 171 |
return 0; |
179 | 172 |
} |
... | ... | |
200 | 193 |
|
201 | 194 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
202 | 195 |
|
203 |
private void getLayerRotatable(int[] numLayers)
|
|
196 |
public boolean[][] getLayerRotatable(int[] numLayers)
|
|
204 | 197 |
{ |
205 |
if( mLayerRotatable==null ) |
|
206 |
{ |
|
207 |
int numAxis = ROT_AXIS.length; |
|
208 |
mLayerRotatable = new boolean[numAxis][]; |
|
198 |
int numAxis = ROT_AXIS.length; |
|
199 |
boolean[][] layerRotatable = new boolean[numAxis][]; |
|
209 | 200 |
|
210 |
for(int i=0; i<numAxis; i++) |
|
211 |
{ |
|
212 |
mLayerRotatable[i] = new boolean[numLayers[i]]; |
|
213 |
for(int j=0; j<numLayers[i]; j++) mLayerRotatable[i][j] = true; |
|
214 |
} |
|
201 |
for(int i=0; i<numAxis; i++) |
|
202 |
{ |
|
203 |
layerRotatable[i] = new boolean[numLayers[i]]; |
|
204 |
for(int j=0; j<numLayers[i]; j++) layerRotatable[i][j] = true; |
|
215 | 205 |
} |
206 |
|
|
207 |
return layerRotatable; |
|
208 |
} |
|
209 |
|
|
210 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
211 |
|
|
212 |
public int getMovementType() |
|
213 |
{ |
|
214 |
return MOVEMENT_TETRAHEDRON; |
|
215 |
} |
|
216 |
|
|
217 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
218 |
|
|
219 |
public int getMovementSplit() |
|
220 |
{ |
|
221 |
return TYPE_NOT_SPLIT; |
|
222 |
} |
|
223 |
|
|
224 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
225 |
|
|
226 |
public int[][][] getEnabled() |
|
227 |
{ |
|
228 |
return new int[][][] |
|
229 |
{ |
|
230 |
{{1,2,3}},{{0,2,3}},{{0,1,3}},{{0,1,2}} |
|
231 |
}; |
|
232 |
} |
|
233 |
|
|
234 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
235 |
|
|
236 |
public float[] getDist3D(int[] numLayers) |
|
237 |
{ |
|
238 |
return null; |
|
216 | 239 |
} |
217 | 240 |
|
218 | 241 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
431 | 454 |
return ROT_AXIS; |
432 | 455 |
} |
433 | 456 |
|
434 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
435 |
|
|
436 |
public Movement getMovement() |
|
437 |
{ |
|
438 |
if( mMovement==null ) |
|
439 |
{ |
|
440 |
int[] numLayers = getNumLayers(); |
|
441 |
if( mCuts==null ) getCuts(numLayers); |
|
442 |
getLayerRotatable(numLayers); |
|
443 |
mMovement = new Movement4(ROT_AXIS,mCuts,mLayerRotatable,numLayers[0],TYPE_NOT_SPLIT,ENABLED); |
|
444 |
} |
|
445 |
return mMovement; |
|
446 |
} |
|
447 |
|
|
448 | 457 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
449 | 458 |
|
450 | 459 |
public int[] getBasicAngle() |
... | ... | |
474 | 483 |
return R.string.jing_inventor; |
475 | 484 |
} |
476 | 485 |
|
486 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
487 |
|
|
488 |
public int getYearOfInvention(int[] numLayers) |
|
489 |
{ |
|
490 |
return 1991; |
|
491 |
} |
|
492 |
|
|
477 | 493 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
478 | 494 |
|
479 | 495 |
public int getComplexity(int[] numLayers) |
Also available in: Unified diff
Reorg for writing the JSON