Revision 4e627d8b
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/TwistyMinx.java | ||
---|---|---|
41 | 41 |
public class TwistyMinx extends TwistyObject |
42 | 42 |
{ |
43 | 43 |
private static final int FACES_PER_CUBIT =6; |
44 |
private static final float AXIS_LEN = 1.0f/(float)Math.sqrt(2.5f+0.5f*SQ5); |
|
45 |
private static final float C0 = (SQ5-1)/4; |
|
46 |
private static final float C1 = (SQ5+1)/4; |
|
44 |
|
|
45 |
static final float C0 = (SQ5-1)/4; |
|
46 |
static final float C1 = (SQ5+1)/4; |
|
47 |
static final float C2 = (SQ5+3)/4; |
|
48 |
static final float C3 = (float)(Math.sqrt(10-2*SQ5)/4); // cos(54 deg) |
|
47 | 49 |
|
48 | 50 |
// the six rotation axis of a RubikMegaminx. Must be normalized. |
49 | 51 |
static final Static3D[] ROT_AXIS = new Static3D[] |
50 | 52 |
{ |
51 |
new Static3D( AXIS_LEN*C1, AXIS_LEN , 0 ),
|
|
52 |
new Static3D(-AXIS_LEN*C1, AXIS_LEN , 0 ),
|
|
53 |
new Static3D( 0 , AXIS_LEN*C1, AXIS_LEN ),
|
|
54 |
new Static3D( 0 ,-AXIS_LEN*C1, AXIS_LEN ),
|
|
55 |
new Static3D( AXIS_LEN , 0 , AXIS_LEN*C1),
|
|
56 |
new Static3D( AXIS_LEN , 0 ,-AXIS_LEN*C1)
|
|
53 |
new Static3D( C1/(2*C3), 1/(2*C3) , 0 ),
|
|
54 |
new Static3D(-C1/(2*C3), 1/(2*C3) , 0 ),
|
|
55 |
new Static3D( 0 , C1/(2*C3), 1/(2*C3) ),
|
|
56 |
new Static3D( 0 ,-C1/(2*C3), 1/(2*C3) ),
|
|
57 |
new Static3D( 1/(2*C3) , 0 , C1/(2*C3)),
|
|
58 |
new Static3D( 1/(2*C3) , 0 ,-C1/(2*C3))
|
|
57 | 59 |
}; |
58 | 60 |
|
59 | 61 |
private static final int MINX_LGREEN = 0xff53aa00; |
... | ... | |
233 | 235 |
|
234 | 236 |
Static3D[] getCubitPositions(int numLayers) |
235 | 237 |
{ |
236 |
final float C0 = (SQ5+1)/4; |
|
237 |
final float C1 = (SQ5+3)/4; |
|
238 |
|
|
239 | 238 |
final Static3D[] CENTERS = new Static3D[20]; |
240 | 239 |
|
241 |
CENTERS[ 0] = new Static3D( 0.0f, 0.5f, C1);
|
|
242 |
CENTERS[ 1] = new Static3D( 0.0f, 0.5f, -C1);
|
|
243 |
CENTERS[ 2] = new Static3D( 0.0f,-0.5f, C1);
|
|
244 |
CENTERS[ 3] = new Static3D( 0.0f,-0.5f, -C1);
|
|
245 |
CENTERS[ 4] = new Static3D( C1, 0.0f, 0.5f);
|
|
246 |
CENTERS[ 5] = new Static3D( C1, 0.0f,-0.5f);
|
|
247 |
CENTERS[ 6] = new Static3D( -C1, 0.0f, 0.5f);
|
|
248 |
CENTERS[ 7] = new Static3D( -C1, 0.0f,-0.5f);
|
|
249 |
CENTERS[ 8] = new Static3D( 0.5f, C1, 0.0f);
|
|
250 |
CENTERS[ 9] = new Static3D( 0.5f, -C1, 0.0f);
|
|
251 |
CENTERS[10] = new Static3D(-0.5f, C1, 0.0f);
|
|
252 |
CENTERS[11] = new Static3D(-0.5f, -C1, 0.0f);
|
|
253 |
CENTERS[12] = new Static3D( C0, C0, C0);
|
|
254 |
CENTERS[13] = new Static3D( C0, C0, -C0);
|
|
255 |
CENTERS[14] = new Static3D( C0, -C0, C0);
|
|
256 |
CENTERS[15] = new Static3D( C0, -C0, -C0);
|
|
257 |
CENTERS[16] = new Static3D( -C0, C0, C0);
|
|
258 |
CENTERS[17] = new Static3D( -C0, C0, -C0);
|
|
259 |
CENTERS[18] = new Static3D( -C0, -C0, C0);
|
|
260 |
CENTERS[19] = new Static3D( -C0, -C0, -C0);
|
|
240 |
CENTERS[ 0] = new Static3D( 0.0f, 0.5f, C2);
|
|
241 |
CENTERS[ 1] = new Static3D( 0.0f, 0.5f, -C2);
|
|
242 |
CENTERS[ 2] = new Static3D( 0.0f,-0.5f, C2);
|
|
243 |
CENTERS[ 3] = new Static3D( 0.0f,-0.5f, -C2);
|
|
244 |
CENTERS[ 4] = new Static3D( C2, 0.0f, 0.5f);
|
|
245 |
CENTERS[ 5] = new Static3D( C2, 0.0f,-0.5f);
|
|
246 |
CENTERS[ 6] = new Static3D( -C2, 0.0f, 0.5f);
|
|
247 |
CENTERS[ 7] = new Static3D( -C2, 0.0f,-0.5f);
|
|
248 |
CENTERS[ 8] = new Static3D( 0.5f, C2, 0.0f);
|
|
249 |
CENTERS[ 9] = new Static3D( 0.5f, -C2, 0.0f);
|
|
250 |
CENTERS[10] = new Static3D(-0.5f, C2, 0.0f);
|
|
251 |
CENTERS[11] = new Static3D(-0.5f, -C2, 0.0f);
|
|
252 |
CENTERS[12] = new Static3D( C1, C1, C1);
|
|
253 |
CENTERS[13] = new Static3D( C1, C1, -C1);
|
|
254 |
CENTERS[14] = new Static3D( C1, -C1, C1);
|
|
255 |
CENTERS[15] = new Static3D( C1, -C1, -C1);
|
|
256 |
CENTERS[16] = new Static3D( -C1, C1, C1);
|
|
257 |
CENTERS[17] = new Static3D( -C1, C1, -C1);
|
|
258 |
CENTERS[18] = new Static3D( -C1, -C1, C1);
|
|
259 |
CENTERS[19] = new Static3D( -C1, -C1, -C1);
|
|
261 | 260 |
|
262 | 261 |
return CENTERS; |
263 | 262 |
} |
... | ... | |
320 | 319 |
float S = 0.08f; |
321 | 320 |
float R = 0.12f; |
322 | 321 |
|
323 |
float[] vertices = { }; // TODO |
|
322 |
float X1= (SQ5+1)/8; |
|
323 |
float Y1= (float)(Math.sqrt(2+0.4f*SQ5)/4); |
|
324 |
float Y2= Y1 - (float)(Math.sqrt(10-2*SQ5)/8); |
|
325 |
|
|
326 |
float[] vertices = { -X1, Y2, 0, -Y1, X1, Y2, 0, Y1 }; |
|
324 | 327 |
|
325 | 328 |
FactorySticker factory = FactorySticker.getInstance(); |
326 | 329 |
factory.drawRoundedPolygon(canvas, paint, left, top, vertices, S, FACE_COLORS[face], R); |
Also available in: Unified diff
Progress with the Kilominx.