Revision eeabbae3
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/touchcontrol/TouchControlIcosahedron.java | ||
---|---|---|
27 | 27 |
DIST3D,DIST3D,DIST3D,DIST3D,DIST3D, |
28 | 28 |
DIST3D,DIST3D,DIST3D,DIST3D,DIST3D }; |
29 | 29 |
|
30 |
// topmost vertex (0,A,0) and 3 vertices from the second-topmost-layer, front one and two ones
|
|
31 |
// to the right: (0,B,C) , (D,B,E) , (F,B,H)
|
|
30 |
// VEC_0: topmost one. Then 3 vertices from the second-topmost-layer,
|
|
31 |
// front one and two ones to the right.
|
|
32 | 32 |
|
33 | 33 |
private static final float Z = (float)Math.sqrt(5+SQ5); |
34 | 34 |
|
35 |
private static final float A = Z*(SQ2/4); |
|
36 |
private static final float B = Z*(SQ2*SQ5/20); |
|
37 |
private static final float C = Z*(SQ2*SQ5/10); |
|
38 |
private static final float D = (SQ5+1)/4; |
|
39 |
private static final float E = Z*(SQ5-1)/(4*SQ2*SQ5); |
|
40 |
private static final float F = 0.5f; |
|
41 |
private static final float H =-Z*(SQ5+1)/(4*SQ2*SQ5); |
|
42 |
|
|
43 |
private static final float X1 = D/3; |
|
44 |
private static final float X2 = (D+F)/3; |
|
45 |
private static final float X3 = (2*D+F)/3; |
|
46 |
private static final float X4 = (D+F)/3; |
|
47 |
private static final float Y1 = (A+2*B)/3; |
|
48 |
private static final float Y2 = B/3; |
|
49 |
private static final float Z1 = (C+E)/3; |
|
50 |
private static final float Z2 = (E+H)/3; |
|
51 |
private static final float Z3 = 2*H/3; |
|
52 |
private static final float Z4 = (C-2*H)/3; |
|
53 |
private static final float Z5 = -H/3; |
|
54 |
private static final float Z6 = (H-C-E)/3; |
|
35 |
private static final float VEC_0_X = 0; |
|
36 |
private static final float VEC_0_Y = Z*(SQ2/4); |
|
37 |
private static final float VEC_0_Z = 0; |
|
38 |
|
|
39 |
private static final float VEC_1_X = 0; |
|
40 |
private static final float VEC_1_Y = Z*(SQ2*SQ5/20); |
|
41 |
private static final float VEC_1_Z = Z*(SQ2*SQ5/10); |
|
42 |
|
|
43 |
private static final float VEC_2_X = (SQ5+1)/4; |
|
44 |
private static final float VEC_2_Y = Z*(SQ2*SQ5/20); |
|
45 |
private static final float VEC_2_Z = Z*(SQ5-1)/(4*SQ2*SQ5); |
|
46 |
|
|
47 |
private static final float VEC_3_X = 0.5f; |
|
48 |
private static final float VEC_3_Y = Z*(SQ2*SQ5/20); |
|
49 |
private static final float VEC_3_Z =-Z*(SQ5+1)/(4*SQ2*SQ5); |
|
50 |
|
|
51 |
private static final float X1 = VEC_2_X/3; |
|
52 |
private static final float X2 = (VEC_2_X + VEC_3_X)/3; |
|
53 |
private static final float X3 = (2*VEC_2_X + VEC_3_X)/3; |
|
54 |
private static final float X4 = (VEC_2_X + VEC_3_X)/3; |
|
55 |
private static final float Y1 = (VEC_0_Y + 2*VEC_1_Y)/3; |
|
56 |
private static final float Y2 = VEC_1_Y/3; |
|
57 |
private static final float Z1 = (VEC_1_Z + VEC_2_Z)/3; |
|
58 |
private static final float Z2 = (VEC_2_Z + VEC_3_Z)/3; |
|
59 |
private static final float Z3 = 2*VEC_3_Z/3; |
|
60 |
private static final float Z4 = (VEC_1_Z - 2*VEC_3_Z)/3; |
|
61 |
private static final float Z5 = -VEC_3_Z/3; |
|
62 |
private static final float Z6 = (VEC_3_Z - VEC_1_Z - VEC_2_Z)/3; |
|
63 |
|
|
64 |
public static final float[][] VEC = new float[][] |
|
65 |
{ |
|
66 |
{ VEC_0_X, VEC_0_Y, VEC_0_Z}, |
|
67 |
|
|
68 |
{ VEC_1_X, VEC_1_Y, VEC_1_Z}, |
|
69 |
{ VEC_2_X, VEC_2_Y, VEC_2_Z}, |
|
70 |
{ VEC_3_X, VEC_3_Y, VEC_3_Z}, |
|
71 |
{-VEC_3_X, VEC_3_Y, VEC_3_Z}, |
|
72 |
{-VEC_2_X, VEC_2_Y, VEC_2_Z}, |
|
73 |
|
|
74 |
{-VEC_1_X,-VEC_1_Y,-VEC_1_Z}, |
|
75 |
{-VEC_2_X,-VEC_2_Y,-VEC_2_Z}, |
|
76 |
{-VEC_3_X,-VEC_3_Y,-VEC_3_Z}, |
|
77 |
{ VEC_3_X,-VEC_3_Y,-VEC_3_Z}, |
|
78 |
{ VEC_2_X,-VEC_2_Y,-VEC_2_Z}, |
|
79 |
|
|
80 |
{-VEC_0_X,-VEC_0_Y,-VEC_0_Z}, |
|
81 |
}; |
|
82 |
|
|
83 |
public static final int[][] EDGE_INDICES = new int[][] |
|
84 |
{ |
|
85 |
{0,1}, {0,2}, {0,3}, {0,4}, {0,5}, |
|
86 |
{1,2}, {2,3}, {3,4}, {4,5}, {5,1}, |
|
87 |
{1,9}, {9,2}, {2,10}, {10,3}, {3,6}, {6,4}, {4,7}, {7,5}, {5,8}, {8,1}, |
|
88 |
{6,7}, {7,8}, {8,9}, {9,10}, {10,6}, |
|
89 |
{11,6}, {11,7}, {11,8}, {11,9}, {11,10} |
|
90 |
}; |
|
55 | 91 |
|
56 | 92 |
public static final Static3D[] FACE_AXIS = new Static3D[] |
57 | 93 |
{ |
58 | 94 |
new Static3D( X1/DIST3D, Y1/DIST3D, Z1/DIST3D ), |
59 | 95 |
new Static3D( X2/DIST3D, Y1/DIST3D, Z2/DIST3D ), |
60 |
new Static3D( 0.0f/DIST3D, Y1/DIST3D, Z3/DIST3D ),
|
|
96 |
new Static3D( 0/DIST3D, Y1/DIST3D, Z3/DIST3D ),
|
|
61 | 97 |
new Static3D( -X2/DIST3D, Y1/DIST3D, Z2/DIST3D ), |
62 | 98 |
new Static3D( -X1/DIST3D, Y1/DIST3D, Z1/DIST3D ), |
63 | 99 |
|
64 |
new Static3D( 0.0f/DIST3D,-Y2/DIST3D, Z4/DIST3D ),
|
|
100 |
new Static3D( 0/DIST3D,-Y2/DIST3D, Z4/DIST3D ),
|
|
65 | 101 |
new Static3D( X3/DIST3D,-Y2/DIST3D, Z5/DIST3D ), |
66 | 102 |
new Static3D( X4/DIST3D,-Y2/DIST3D, Z6/DIST3D ), |
67 | 103 |
new Static3D( -X4/DIST3D,-Y2/DIST3D, Z6/DIST3D ), |
68 | 104 |
new Static3D( -X3/DIST3D,-Y2/DIST3D, Z5/DIST3D ), |
69 | 105 |
|
70 |
new Static3D( 0.0f/DIST3D, Y2/DIST3D,-Z4/DIST3D ),
|
|
106 |
new Static3D( 0/DIST3D, Y2/DIST3D,-Z4/DIST3D ),
|
|
71 | 107 |
new Static3D( -X3/DIST3D, Y2/DIST3D,-Z5/DIST3D ), |
72 | 108 |
new Static3D( -X4/DIST3D, Y2/DIST3D,-Z6/DIST3D ), |
73 | 109 |
new Static3D( X4/DIST3D, Y2/DIST3D,-Z6/DIST3D ), |
... | ... | |
75 | 111 |
|
76 | 112 |
new Static3D( -X1/DIST3D,-Y1/DIST3D,-Z1/DIST3D ), |
77 | 113 |
new Static3D( -X2/DIST3D,-Y1/DIST3D,-Z2/DIST3D ), |
78 |
new Static3D( 0.0f/DIST3D,-Y1/DIST3D,-Z3/DIST3D ),
|
|
114 |
new Static3D( 0/DIST3D,-Y1/DIST3D,-Z3/DIST3D ),
|
|
79 | 115 |
new Static3D( X2/DIST3D,-Y1/DIST3D,-Z2/DIST3D ), |
80 | 116 |
new Static3D( X1/DIST3D,-Y1/DIST3D,-Z1/DIST3D ), |
81 | 117 |
}; |
Also available in: Unified diff
Progress with Master Icosamate.