Revision 1dd8d3af
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/TwistyRedi.java | ||
---|---|---|
37 | 37 |
|
38 | 38 |
public class TwistyRedi extends TwistyObject |
39 | 39 |
{ |
40 |
private static final int FACES_PER_CUBIT =9; |
|
41 |
|
|
42 |
// the four rotation axis of a RubikRedi. Must be normalized. |
|
40 |
// the four rotation axis of a Redi. Must be normalized. |
|
43 | 41 |
static final Static3D[] ROT_AXIS = new Static3D[] |
44 | 42 |
{ |
45 | 43 |
new Static3D(+SQ3/3,+SQ3/3,+SQ3/3), |
... | ... | |
48 | 46 |
new Static3D(+SQ3/3,-SQ3/3,-SQ3/3) |
49 | 47 |
}; |
50 | 48 |
|
51 |
private static final int[] BASIC_ANGLE = new int[] { 3,3,3,3 }; |
|
52 |
|
|
53 | 49 |
private static final int[] FACE_COLORS = new int[] |
54 | 50 |
{ |
55 | 51 |
COLOR_YELLOW, COLOR_WHITE, |
... | ... | |
57 | 53 |
COLOR_RED , COLOR_ORANGE |
58 | 54 |
}; |
59 | 55 |
|
60 |
// All legal rotation quats of a RubikRedi |
|
61 |
private static final Static4D[] QUATS = new Static4D[] |
|
62 |
{ |
|
63 |
new Static4D( 0.0f, 0.0f, 0.0f, 1.0f ), |
|
64 |
new Static4D( 1.0f, 0.0f, 0.0f, 0.0f ), |
|
65 |
new Static4D( 0.0f, 1.0f, 0.0f, 0.0f ), |
|
66 |
new Static4D( 0.0f, 0.0f, 1.0f, 0.0f ), |
|
67 |
|
|
68 |
new Static4D( 0.5f, 0.5f, 0.5f, 0.5f ), |
|
69 |
new Static4D( 0.5f, 0.5f, 0.5f, -0.5f ), |
|
70 |
new Static4D( 0.5f, 0.5f, -0.5f, 0.5f ), |
|
71 |
new Static4D( 0.5f, 0.5f, -0.5f, -0.5f ), |
|
72 |
new Static4D( 0.5f, -0.5f, 0.5f, 0.5f ), |
|
73 |
new Static4D( 0.5f, -0.5f, 0.5f, -0.5f ), |
|
74 |
new Static4D( 0.5f, -0.5f, -0.5f, 0.5f ), |
|
75 |
new Static4D( 0.5f, -0.5f, -0.5f, -0.5f ) |
|
76 |
}; |
|
77 |
|
|
78 |
private static final float DIST_CORNER = 1.0f; |
|
79 |
private static final float DIST_EDGE = 1.5f; |
|
80 |
|
|
81 |
// centers of the 8 corners + 12 edges ( i.e. of the all 20 cubits) |
|
82 |
private static final float[][] CENTERS = new float[][] |
|
83 |
{ |
|
84 |
{ DIST_CORNER, DIST_CORNER, DIST_CORNER }, |
|
85 |
{ DIST_CORNER, DIST_CORNER,-DIST_CORNER }, |
|
86 |
{ DIST_CORNER,-DIST_CORNER, DIST_CORNER }, |
|
87 |
{ DIST_CORNER,-DIST_CORNER,-DIST_CORNER }, |
|
88 |
{-DIST_CORNER, DIST_CORNER, DIST_CORNER }, |
|
89 |
{-DIST_CORNER, DIST_CORNER,-DIST_CORNER }, |
|
90 |
{-DIST_CORNER,-DIST_CORNER, DIST_CORNER }, |
|
91 |
{-DIST_CORNER,-DIST_CORNER,-DIST_CORNER }, |
|
92 |
|
|
93 |
{ 0.0f, DIST_EDGE, DIST_EDGE }, |
|
94 |
{ DIST_EDGE, 0.0f, DIST_EDGE }, |
|
95 |
{ 0.0f,-DIST_EDGE, DIST_EDGE }, |
|
96 |
{-DIST_EDGE, 0.0f, DIST_EDGE }, |
|
97 |
{ DIST_EDGE, DIST_EDGE, 0.0f }, |
|
98 |
{ DIST_EDGE,-DIST_EDGE, 0.0f }, |
|
99 |
{-DIST_EDGE,-DIST_EDGE, 0.0f }, |
|
100 |
{-DIST_EDGE, DIST_EDGE, 0.0f }, |
|
101 |
{ 0.0f, DIST_EDGE,-DIST_EDGE }, |
|
102 |
{ DIST_EDGE, 0.0f,-DIST_EDGE }, |
|
103 |
{ 0.0f,-DIST_EDGE,-DIST_EDGE }, |
|
104 |
{-DIST_EDGE, 0.0f,-DIST_EDGE } |
|
105 |
}; |
|
106 |
|
|
107 |
// Colors of the faces of cubits. |
|
108 |
// YELLOW 0 WHITE 1 BLUE 2 GREEN 3 RED 4 ORANGE 5 |
|
109 |
// YELLOW 6 WHITE 7 BLUE 8 GREEN 9 RED 10 ORANGE 11 |
|
110 |
private static final int[][] mFaceMap = new int[][] |
|
111 |
{ |
|
112 |
{ 4, 2, 0 }, |
|
113 |
{ 2, 5, 0 }, |
|
114 |
{ 3, 4, 0 }, |
|
115 |
{ 5, 3, 0 }, |
|
116 |
{ 1, 2, 4 }, |
|
117 |
{ 5, 2, 1 }, |
|
118 |
{ 4, 3, 1 }, |
|
119 |
{ 1, 3, 5 }, |
|
120 |
|
|
121 |
{ 10, 8,12 }, |
|
122 |
{ 6,10,12 }, |
|
123 |
{ 10, 9,12 }, |
|
124 |
{ 7,10,12 }, |
|
125 |
{ 8, 6,12 }, |
|
126 |
{ 9, 6,12 }, |
|
127 |
{ 9, 7,12 }, |
|
128 |
{ 8, 7,12 }, |
|
129 |
{ 11, 8,12 }, |
|
130 |
{ 6,11,12 }, |
|
131 |
{ 11, 9,12 }, |
|
132 |
{ 7,11,12 }, |
|
133 |
}; |
|
134 |
|
|
135 |
private static final double[][] VERTICES_CORNER = new double[][] |
|
136 |
{ |
|
137 |
{ 0.0f, 0.0f, 0.0f }, |
|
138 |
{-0.5f, 0.5f, 0.5f }, |
|
139 |
{-0.5f,-0.5f, 0.5f }, |
|
140 |
{ 0.5f, 0.5f, 0.5f }, |
|
141 |
{ 0.5f,-0.5f, 0.5f }, |
|
142 |
{ 0.5f, 0.5f,-0.5f }, |
|
143 |
{ 0.5f,-0.5f,-0.5f }, |
|
144 |
{-0.5f, 0.5f,-0.5f }, |
|
145 |
}; |
|
146 |
|
|
147 |
private static final int[][] VERT_INDEXES_CORNER = new int[][] |
|
148 |
{ |
|
149 |
{ 2,4,3,1 }, |
|
150 |
{ 1,3,5,7 }, |
|
151 |
{ 4,6,5,3 }, |
|
152 |
|
|
153 |
{ 2,4,0 }, |
|
154 |
{ 5,7,0 }, |
|
155 |
{ 4,6,0 }, |
|
156 |
{ 7,1,0 }, |
|
157 |
{ 1,2,0 }, |
|
158 |
{ 6,5,0 } |
|
159 |
}; |
|
160 |
|
|
161 |
private static final double[][] VERTICES_EDGE = new double[][] |
|
162 |
{ |
|
163 |
{-0.5f, 0.0f, 0.0f}, |
|
164 |
{ 0.5f, 0.0f, 0.0f}, |
|
165 |
{-0.5f,-1.0f, 0.0f}, |
|
166 |
{ 0.5f,-1.0f, 0.0f}, |
|
167 |
{ 0.0f,-1.5f, 0.0f}, |
|
168 |
{-0.5f, 0.0f,-1.0f}, |
|
169 |
{ 0.5f, 0.0f,-1.0f}, |
|
170 |
{ 0.0f, 0.0f,-1.5f}, |
|
171 |
}; |
|
172 |
|
|
173 |
private static final int[][] VERT_INDEXES_EDGE = new int[][] |
|
174 |
{ |
|
175 |
{ 0,2,4,3,1 }, |
|
176 |
{ 0,1,6,7,5 }, |
|
177 |
{ 1,3,6 }, |
|
178 |
{ 0,2,5 }, |
|
179 |
{ 4,7,6,3 }, |
|
180 |
{ 4,7,5,2 } |
|
181 |
}; |
|
182 |
|
|
183 |
private static final float[][] STICKERS = new float[][] |
|
184 |
{ |
|
185 |
{ -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f }, |
|
186 |
{ -0.3125f, 0.4375f, -0.3125f, -0.1875f, 0.0f, -0.5f, 0.3125f, -0.1875f, 0.3125f, 0.4375f } |
|
187 |
}; |
|
188 |
|
|
189 |
private static final ObjectSticker[] mStickers; |
|
190 |
|
|
191 |
static |
|
192 |
{ |
|
193 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
194 |
final float R0 = 0.09f; |
|
195 |
final float R1 = 0.06f; |
|
196 |
final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1,R1} }; |
|
197 |
final float[] strokes = { 0.09f,0.06f }; |
|
198 |
|
|
199 |
for(int s=0; s<STICKERS.length; s++) |
|
200 |
{ |
|
201 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
202 |
} |
|
203 |
} |
|
56 |
private static final int FACES_PER_CUBIT =9; |
|
204 | 57 |
|
205 | 58 |
private int mCurrState; |
206 | 59 |
private int mIndexExcluded; |
207 | 60 |
private final ScrambleState[] mStates; |
208 | 61 |
private int[][] mScrambleTable; |
209 | 62 |
private int[] mNumOccurences; |
63 |
private int[] mBasicAngle; |
|
64 |
private Static4D[] mQuats; |
|
65 |
private float[][] mCenters; |
|
66 |
private int[][] mFaceMap; |
|
67 |
private ObjectSticker[] mStickers; |
|
210 | 68 |
|
211 | 69 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
212 | 70 |
|
... | ... | |
229 | 87 |
}; |
230 | 88 |
} |
231 | 89 |
|
90 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
91 |
|
|
92 |
private void initializeQuats() |
|
93 |
{ |
|
94 |
mQuats = new Static4D[] |
|
95 |
{ |
|
96 |
new Static4D( 0.0f, 0.0f, 0.0f, 1.0f ), |
|
97 |
new Static4D( 1.0f, 0.0f, 0.0f, 0.0f ), |
|
98 |
new Static4D( 0.0f, 1.0f, 0.0f, 0.0f ), |
|
99 |
new Static4D( 0.0f, 0.0f, 1.0f, 0.0f ), |
|
100 |
|
|
101 |
new Static4D( 0.5f, 0.5f, 0.5f, 0.5f ), |
|
102 |
new Static4D( 0.5f, 0.5f, 0.5f, -0.5f ), |
|
103 |
new Static4D( 0.5f, 0.5f, -0.5f, 0.5f ), |
|
104 |
new Static4D( 0.5f, 0.5f, -0.5f, -0.5f ), |
|
105 |
new Static4D( 0.5f, -0.5f, 0.5f, 0.5f ), |
|
106 |
new Static4D( 0.5f, -0.5f, 0.5f, -0.5f ), |
|
107 |
new Static4D( 0.5f, -0.5f, -0.5f, 0.5f ), |
|
108 |
new Static4D( 0.5f, -0.5f, -0.5f, -0.5f ) |
|
109 |
}; |
|
110 |
} |
|
111 |
|
|
232 | 112 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
233 | 113 |
|
234 | 114 |
int[] getSolvedQuats(int cubit, int numLayers) |
235 | 115 |
{ |
116 |
if( mQuats==null ) initializeQuats(); |
|
236 | 117 |
int status = retCubitSolvedStatus(cubit,numLayers); |
237 |
return status<0 ? null : buildSolvedQuats(MovementRedi.FACE_AXIS[status],QUATS);
|
|
118 |
return status<0 ? null : buildSolvedQuats(MovementRedi.FACE_AXIS[status],mQuats);
|
|
238 | 119 |
} |
239 | 120 |
|
240 | 121 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
248 | 129 |
|
249 | 130 |
Static4D[] getQuats() |
250 | 131 |
{ |
251 |
return QUATS; |
|
132 |
if( mQuats==null ) initializeQuats(); |
|
133 |
return mQuats; |
|
252 | 134 |
} |
253 | 135 |
|
254 | 136 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
276 | 158 |
|
277 | 159 |
int getNumStickerTypes(int numLayers) |
278 | 160 |
{ |
279 |
return STICKERS.length;
|
|
161 |
return 2;
|
|
280 | 162 |
} |
281 | 163 |
|
282 | 164 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
299 | 181 |
|
300 | 182 |
float[][] getCubitPositions(int size) |
301 | 183 |
{ |
302 |
return CENTERS; |
|
184 |
if( mCenters==null ) |
|
185 |
{ |
|
186 |
final float DIST_CORNER = 1.0f; |
|
187 |
final float DIST_EDGE = 1.5f; |
|
188 |
|
|
189 |
mCenters = new float[][] |
|
190 |
{ |
|
191 |
{ DIST_CORNER, DIST_CORNER, DIST_CORNER }, |
|
192 |
{ DIST_CORNER, DIST_CORNER,-DIST_CORNER }, |
|
193 |
{ DIST_CORNER,-DIST_CORNER, DIST_CORNER }, |
|
194 |
{ DIST_CORNER,-DIST_CORNER,-DIST_CORNER }, |
|
195 |
{-DIST_CORNER, DIST_CORNER, DIST_CORNER }, |
|
196 |
{-DIST_CORNER, DIST_CORNER,-DIST_CORNER }, |
|
197 |
{-DIST_CORNER,-DIST_CORNER, DIST_CORNER }, |
|
198 |
{-DIST_CORNER,-DIST_CORNER,-DIST_CORNER }, |
|
199 |
|
|
200 |
{ 0.0f, DIST_EDGE, DIST_EDGE }, |
|
201 |
{ DIST_EDGE, 0.0f, DIST_EDGE }, |
|
202 |
{ 0.0f,-DIST_EDGE, DIST_EDGE }, |
|
203 |
{-DIST_EDGE, 0.0f, DIST_EDGE }, |
|
204 |
{ DIST_EDGE, DIST_EDGE, 0.0f }, |
|
205 |
{ DIST_EDGE,-DIST_EDGE, 0.0f }, |
|
206 |
{-DIST_EDGE,-DIST_EDGE, 0.0f }, |
|
207 |
{-DIST_EDGE, DIST_EDGE, 0.0f }, |
|
208 |
{ 0.0f, DIST_EDGE,-DIST_EDGE }, |
|
209 |
{ DIST_EDGE, 0.0f,-DIST_EDGE }, |
|
210 |
{ 0.0f,-DIST_EDGE,-DIST_EDGE }, |
|
211 |
{-DIST_EDGE, 0.0f,-DIST_EDGE } |
|
212 |
}; |
|
213 |
} |
|
214 |
|
|
215 |
return mCenters; |
|
303 | 216 |
} |
304 | 217 |
|
305 | 218 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
310 | 223 |
|
311 | 224 |
if( variant==0 ) |
312 | 225 |
{ |
226 |
double[][] vertices = new double[][] |
|
227 |
{ |
|
228 |
{ 0.0f, 0.0f, 0.0f }, |
|
229 |
{-0.5f, 0.5f, 0.5f }, |
|
230 |
{-0.5f,-0.5f, 0.5f }, |
|
231 |
{ 0.5f, 0.5f, 0.5f }, |
|
232 |
{ 0.5f,-0.5f, 0.5f }, |
|
233 |
{ 0.5f, 0.5f,-0.5f }, |
|
234 |
{ 0.5f,-0.5f,-0.5f }, |
|
235 |
{-0.5f, 0.5f,-0.5f }, |
|
236 |
}; |
|
237 |
|
|
238 |
int[][] vert_indices = new int[][] |
|
239 |
{ |
|
240 |
{ 2,4,3,1 }, |
|
241 |
{ 1,3,5,7 }, |
|
242 |
{ 4,6,5,3 }, |
|
243 |
|
|
244 |
{ 2,4,0 }, |
|
245 |
{ 5,7,0 }, |
|
246 |
{ 4,6,0 }, |
|
247 |
{ 7,1,0 }, |
|
248 |
{ 1,2,0 }, |
|
249 |
{ 6,5,0 } |
|
250 |
}; |
|
251 |
|
|
313 | 252 |
float[][] bands = new float[][] { {0.06f,35,0.5f,0.7f,5,2,2}, {0.01f,35,0.2f,0.4f,5,2,2} }; |
314 | 253 |
int[] bandIndices = new int[] { 0,0,0,1,1,1,1,1,1 }; |
315 | 254 |
float[][] corners = new float[][] { {0.06f,0.12f} }; |
316 | 255 |
int[] cornerIndices = new int[] { -1,0,-1,0,0,0,-1,-1 }; |
317 | 256 |
float[][] centers = new float[][] { { 0.0f, 0.0f, 0.0f} }; |
318 | 257 |
int[] centerIndices = new int[] { -1,0,-1,0,0,0,-1,-1 }; |
319 |
return new ObjectShape(VERTICES_CORNER,VERT_INDEXES_CORNER,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
|
258 |
return new ObjectShape(vertices,vert_indices,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
|
320 | 259 |
} |
321 | 260 |
else |
322 | 261 |
{ |
262 |
double[][] vertices = new double[][] |
|
263 |
{ |
|
264 |
{-0.5f, 0.0f, 0.0f}, |
|
265 |
{ 0.5f, 0.0f, 0.0f}, |
|
266 |
{-0.5f,-1.0f, 0.0f}, |
|
267 |
{ 0.5f,-1.0f, 0.0f}, |
|
268 |
{ 0.0f,-1.5f, 0.0f}, |
|
269 |
{-0.5f, 0.0f,-1.0f}, |
|
270 |
{ 0.5f, 0.0f,-1.0f}, |
|
271 |
{ 0.0f, 0.0f,-1.5f}, |
|
272 |
}; |
|
273 |
|
|
274 |
int[][] vert_indices = new int[][] |
|
275 |
{ |
|
276 |
{ 0,2,4,3,1 }, |
|
277 |
{ 0,1,6,7,5 }, |
|
278 |
{ 1,3,6 }, |
|
279 |
{ 0,2,5 }, |
|
280 |
{ 4,7,6,3 }, |
|
281 |
{ 4,7,5,2 } |
|
282 |
}; |
|
283 |
|
|
323 | 284 |
float[][] bands = new float[][] { {0.038f,35,0.250f,0.7f,7,2,2}, {0.020f,35,0.125f,0.2f,3,1,2}, {0.020f,35,0.125f,0.2f,3,1,1} }; |
324 | 285 |
int[] bandIndices = new int[] { 0,0,1,1,2,2 }; |
325 | 286 |
float[][] corners = new float[][] { {0.06f,0.20f} }; |
326 | 287 |
int[] cornerIndices = new int[] { 0,0,-1,-1,-1,-1,-1,-1 }; |
327 | 288 |
float[][] centers = new float[][] { { 0.0f,-0.75f,-0.75f} }; |
328 | 289 |
int[] centerIndices = new int[] { 0,0,-1,-1,-1,-1,-1,-1 }; |
329 |
return new ObjectShape(VERTICES_EDGE,VERT_INDEXES_EDGE,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
|
290 |
return new ObjectShape(vertices,vert_indices,bands,bandIndices,corners,cornerIndices,centers,centerIndices,getNumCubitFaces(), null);
|
|
330 | 291 |
} |
331 | 292 |
} |
332 | 293 |
|
... | ... | |
334 | 295 |
|
335 | 296 |
Static4D getQuat(int cubit, int numLayers) |
336 | 297 |
{ |
298 |
if( mQuats==null ) initializeQuats(); |
|
299 |
|
|
337 | 300 |
switch(cubit) |
338 | 301 |
{ |
339 |
case 0: return QUATS[0]; // unit quat
|
|
302 |
case 0: return mQuats[0]; // unit quat
|
|
340 | 303 |
case 1: return new Static4D( SQ2/2,0,0,SQ2/2); // 90 along X |
341 | 304 |
case 2: return new Static4D(-SQ2/2,0,0,SQ2/2); // -90 along X |
342 |
case 3: return QUATS[1]; // 180 along X
|
|
305 |
case 3: return mQuats[1]; // 180 along X
|
|
343 | 306 |
case 4: return new Static4D(0, SQ2/2,0,SQ2/2); // 90 along Y |
344 |
case 5: return QUATS[2]; // 180 along Y
|
|
345 |
case 6: return QUATS[3]; // 180 along Z
|
|
307 |
case 5: return mQuats[2]; // 180 along Y
|
|
308 |
case 6: return mQuats[3]; // 180 along Z
|
|
346 | 309 |
case 7: return new Static4D(SQ2/2,0,-SQ2/2,0); // 180 along (SQ2/2,0,-SQ2/2) |
347 | 310 |
|
348 |
case 8: return QUATS[0];
|
|
349 |
case 9: return QUATS[5];
|
|
350 |
case 10: return QUATS[3];
|
|
351 |
case 11: return QUATS[11];
|
|
352 |
case 12: return QUATS[4];
|
|
353 |
case 13: return QUATS[7];
|
|
354 |
case 14: return QUATS[9];
|
|
355 |
case 15: return QUATS[10];
|
|
356 |
case 16: return QUATS[2];
|
|
357 |
case 17: return QUATS[8];
|
|
358 |
case 18: return QUATS[1];
|
|
359 |
case 19: return QUATS[6];
|
|
311 |
case 8: return mQuats[0];
|
|
312 |
case 9: return mQuats[5];
|
|
313 |
case 10: return mQuats[3];
|
|
314 |
case 11: return mQuats[11];
|
|
315 |
case 12: return mQuats[4];
|
|
316 |
case 13: return mQuats[7];
|
|
317 |
case 14: return mQuats[9];
|
|
318 |
case 15: return mQuats[10];
|
|
319 |
case 16: return mQuats[2];
|
|
320 |
case 17: return mQuats[8];
|
|
321 |
case 18: return mQuats[1];
|
|
322 |
case 19: return mQuats[6];
|
|
360 | 323 |
} |
361 | 324 |
|
362 | 325 |
return null; |
... | ... | |
380 | 343 |
|
381 | 344 |
int getFaceColor(int cubit, int cubitface, int size) |
382 | 345 |
{ |
383 |
return cubitface<3 ? mFaceMap[cubit][cubitface] : STICKERS.length*FACE_COLORS.length; |
|
346 |
if( mFaceMap==null ) |
|
347 |
{ |
|
348 |
// Colors of the faces of cubits. |
|
349 |
// YELLOW 0 WHITE 1 BLUE 2 GREEN 3 RED 4 ORANGE 5 |
|
350 |
// YELLOW 6 WHITE 7 BLUE 8 GREEN 9 RED 10 ORANGE 11 |
|
351 |
mFaceMap = new int[][] |
|
352 |
{ |
|
353 |
{ 4, 2, 0 }, |
|
354 |
{ 2, 5, 0 }, |
|
355 |
{ 3, 4, 0 }, |
|
356 |
{ 5, 3, 0 }, |
|
357 |
{ 1, 2, 4 }, |
|
358 |
{ 5, 2, 1 }, |
|
359 |
{ 4, 3, 1 }, |
|
360 |
{ 1, 3, 5 }, |
|
361 |
|
|
362 |
{ 10, 8,12 }, |
|
363 |
{ 6,10,12 }, |
|
364 |
{ 10, 9,12 }, |
|
365 |
{ 7,10,12 }, |
|
366 |
{ 8, 6,12 }, |
|
367 |
{ 9, 6,12 }, |
|
368 |
{ 9, 7,12 }, |
|
369 |
{ 8, 7,12 }, |
|
370 |
{ 11, 8,12 }, |
|
371 |
{ 6,11,12 }, |
|
372 |
{ 11, 9,12 }, |
|
373 |
{ 7,11,12 }, |
|
374 |
}; |
|
375 |
} |
|
376 |
|
|
377 |
return cubitface<3 ? mFaceMap[cubit][cubitface] : NUM_TEXTURES; |
|
384 | 378 |
} |
385 | 379 |
|
386 | 380 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
394 | 388 |
|
395 | 389 |
ObjectSticker retSticker(int face) |
396 | 390 |
{ |
391 |
if( mStickers==null ) |
|
392 |
{ |
|
393 |
float[][] STICKERS = new float[][] |
|
394 |
{ |
|
395 |
{ -0.5f, -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, -0.5f, 0.5f }, |
|
396 |
{ -0.3125f, 0.4375f, -0.3125f, -0.1875f, 0.0f, -0.5f, 0.3125f, -0.1875f, 0.3125f, 0.4375f } |
|
397 |
}; |
|
398 |
|
|
399 |
final float R0 = 0.09f; |
|
400 |
final float R1 = 0.06f; |
|
401 |
final float[][] radii = { {R0,R0,R0,R0},{R1,R1,R1,R1,R1} }; |
|
402 |
final float[] strokes = { 0.09f,0.06f }; |
|
403 |
|
|
404 |
mStickers = new ObjectSticker[STICKERS.length]; |
|
405 |
|
|
406 |
for(int s=0; s<STICKERS.length; s++) |
|
407 |
{ |
|
408 |
mStickers[s] = new ObjectSticker(STICKERS[s],null,radii[s],strokes[s]); |
|
409 |
} |
|
410 |
} |
|
411 |
|
|
397 | 412 |
return mStickers[face/NUM_FACES]; |
398 | 413 |
} |
399 | 414 |
|
... | ... | |
464 | 479 |
|
465 | 480 |
public int[] getBasicAngle() |
466 | 481 |
{ |
467 |
return BASIC_ANGLE; |
|
482 |
if( mBasicAngle ==null ) mBasicAngle = new int[] { 3,3,3,3 }; |
|
483 |
return mBasicAngle; |
|
468 | 484 |
} |
469 | 485 |
|
470 | 486 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
Also available in: Unified diff
Remove statics from the Redi class.