Revision da36b97e
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/TwistyRex.java | ||
---|---|---|
42 | 42 |
|
43 | 43 |
public class TwistyRex extends TwistyObject |
44 | 44 |
{ |
45 |
private static final int FACES_PER_CUBIT =4;
|
|
45 |
private static final int FACES_PER_CUBIT =6;
|
|
46 | 46 |
|
47 | 47 |
// the four rotation axis of a RubikRex. Must be normalized. |
48 | 48 |
static final Static3D[] ROT_AXIS = new Static3D[] |
... | ... | |
80 | 80 |
|
81 | 81 |
private static final int[][] mFaceMap = |
82 | 82 |
{ |
83 |
{ 0, 18,18,18 }, |
|
84 |
{ 0, 18,18,18 }, |
|
85 |
{ 0, 18,18,18 }, |
|
86 |
{ 0, 18,18,18 }, |
|
87 |
{ 1, 18,18,18 }, |
|
88 |
{ 1, 18,18,18 }, |
|
89 |
{ 1, 18,18,18 }, |
|
90 |
{ 1, 18,18,18 }, |
|
91 |
{ 2, 18,18,18 }, |
|
92 |
{ 2, 18,18,18 }, |
|
93 |
{ 2, 18,18,18 }, |
|
94 |
{ 2, 18,18,18 }, |
|
95 |
{ 3, 18,18,18 }, |
|
96 |
{ 3, 18,18,18 }, |
|
97 |
{ 3, 18,18,18 }, |
|
98 |
{ 3, 18,18,18 }, |
|
99 |
{ 4, 18,18,18 }, |
|
100 |
{ 4, 18,18,18 }, |
|
101 |
{ 4, 18,18,18 }, |
|
102 |
{ 4, 18,18,18 }, |
|
103 |
{ 5, 18,18,18 }, |
|
104 |
{ 5, 18,18,18 }, |
|
105 |
{ 5, 18,18,18 }, |
|
106 |
{ 5, 18,18,18 }, |
|
107 |
|
|
108 |
{ 6, 18,18,18 }, |
|
109 |
{ 7, 18,18,18 }, |
|
110 |
{ 8, 18,18,18 }, |
|
111 |
{ 9, 18,18,18 }, |
|
112 |
{ 10, 18,18,18 }, |
|
113 |
{ 11, 18,18,18 }, |
|
114 |
|
|
115 |
{ 16,14, 18,18 }, |
|
116 |
{ 16,12, 18,18 }, |
|
117 |
{ 16,15, 18,18 }, |
|
118 |
{ 16,13, 18,18 }, |
|
119 |
{ 12,14, 18,18 }, |
|
120 |
{ 15,12, 18,18 }, |
|
121 |
{ 15,13, 18,18 }, |
|
122 |
{ 13,14, 18,18 }, |
|
123 |
{ 14,17, 18,18 }, |
|
124 |
{ 12,17, 18,18 }, |
|
125 |
{ 17,15, 18,18 }, |
|
126 |
{ 13,17, 18,18 }, |
|
83 |
{ 0, 18,18,18,18,18 },
|
|
84 |
{ 0, 18,18,18,18,18 },
|
|
85 |
{ 0, 18,18,18,18,18 },
|
|
86 |
{ 0, 18,18,18,18,18 },
|
|
87 |
{ 1, 18,18,18,18,18 },
|
|
88 |
{ 1, 18,18,18,18,18 },
|
|
89 |
{ 1, 18,18,18,18,18 },
|
|
90 |
{ 1, 18,18,18,18,18 },
|
|
91 |
{ 2, 18,18,18,18,18 },
|
|
92 |
{ 2, 18,18,18,18,18 },
|
|
93 |
{ 2, 18,18,18,18,18 },
|
|
94 |
{ 2, 18,18,18,18,18 },
|
|
95 |
{ 3, 18,18,18,18,18 },
|
|
96 |
{ 3, 18,18,18,18,18 },
|
|
97 |
{ 3, 18,18,18,18,18 },
|
|
98 |
{ 3, 18,18,18,18,18 },
|
|
99 |
{ 4, 18,18,18,18,18 },
|
|
100 |
{ 4, 18,18,18,18,18 },
|
|
101 |
{ 4, 18,18,18,18,18 },
|
|
102 |
{ 4, 18,18,18,18,18 },
|
|
103 |
{ 5, 18,18,18,18,18 },
|
|
104 |
{ 5, 18,18,18,18,18 },
|
|
105 |
{ 5, 18,18,18,18,18 },
|
|
106 |
{ 5, 18,18,18,18,18 },
|
|
107 |
|
|
108 |
{ 6, 18,18,18,18,18 },
|
|
109 |
{ 7, 18,18,18,18,18 },
|
|
110 |
{ 8, 18,18,18,18,18 },
|
|
111 |
{ 9, 18,18,18,18,18 },
|
|
112 |
{ 10, 18,18,18,18,18 },
|
|
113 |
{ 11, 18,18,18,18,18 },
|
|
114 |
|
|
115 |
{ 16,14, 18,18,18,18 },
|
|
116 |
{ 16,12, 18,18,18,18 },
|
|
117 |
{ 16,15, 18,18,18,18 },
|
|
118 |
{ 16,13, 18,18,18,18 },
|
|
119 |
{ 12,14, 18,18,18,18 },
|
|
120 |
{ 15,12, 18,18,18,18 },
|
|
121 |
{ 15,13, 18,18,18,18 },
|
|
122 |
{ 13,14, 18,18,18,18 },
|
|
123 |
{ 14,17, 18,18,18,18 },
|
|
124 |
{ 12,17, 18,18,18,18 },
|
|
125 |
{ 17,15, 18,18,18,18 },
|
|
126 |
{ 13,17, 18,18,18,18 },
|
|
127 | 127 |
}; |
128 | 128 |
|
129 | 129 |
private static MeshBase mCornerMesh, mFaceMesh, mEdgeMesh; |
... | ... | |
192 | 192 |
Static3D[] getCubitPositions(int numLayers) |
193 | 193 |
{ |
194 | 194 |
final float DIST = 0.50f; |
195 |
final float DIST2= SQ3/6*(1.0f-2*REX_D);
|
|
195 |
final float DIST2= (1+2*REX_D)/6;
|
|
196 | 196 |
|
197 | 197 |
final Static3D[] CENTERS = new Static3D[42]; |
198 | 198 |
|
... | ... | |
245 | 245 |
} |
246 | 246 |
|
247 | 247 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
248 |
// 1 +90 ( 1, 0, 0) = Static4D(+SQ2/2, 0, 0, SQ2/2); |
|
249 |
// 2 -90 ( 1, 0, 0) = Static4D(-SQ2/2, 0, 0, SQ2/2); |
|
250 |
// 3 +90 ( 0, 1, 0) = Static4D( 0,+SQ2/2, 0, SQ2/2); |
|
251 |
// 4 -90 ( 0, 1, 0) = Static4D( 0,-SQ2/2, 0, SQ2/2); |
|
252 |
// 5 +90 ( 0, 0, 1) = Static4D( 0, 0,+SQ2/2, SQ2/2); |
|
253 |
// 6 -90 ( 0, 0, 1) = Static4D( 0, 0,-SQ2/2, SQ2/2); |
|
254 |
// 7 180 ( 1, 0, 1) = Static4D(+SQ2/2, 0,+SQ2/2, 0); |
|
255 |
// 8 180 (-1, 0, 1) = Static4D(-SQ2/2, 0,+SQ2/2, 0); |
|
256 |
// 9 180 ( 0, 1, 1) = Static4D( 0,+SQ2/2,+SQ2/2, 0); |
|
257 |
//10 180 ( 0,-1, 1) = Static4D( 0,-SQ2/2,+SQ2/2, 0); |
|
258 |
//11 180 ( 1, 1, 0) = Static4D(+SQ2/2,+SQ2/2, 0, 0); |
|
259 |
//12 180 ( 1,-1, 0) = Static4D(+SQ2/2,-SQ2/2, 0, 0); |
|
260 | 248 |
|
261 | 249 |
private Static4D getQuat(int cubit) |
262 | 250 |
{ |
... | ... | |
352 | 340 |
{ |
353 | 341 |
int COLORS = FACE_COLORS.length; |
354 | 342 |
FactorySticker factory = FactorySticker.getInstance(); |
355 |
float S1 = 0.05f; |
|
356 |
float S2 = 0.04f; |
|
357 |
float R1 = 0.12f; |
|
358 |
float R2 = 0.06f; |
|
343 |
float S1 = 0.050f; |
|
344 |
float S2 = 0.051f; |
|
345 |
float R1 = 0.07f; |
|
346 |
float R2 = 0.02f; |
|
347 |
float R3 = 0.06f; |
|
348 |
float R4 = 0.04f; |
|
359 | 349 |
|
360 | 350 |
if( face<COLORS ) |
361 | 351 |
{ |
362 |
factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R2); |
|
352 |
factory.drawRexCornerSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R2, R3);
|
|
363 | 353 |
} |
364 | 354 |
else if( face<2*COLORS ) |
365 | 355 |
{ |
366 |
factory.drawRexFaceSticker(canvas, paint, left, top, FACE_COLORS[face%COLORS], S1, R1); |
|
356 |
float[] vertices = { -REX_D,0.0f, 0.0f, -REX_D, +REX_D, 0.0f, 0.0f, +REX_D}; |
|
357 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S1, FACE_COLORS[face%COLORS], R4); |
|
367 | 358 |
} |
368 | 359 |
else |
369 | 360 |
{ |
Also available in: Unified diff
Rex Cube - new mesh, textures and icon.