Project

General

Profile

Download (24.5 KB) Statistics
| Branch: | Revision:

distorted-objectlib / src / main / java / org / distorted / objectlib / objects / TwistyMixup.java @ 9ba7f3f6

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

    
10
package org.distorted.objectlib.objects;
11

    
12
import org.distorted.library.type.Static3D;
13
import org.distorted.library.type.Static4D;
14
import org.distorted.objectlib.main.InitData;
15
import org.distorted.objectlib.shape.ShapeHexahedron;
16
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
17

    
18
import java.io.InputStream;
19

    
20
import static org.distorted.objectlib.touchcontrol.TouchControl.TC_HEXAHEDRON;
21
import static org.distorted.objectlib.touchcontrol.TouchControl.TYPE_NOT_SPLIT;
22

    
23
///////////////////////////////////////////////////////////////////////////////////////////////////
24

    
25
abstract class TwistyMixup extends ShapeHexahedron
26
{
27
  static final Static3D[] ROT_AXIS = new Static3D[]
28
         {
29
           new Static3D(1,0,0),
30
           new Static3D(0,1,0),
31
           new Static3D(0,0,1)
32
         };
33

    
34
  int[][] mEdges;
35
  int[][] mBasicAngle;
36
  float[][] mCuts;
37
  float[][] mPosition;
38
  int[] mQuatIndex;
39

    
40
///////////////////////////////////////////////////////////////////////////////////////////////////
41

    
42
  public TwistyMixup(InitData data, int meshState, int iconMode, Static4D quat, Static3D move, float scale, InputStream stream)
43
    {
44
    super(data, meshState, iconMode, data.getNumLayers()[0], quat, move, scale, stream);
45
    }
46

    
47
///////////////////////////////////////////////////////////////////////////////////////////////////
48

    
49
  @Override
50
  public int getInternalColor()
51
    {
52
    return 0xff333333;
53
    }
54

    
55
///////////////////////////////////////////////////////////////////////////////////////////////////
56
// We need to explicitly provide the quaternions because here they do not even make a group!
57
// (we can move the front center by X and Y [ X=(1,0,0)45deg, Y=(0,1,0)45deg ] but not by XY)
58

    
59
  @Override
60
  public Static4D[] getQuats()
61
    {
62
    return new Static4D[]
63
      {
64
      new Static4D ( 0.00000000f, 0.00000000f, 0.00000000f, 1.00000000f), // 0
65
      new Static4D ( 0.00000000f, 0.00000000f, 1.00000000f, 0.00000000f), // 1
66
      new Static4D ( 0.00000000f, 1.00000000f, 0.00000000f, 0.00000000f), // 2
67
      new Static4D ( 1.00000000f, 0.00000000f, 0.00000000f, 0.00000000f), // 3
68

    
69
      new Static4D ( 0.00000000f, 0.00000000f, 0.70710677f, 0.70710677f), // 4
70
      new Static4D ( 0.00000000f, 0.00000000f, 0.70710677f,-0.70710677f), // 5
71
      new Static4D ( 0.00000000f, 0.70710677f, 0.00000000f, 0.70710677f), // 6
72
      new Static4D ( 0.00000000f, 0.70710677f, 0.00000000f,-0.70710677f), // 7
73
      new Static4D ( 0.00000000f, 0.70710677f,-0.70710677f, 0.00000000f), // 8
74
      new Static4D ( 0.00000000f, 0.70710677f, 0.70710677f, 0.00000000f),
75
      new Static4D ( 0.70710677f, 0.00000000f, 0.00000000f, 0.70710677f), // 10
76
      new Static4D ( 0.70710677f, 0.00000000f, 0.00000000f,-0.70710677f), // 11
77
      new Static4D ( 0.70710677f, 0.00000000f, 0.70710677f, 0.00000000f), // 12
78
      new Static4D ( 0.70710677f, 0.00000000f,-0.70710677f, 0.00000000f), // 13
79
      new Static4D ( 0.70710677f,-0.70710677f, 0.00000000f, 0.00000000f),
80
      new Static4D ( 0.70710677f, 0.70710677f, 0.00000000f, 0.00000000f),
81

    
82
      new Static4D ( 0.50000000f, 0.50000000f, 0.50000000f, 0.50000000f),
83
      new Static4D ( 0.50000000f, 0.50000000f, 0.50000000f,-0.50000000f),
84
      new Static4D ( 0.50000000f, 0.50000000f,-0.50000000f, 0.50000000f), // 18
85
      new Static4D ( 0.50000000f, 0.50000000f,-0.50000000f,-0.50000000f),
86
      new Static4D ( 0.50000000f,-0.50000000f, 0.50000000f, 0.50000000f), // 20
87
      new Static4D ( 0.50000000f,-0.50000000f, 0.50000000f,-0.50000000f),
88
      new Static4D ( 0.50000000f,-0.50000000f,-0.50000000f, 0.50000000f),
89
      new Static4D ( 0.50000000f,-0.50000000f,-0.50000000f,-0.50000000f),
90

    
91
// 24 quats ( 0,0, 0.3826, 0.9238 )
92

    
93
      new Static4D ( 0.00000000f, 0.00000000f, 0.38268343f, 0.92387950f),
94
      new Static4D ( 0.00000000f, 0.00000000f, 0.38268343f,-0.92387950f),
95
      new Static4D ( 0.00000000f, 0.00000000f, 0.92387950f, 0.38268343f),
96
      new Static4D ( 0.00000000f, 0.00000000f, 0.92387950f,-0.38268343f),
97
      new Static4D ( 0.00000000f, 0.38268346f, 0.00000000f, 0.92387950f),
98
      new Static4D ( 0.00000000f, 0.38268328f, 0.00000000f,-0.92387962f),
99
      new Static4D ( 0.00000000f,-0.38268328f,-0.92387962f, 0.00000000f),
100
      new Static4D ( 0.00000000f,-0.38268346f, 0.92387950f, 0.00000000f),
101
      new Static4D ( 0.00000000f, 0.92387950f, 0.00000000f, 0.38268343f),
102
      new Static4D ( 0.00000000f, 0.92387950f, 0.00000000f,-0.38268352f),
103
      new Static4D ( 0.00000000f,-0.92387950f,-0.38268352f, 0.00000000f),
104
      new Static4D ( 0.00000000f,-0.92387950f, 0.38268343f, 0.00000000f),
105
      new Static4D ( 0.38268346f, 0.00000000f, 0.00000000f, 0.92387950f),
106
      new Static4D ( 0.38268328f, 0.00000000f, 0.00000000f,-0.92387962f),
107
      new Static4D ( 0.38268328f, 0.00000000f,-0.92387962f, 0.00000000f),
108
      new Static4D ( 0.38268346f, 0.00000000f, 0.92387950f, 0.00000000f),
109
      new Static4D ( 0.38268325f,-0.92387950f, 0.00000000f, 0.00000000f),
110
      new Static4D ( 0.38268325f, 0.92387950f, 0.00000000f, 0.00000000f),
111
      new Static4D ( 0.92387950f, 0.00000000f, 0.00000000f,-0.38268352f),
112
      new Static4D ( 0.92387950f, 0.00000000f, 0.00000000f, 0.38268343f),
113
      new Static4D ( 0.92387950f, 0.00000000f, 0.38268343f, 0.00000000f),
114
      new Static4D ( 0.92387950f, 0.00000000f,-0.38268352f, 0.00000000f),
115
      new Static4D ( 0.92387950f, 0.38268343f, 0.00000000f, 0.00000000f),
116
      new Static4D ( 0.92387950f,-0.38268343f, 0.00000000f, 0.00000000f),
117

    
118
// 48 quats ( 0.2705, 0.2705, 0.6532, 0.6532 )
119

    
120
      new Static4D ( 0.27059805f, 0.27059805f, 0.65328145f, 0.65328145f),
121
      new Static4D ( 0.27059793f, 0.27059793f,-0.65328151f,-0.65328151f),
122
      new Static4D ( 0.27059805f, 0.27059805f,-0.65328145f, 0.65328145f),
123
      new Static4D ( 0.27059793f, 0.27059793f, 0.65328151f,-0.65328151f),
124
      new Static4D ( 0.27059805f,-0.27059805f, 0.65328145f,-0.65328145f),
125
      new Static4D ( 0.27059793f,-0.27059793f,-0.65328151f, 0.65328151f),
126
      new Static4D ( 0.27059805f,-0.27059805f, 0.65328145f, 0.65328145f),
127
      new Static4D ( 0.27059793f,-0.27059793f,-0.65328151f,-0.65328151f),
128
      new Static4D ( 0.27059808f, 0.65328145f, 0.27059802f,-0.65328145f),
129
      new Static4D ( 0.27059799f, 0.65328145f, 0.27059799f, 0.65328145f),
130
      new Static4D ( 0.27059802f, 0.65328145f,-0.27059802f,-0.65328145f),
131
      new Static4D ( 0.27059793f, 0.65328151f,-0.27059793f, 0.65328151f),
132
      new Static4D ( 0.27059799f, 0.65328145f, 0.65328145f, 0.27059799f),
133
      new Static4D ( 0.27059799f, 0.65328145f, 0.65328145f,-0.27059799f),
134
      new Static4D ( 0.27059808f, 0.65328145f,-0.65328145f, 0.27059808f),
135
      new Static4D ( 0.27059796f, 0.65328145f,-0.65328145f,-0.27059796f),
136
      new Static4D ( 0.27059808f,-0.65328145f, 0.27059814f, 0.65328145f),
137
      new Static4D ( 0.27059799f,-0.65328145f, 0.27059799f,-0.65328145f),
138
      new Static4D ( 0.27059805f,-0.65328145f,-0.27059805f,-0.65328145f),
139
      new Static4D ( 0.27059799f,-0.65328145f,-0.27059799f, 0.65328145f),
140
      new Static4D ( 0.27059814f,-0.65328145f, 0.65328145f,-0.27059814f),
141
      new Static4D ( 0.27059799f,-0.65328145f, 0.65328145f, 0.27059799f),
142
      new Static4D ( 0.27059799f,-0.65328145f,-0.65328145f,-0.27059799f),
143
      new Static4D ( 0.27059799f,-0.65328145f,-0.65328145f, 0.27059799f),
144
      new Static4D ( 0.65328145f, 0.27059814f, 0.27059814f, 0.65328145f),
145
      new Static4D ( 0.65328145f, 0.27059799f, 0.27059799f,-0.65328145f),
146
      new Static4D ( 0.65328145f, 0.27059799f,-0.27059799f,-0.65328145f),
147
      new Static4D ( 0.65328145f, 0.27059799f,-0.27059799f, 0.65328145f),
148
      new Static4D ( 0.65328145f, 0.27059802f, 0.65328145f,-0.27059808f),
149
      new Static4D ( 0.65328145f, 0.27059802f, 0.65328145f, 0.27059802f),
150
      new Static4D ( 0.65328145f, 0.27059811f,-0.65328145f, 0.27059811f),
151
      new Static4D ( 0.65328145f, 0.27059802f,-0.65328145f,-0.27059802f),
152
      new Static4D ( 0.65328145f,-0.27059799f, 0.27059799f,-0.65328145f),
153
      new Static4D ( 0.65328145f,-0.27059799f, 0.27059799f, 0.65328145f),
154
      new Static4D ( 0.65328145f,-0.27059799f,-0.27059799f,-0.65328145f),
155
      new Static4D ( 0.65328145f,-0.27059796f,-0.27059796f, 0.65328145f),
156
      new Static4D ( 0.65328151f,-0.27059796f, 0.65328151f, 0.27059790f),
157
      new Static4D ( 0.65328145f,-0.27059799f, 0.65328145f,-0.27059799f),
158
      new Static4D ( 0.65328145f,-0.27059799f,-0.65328145f, 0.27059799f),
159
      new Static4D ( 0.65328145f,-0.27059805f,-0.65328145f,-0.27059805f),
160
      new Static4D ( 0.65328145f, 0.65328145f, 0.27059805f, 0.27059805f),
161
      new Static4D ( 0.65328145f, 0.65328145f,-0.27059811f,-0.27059811f),
162
      new Static4D ( 0.65328145f, 0.65328145f, 0.27059811f,-0.27059811f),
163
      new Static4D ( 0.65328145f, 0.65328145f,-0.27059805f, 0.27059805f),
164
      new Static4D ( 0.65328145f,-0.65328145f, 0.27059805f, 0.27059805f),
165
      new Static4D ( 0.65328145f,-0.65328145f,-0.27059811f,-0.27059811f),
166
      new Static4D ( 0.65328145f,-0.65328145f, 0.27059805f,-0.27059805f),
167
      new Static4D ( 0.65328145f,-0.65328145f,-0.27059811f, 0.27059811f),
168

    
169
// 96 quats ( 0.8535, 0.3535, 0.3535, 0.1464 )
170

    
171
      new Static4D ( 0.14644665f, 0.35355335f, 0.35355338f, 0.85355335f),
172
      new Static4D ( 0.14644665f, 0.35355335f, 0.35355335f,-0.85355335f),
173
      new Static4D ( 0.14644660f, 0.35355338f,-0.35355338f, 0.85355335f),
174
      new Static4D ( 0.14644653f, 0.35355324f,-0.35355340f,-0.85355340f),
175
      new Static4D ( 0.14644665f, 0.35355335f, 0.85355335f,-0.35355338f),
176
      new Static4D ( 0.14644657f, 0.35355335f, 0.85355335f, 0.35355330f),
177
      new Static4D ( 0.14644663f, 0.35355340f,-0.85355335f, 0.35355340f),
178
      new Static4D ( 0.14644665f, 0.35355335f,-0.85355335f,-0.35355338f),
179
      new Static4D ( 0.14644665f,-0.35355335f, 0.35355338f,-0.85355335f),
180
      new Static4D ( 0.14644665f,-0.35355335f, 0.35355338f, 0.85355335f),
181
      new Static4D ( 0.14644660f,-0.35355338f,-0.35355338f,-0.85355335f),
182
      new Static4D ( 0.14644653f,-0.35355324f,-0.35355340f, 0.85355340f),
183
      new Static4D ( 0.14644660f,-0.35355340f, 0.85355335f, 0.35355335f),
184
      new Static4D ( 0.14644665f,-0.35355335f, 0.85355335f,-0.35355338f),
185
      new Static4D ( 0.14644657f,-0.35355335f,-0.85355335f, 0.35355330f),
186
      new Static4D ( 0.14644665f,-0.35355335f,-0.85355335f,-0.35355338f),
187
      new Static4D ( 0.14644657f, 0.85355335f, 0.35355330f, 0.35355335f),
188
      new Static4D ( 0.14644660f, 0.85355335f,-0.35355338f, 0.35355338f),
189
      new Static4D ( 0.14644657f, 0.85355335f, 0.35355335f,-0.35355330f),
190
      new Static4D ( 0.14644663f, 0.85355335f,-0.35355335f,-0.35355335f),
191
      new Static4D ( 0.14644665f,-0.85355335f,-0.35355335f,-0.35355338f),
192
      new Static4D ( 0.14644665f,-0.85355335f, 0.35355335f, 0.35355338f),
193
      new Static4D ( 0.14644665f,-0.85355335f, 0.35355335f,-0.35355338f),
194
      new Static4D ( 0.14644662f,-0.85355335f,-0.35355347f, 0.35355340f),
195
      new Static4D ( 0.85355335f, 0.14644660f, 0.35355338f, 0.35355338f),
196
      new Static4D ( 0.85355335f, 0.14644657f, 0.35355340f,-0.35355340f),
197
      new Static4D ( 0.85355335f, 0.14644659f,-0.35355335f,-0.35355335f),
198
      new Static4D ( 0.85355335f, 0.14644656f,-0.35355335f, 0.35355341f),
199
      new Static4D ( 0.85355335f,-0.14644656f, 0.35355335f, 0.35355341f),
200
      new Static4D ( 0.85355335f,-0.14644656f,-0.35355335f, 0.35355341f),
201
      new Static4D ( 0.85355335f,-0.14644665f, 0.35355338f,-0.35355344f),
202
      new Static4D ( 0.85355335f,-0.14644656f,-0.35355335f,-0.35355341f),
203
      new Static4D ( 0.85355335f, 0.35355347f, 0.14644665f, 0.35355335f),
204
      new Static4D ( 0.85355335f, 0.35355347f, 0.14644665f,-0.35355335f),
205
      new Static4D ( 0.85355335f, 0.35355347f,-0.14644665f,-0.35355335f),
206
      new Static4D ( 0.85355335f, 0.35355335f,-0.14644662f, 0.35355338f),
207
      new Static4D ( 0.85355335f, 0.35355335f, 0.35355338f, 0.14644662f),
208
      new Static4D ( 0.85355335f, 0.35355338f, 0.35355338f,-0.14644660f),
209
      new Static4D ( 0.85355335f, 0.35355347f,-0.35355335f, 0.14644665f),
210
      new Static4D ( 0.85355335f, 0.35355335f,-0.35355344f,-0.14644663f),
211
      new Static4D ( 0.85355335f,-0.35355347f, 0.14644665f,-0.35355335f),
212
      new Static4D ( 0.85355335f,-0.35355335f, 0.14644662f, 0.35355338f),
213
      new Static4D ( 0.85355335f,-0.35355347f,-0.14644665f,-0.35355335f),
214
      new Static4D ( 0.85355335f,-0.35355338f,-0.14644662f, 0.35355338f),
215
      new Static4D ( 0.85355335f,-0.35355338f, 0.35355338f, 0.14644663f),
216
      new Static4D ( 0.85355335f,-0.35355335f, 0.35355338f,-0.14644662f),
217
      new Static4D ( 0.85355335f,-0.35355338f,-0.35355335f,-0.14644662f),
218
      new Static4D ( 0.85355335f,-0.35355348f,-0.35355344f, 0.14644666f),
219
      new Static4D ( 0.35355341f, 0.35355341f,-0.14644663f, 0.85355335f),
220
      new Static4D ( 0.35355340f, 0.35355338f, 0.14644662f, 0.85355335f),
221
      new Static4D ( 0.35355335f, 0.35355330f, 0.14644657f,-0.85355335f),
222
      new Static4D ( 0.35355335f, 0.35355335f,-0.14644659f,-0.85355335f),
223
      new Static4D ( 0.35355335f, 0.35355335f, 0.85355335f, 0.14644659f),
224
      new Static4D ( 0.35355340f, 0.35355335f,-0.85355335f, 0.14644663f),
225
      new Static4D ( 0.35355338f, 0.35355335f, 0.85355335f,-0.14644665f),
226
      new Static4D ( 0.35355340f, 0.35355344f,-0.85355335f,-0.14644659f),
227
      new Static4D ( 0.35355341f,-0.35355341f,-0.14644663f,-0.85355335f),
228
      new Static4D ( 0.35355341f,-0.35355341f, 0.14644663f, 0.85355335f),
229
      new Static4D ( 0.35355341f,-0.35355341f,-0.14644663f, 0.85355335f),
230
      new Static4D ( 0.35355324f,-0.35355340f, 0.14644654f,-0.85355350f),
231
      new Static4D ( 0.35355341f,-0.35355341f,-0.85355335f,-0.14644663f),
232
      new Static4D ( 0.35355341f,-0.35355341f, 0.85355335f,-0.14644663f),
233
      new Static4D ( 0.35355341f,-0.35355341f, 0.85355335f, 0.14644663f),
234
      new Static4D ( 0.35355338f,-0.35355320f,-0.85355350f, 0.14644657f),
235
      new Static4D ( 0.35355341f, 0.14644663f, 0.35355341f, 0.85355335f),
236
      new Static4D ( 0.35355341f, 0.14644663f, 0.35355341f,-0.85355335f),
237
      new Static4D ( 0.35355338f, 0.14644662f,-0.35355335f, 0.85355335f),
238
      new Static4D ( 0.35355341f, 0.14644663f,-0.35355341f,-0.85355335f),
239
      new Static4D ( 0.35355341f, 0.14644663f, 0.85355335f, 0.35355341f),
240
      new Static4D ( 0.35355335f, 0.14644657f, 0.85355335f,-0.35355340f),
241
      new Static4D ( 0.35355338f, 0.14644660f,-0.85355335f, 0.35355338f),
242
      new Static4D ( 0.35355324f, 0.14644653f,-0.85355350f,-0.35355338f),
243
      new Static4D ( 0.35355340f,-0.14644659f, 0.85355340f, 0.35355320f),
244
      new Static4D ( 0.35355341f,-0.14644663f, 0.85355335f,-0.35355341f),
245
      new Static4D ( 0.35355338f,-0.14644660f,-0.85355335f,-0.35355338f),
246
      new Static4D ( 0.35355324f,-0.14644656f,-0.85355350f, 0.35355344f),
247
      new Static4D ( 0.35355341f,-0.14644663f, 0.35355341f,-0.85355335f),
248
      new Static4D ( 0.35355341f,-0.14644663f, 0.35355341f, 0.85355335f),
249
      new Static4D ( 0.35355335f,-0.14644656f,-0.35355327f, 0.85355335f),
250
      new Static4D ( 0.35355341f,-0.14644663f,-0.35355341f,-0.85355335f),
251
      new Static4D ( 0.35355338f, 0.85355335f, 0.14644660f, 0.35355338f),
252
      new Static4D ( 0.35355320f, 0.85355335f, 0.14644654f,-0.35355338f),
253
      new Static4D ( 0.35355324f, 0.85355340f,-0.14644653f, 0.35355340f),
254
      new Static4D ( 0.35355335f, 0.85355335f,-0.14644665f,-0.35355347f),
255
      new Static4D ( 0.35355335f, 0.85355335f, 0.35355347f,-0.14644665f),
256
      new Static4D ( 0.35355320f, 0.85355335f, 0.35355338f, 0.14644654f),
257
      new Static4D ( 0.35355327f, 0.85355335f,-0.35355335f,-0.14644656f),
258
      new Static4D ( 0.35355340f, 0.85355335f,-0.35355338f, 0.14644662f),
259
      new Static4D ( 0.35355320f,-0.85355335f, 0.14644654f, 0.35355338f),
260
      new Static4D ( 0.35355338f,-0.85355335f, 0.14644662f,-0.35355335f),
261
      new Static4D ( 0.35355335f,-0.85355335f,-0.14644665f, 0.35355347f),
262
      new Static4D ( 0.35355338f,-0.85355335f,-0.14644660f,-0.35355338f),
263
      new Static4D ( 0.35355324f,-0.85355341f, 0.35355338f,-0.14644653f),
264
      new Static4D ( 0.35355335f,-0.85355335f, 0.35355338f, 0.14644659f),
265
      new Static4D ( 0.35355335f,-0.85355335f,-0.35355347f,-0.14644665f),
266
      new Static4D ( 0.35355320f,-0.85355335f,-0.35355338f, 0.14644654f),
267

    
268
// 48 quats (0 - 1/2 - 1/2 - SQ2/2)
269

    
270
      new Static4D ( 0.00000000f, 0.50000000f, 0.70710677f,-0.50000006f),
271
      new Static4D ( 0.00000000f, 0.50000000f, 0.70710677f, 0.50000000f),
272
      new Static4D ( 0.00000000f, 0.50000000f,-0.70710677f,-0.50000006f),
273
      new Static4D ( 0.00000000f, 0.50000000f,-0.70710677f, 0.50000000f),
274
      new Static4D ( 0.00000000f, 0.50000000f,-0.50000000f, 0.70710677f),
275
      new Static4D ( 0.00000000f, 0.50000000f,-0.50000000f,-0.70710670f),
276
      new Static4D ( 0.00000000f, 0.50000000f, 0.50000006f, 0.70710677f),
277
      new Static4D ( 0.00000000f, 0.50000000f, 0.50000006f,-0.70710677f),
278
      new Static4D ( 0.00000000f, 0.70710677f,-0.50000000f, 0.50000000f),
279
      new Static4D ( 0.00000000f, 0.70710677f, 0.50000000f,-0.50000000f),
280
      new Static4D ( 0.00000000f, 0.70710677f, 0.50000000f, 0.50000000f),
281
      new Static4D ( 0.00000000f, 0.70710677f,-0.50000000f,-0.50000000f),
282
      new Static4D ( 0.50000000f, 0.00000000f,-0.50000000f,-0.70710670f),
283
      new Static4D ( 0.50000000f, 0.00000000f,-0.50000000f, 0.70710670f),
284
      new Static4D ( 0.50000000f, 0.00000000f, 0.50000000f,-0.70710670f),
285
      new Static4D ( 0.50000000f, 0.00000000f, 0.50000000f, 0.70710677f),
286
      new Static4D ( 0.50000000f, 0.00000000f, 0.70710677f, 0.50000000f),
287
      new Static4D ( 0.50000000f, 0.00000000f,-0.70710677f, 0.50000000f),
288
      new Static4D ( 0.50000000f, 0.00000000f,-0.70710677f,-0.50000000f),
289
      new Static4D ( 0.50000000f, 0.00000000f, 0.70710677f,-0.50000000f),
290
      new Static4D ( 0.50000000f,-0.50000000f, 0.00000000f, 0.70710670f),
291
      new Static4D ( 0.50000000f, 0.50000000f, 0.00000000f, 0.70710670f),
292
      new Static4D ( 0.50000000f, 0.50000000f, 0.00000000f,-0.70710670f),
293
      new Static4D ( 0.50000000f,-0.50000000f, 0.00000000f,-0.70710670f),
294
      new Static4D ( 0.50000000f, 0.50000000f, 0.70710677f, 0.00000000f),
295
      new Static4D ( 0.50000000f,-0.50000000f,-0.70710677f, 0.00000000f),
296
      new Static4D ( 0.50000000f, 0.50000000f,-0.70710677f, 0.00000000f),
297
      new Static4D ( 0.50000000f,-0.50000000f, 0.70710677f, 0.00000000f),
298
      new Static4D ( 0.50000000f, 0.70710670f, 0.00000000f,-0.50000000f),
299
      new Static4D ( 0.50000000f, 0.70710677f, 0.00000000f, 0.50000000f),
300
      new Static4D ( 0.50000000f,-0.70710670f, 0.00000000f,-0.50000000f),
301
      new Static4D ( 0.50000000f,-0.70710677f, 0.00000000f, 0.50000000f),
302
      new Static4D ( 0.50000000f, 0.70710677f,-0.50000000f, 0.00000000f),
303
      new Static4D ( 0.50000000f, 0.70710677f, 0.50000000f, 0.00000000f),
304
      new Static4D ( 0.50000000f,-0.70710677f,-0.50000000f, 0.00000000f),
305
      new Static4D ( 0.50000000f,-0.70710677f, 0.50000000f, 0.00000000f),
306
      new Static4D ( 0.70710677f, 0.00000000f, 0.50000000f,-0.50000000f),
307
      new Static4D ( 0.70710670f, 0.00000000f,-0.50000000f,-0.50000000f),
308
      new Static4D ( 0.70710670f, 0.00000000f,-0.50000000f, 0.50000000f),
309
      new Static4D ( 0.70710670f, 0.00000000f, 0.50000000f, 0.50000000f),
310
      new Static4D ( 0.70710670f, 0.50000000f, 0.00000000f,-0.50000000f),
311
      new Static4D ( 0.70710670f, 0.50000000f, 0.00000000f, 0.50000000f),
312
      new Static4D ( 0.70710670f,-0.50000000f, 0.00000000f, 0.50000000f),
313
      new Static4D ( 0.70710670f,-0.50000000f, 0.00000000f,-0.50000000f),
314
      new Static4D ( 0.70710670f,-0.50000000f, 0.50000000f, 0.00000000f),
315
      new Static4D ( 0.70710670f, 0.50000000f,-0.50000000f, 0.00000000f),
316
      new Static4D ( 0.70710670f, 0.50000000f, 0.50000000f, 0.00000000f),
317
      new Static4D ( 0.70710670f,-0.50000000f,-0.50000000f, 0.00000000f),
318
      };
319
    }
320

    
321
///////////////////////////////////////////////////////////////////////////////////////////////////
322

    
323
  private void insertSection(int[] table, int startIndex, int size, int startAlg, int state)
324
    {
325
    for(int i=0; i<size; i++)
326
      {
327
      table[2*(i+startIndex)  ] = startAlg +i;
328
      table[2*(i+startIndex)+1] = state;
329
      }
330
    }
331

    
332
///////////////////////////////////////////////////////////////////////////////////////////////////
333

    
334
  private int[] createEdge(int stateX, int stateY, int stateZ)
335
    {
336
    int size = 13;
337
    int num = 0;
338
    if( stateX>=0 ) num += size;
339
    if( stateY>=0 ) num += size;
340
    if( stateZ>=0 ) num += size;
341

    
342
    int[] ret = new int[2*num];
343

    
344
    if( stateX>=0 )
345
      {
346
      insertSection(ret,0,size,0,stateX);
347
      if( stateY>=0 )
348
        {
349
        insertSection(ret,size,size,size,stateY);
350
        if( stateZ>=0 ) insertSection(ret,2*size,size,2*size,stateZ);
351
        }
352
      else
353
        {
354
        insertSection(ret,size,size,2*size,stateZ);
355
        }
356
      }
357
    else
358
      {
359
      if( stateY>=0 )
360
        {
361
        insertSection(ret,0,size,size,stateY);
362
        if( stateZ>=0 ) insertSection(ret,size,size,2*size,stateZ);
363
        }
364
      else
365
        {
366
        insertSection(ret,0,size,2*size,stateZ);
367
        }
368
      }
369

    
370
    return ret;
371
    }
372

    
373
///////////////////////////////////////////////////////////////////////////////////////////////////
374
// same as in a non-flat cuboids
375

    
376
  public int[][] getScrambleEdges()
377
    {
378
    if( mEdges==null )
379
      {
380
      mEdges = new int[][]
381
        {
382
        createEdge( 1, 2, 3), // 0 0
383
        createEdge(-1, 4, 5), // 1 x
384
        createEdge( 6,-1, 7), // 2 y
385
        createEdge( 8, 9,-1), // 3 z
386
        createEdge(10,-1, 7), // 4 xy
387
        createEdge(11, 9,-1), // 5 xz
388
        createEdge(-1,12, 5), // 6 yx
389
        createEdge( 8,13,-1), // 7 yz
390
        createEdge(-1, 4,14), // 8 zx
391
        createEdge( 6,-1,15), // 9 zy
392
        createEdge(-1,-1, 5), // 10 xyx
393
        createEdge(-1, 4,-1), // 11 xzx
394
        createEdge(-1,-1, 7), // 12 yxy
395
        createEdge( 6,-1,-1), // 13 yzy
396
        createEdge(-1, 9,-1), // 14 zxz
397
        createEdge( 8,-1,-1), // 15 zyz
398
        };
399
      }
400

    
401
    return mEdges;
402
    }
403

    
404
///////////////////////////////////////////////////////////////////////////////////////////////////
405

    
406
  public boolean[][] getLayerRotatable(int[] numLayers)
407
    {
408
    boolean[] tmp = new boolean[] {true,true,true};
409
    return new boolean[][] { tmp,tmp,tmp };
410
    }
411

    
412
///////////////////////////////////////////////////////////////////////////////////////////////////
413

    
414
  public int getTouchControlType()
415
    {
416
    return TC_HEXAHEDRON;
417
    }
418

    
419
///////////////////////////////////////////////////////////////////////////////////////////////////
420

    
421
  public int getTouchControlSplit()
422
    {
423
    return TYPE_NOT_SPLIT;
424
    }
425

    
426
///////////////////////////////////////////////////////////////////////////////////////////////////
427

    
428
  public int[][][] getEnabled()
429
    {
430
    return new int[][][] { {{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}} };
431
    }
432

    
433
///////////////////////////////////////////////////////////////////////////////////////////////////
434

    
435
  public float[] getDist3D(int[] numLayers)
436
    {
437
    return TouchControlHexahedron.D3D;
438
    }
439

    
440
///////////////////////////////////////////////////////////////////////////////////////////////////
441

    
442
  public Static3D[] getFaceAxis()
443
    {
444
    return TouchControlHexahedron.FACE_AXIS;
445
    }
446

    
447
///////////////////////////////////////////////////////////////////////////////////////////////////
448

    
449
  public float getStickerRadius()
450
    {
451
    return 0.09f;
452
    }
453

    
454
///////////////////////////////////////////////////////////////////////////////////////////////////
455

    
456
  public float getStickerStroke()
457
    {
458
    return isInIconMode() ? 0.20f : 0.09f;
459
    }
460

    
461
///////////////////////////////////////////////////////////////////////////////////////////////////
462

    
463
  public float[][] getStickerAngles()
464
    {
465
    return null;
466
    }
467

    
468
///////////////////////////////////////////////////////////////////////////////////////////////////
469
// PUBLIC API
470

    
471
  public Static3D[] getRotationAxis()
472
    {
473
    return ROT_AXIS;
474
    }
475

    
476
///////////////////////////////////////////////////////////////////////////////////////////////////
477

    
478
  public int[][] getBasicAngles()
479
    {
480
    if( mBasicAngle ==null )
481
      {
482
      int[] tmp = new int[] {4,8,4};
483
      mBasicAngle = new int[][] { tmp,tmp,tmp };
484
      }
485

    
486
    return mBasicAngle;
487
    }
488
}
(23-23/41)