Project

General

Profile

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

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

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is free software: you can redistribute it and/or modify                            //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Magic Cube is distributed in the hope that it will be useful,                                 //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19

    
20
package org.distorted.objectlib.objects;
21

    
22
import org.distorted.library.type.Static3D;
23
import org.distorted.library.type.Static4D;
24
import org.distorted.objectlib.main.InitData;
25
import org.distorted.objectlib.main.ShapeHexahedron;
26
import org.distorted.objectlib.scrambling.ScrambleState;
27
import org.distorted.objectlib.touchcontrol.TouchControlHexahedron;
28

    
29
import java.io.InputStream;
30

    
31
import static org.distorted.objectlib.touchcontrol.TouchControl.TC_HEXAHEDRON;
32
import static org.distorted.objectlib.touchcontrol.TouchControl.TYPE_NOT_SPLIT;
33

    
34
///////////////////////////////////////////////////////////////////////////////////////////////////
35

    
36
abstract class TwistyMixup extends ShapeHexahedron
37
{
38
  static final Static3D[] ROT_AXIS = new Static3D[]
39
         {
40
           new Static3D(1,0,0),
41
           new Static3D(0,1,0),
42
           new Static3D(0,0,1)
43
         };
44

    
45
  ScrambleState[] mStates;
46
  int[][] mBasicAngle;
47
  float[][] mCuts;
48
  float[][] mPosition;
49
  int[] mQuatIndex;
50

    
51
///////////////////////////////////////////////////////////////////////////////////////////////////
52

    
53
  public TwistyMixup(InitData data, int meshState, int iconMode, Static4D quat, Static3D move, float scale, InputStream stream)
54
    {
55
    super(data, meshState, iconMode, data.getNumLayers()[0], quat, move, scale, stream);
56
    }
57

    
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59

    
60
  @Override
61
  public int getInternalColor()
62
    {
63
    return 0xff333333;
64
    }
65

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

    
70
  @Override
71
  public Static4D[] getQuats()
72
    {
73
    return new Static4D[]
74
      {
75
      new Static4D ( 0.00000000f, 0.00000000f, 0.00000000f, 1.00000000f), // 0
76
      new Static4D ( 0.00000000f, 0.00000000f, 1.00000000f, 0.00000000f), // 1
77
      new Static4D ( 0.00000000f, 1.00000000f, 0.00000000f, 0.00000000f), // 2
78
      new Static4D ( 1.00000000f, 0.00000000f, 0.00000000f, 0.00000000f), // 3
79

    
80
      new Static4D ( 0.00000000f, 0.00000000f, 0.70710677f, 0.70710677f), // 4
81
      new Static4D ( 0.00000000f, 0.00000000f, 0.70710677f,-0.70710677f), // 5
82
      new Static4D ( 0.00000000f, 0.70710677f, 0.00000000f, 0.70710677f), // 6
83
      new Static4D ( 0.00000000f, 0.70710677f, 0.00000000f,-0.70710677f), // 7
84
      new Static4D ( 0.00000000f, 0.70710677f,-0.70710677f, 0.00000000f), // 8
85
      new Static4D ( 0.00000000f, 0.70710677f, 0.70710677f, 0.00000000f),
86
      new Static4D ( 0.70710677f, 0.00000000f, 0.00000000f, 0.70710677f), // 10
87
      new Static4D ( 0.70710677f, 0.00000000f, 0.00000000f,-0.70710677f), // 11
88
      new Static4D ( 0.70710677f, 0.00000000f, 0.70710677f, 0.00000000f), // 12
89
      new Static4D ( 0.70710677f, 0.00000000f,-0.70710677f, 0.00000000f), // 13
90
      new Static4D ( 0.70710677f,-0.70710677f, 0.00000000f, 0.00000000f),
91
      new Static4D ( 0.70710677f, 0.70710677f, 0.00000000f, 0.00000000f),
92

    
93
      new Static4D ( 0.50000000f, 0.50000000f, 0.50000000f, 0.50000000f),
94
      new Static4D ( 0.50000000f, 0.50000000f, 0.50000000f,-0.50000000f),
95
      new Static4D ( 0.50000000f, 0.50000000f,-0.50000000f, 0.50000000f), // 18
96
      new Static4D ( 0.50000000f, 0.50000000f,-0.50000000f,-0.50000000f),
97
      new Static4D ( 0.50000000f,-0.50000000f, 0.50000000f, 0.50000000f), // 20
98
      new Static4D ( 0.50000000f,-0.50000000f, 0.50000000f,-0.50000000f),
99
      new Static4D ( 0.50000000f,-0.50000000f,-0.50000000f, 0.50000000f),
100
      new Static4D ( 0.50000000f,-0.50000000f,-0.50000000f,-0.50000000f),
101

    
102
// 24 quats ( 0,0, 0.3826, 0.9238 )
103

    
104
      new Static4D ( 0.00000000f, 0.00000000f, 0.38268343f, 0.92387950f),
105
      new Static4D ( 0.00000000f, 0.00000000f, 0.38268343f,-0.92387950f),
106
      new Static4D ( 0.00000000f, 0.00000000f, 0.92387950f, 0.38268343f),
107
      new Static4D ( 0.00000000f, 0.00000000f, 0.92387950f,-0.38268343f),
108
      new Static4D ( 0.00000000f, 0.38268346f, 0.00000000f, 0.92387950f),
109
      new Static4D ( 0.00000000f, 0.38268328f, 0.00000000f,-0.92387962f),
110
      new Static4D ( 0.00000000f,-0.38268328f,-0.92387962f, 0.00000000f),
111
      new Static4D ( 0.00000000f,-0.38268346f, 0.92387950f, 0.00000000f),
112
      new Static4D ( 0.00000000f, 0.92387950f, 0.00000000f, 0.38268343f),
113
      new Static4D ( 0.00000000f, 0.92387950f, 0.00000000f,-0.38268352f),
114
      new Static4D ( 0.00000000f,-0.92387950f,-0.38268352f, 0.00000000f),
115
      new Static4D ( 0.00000000f,-0.92387950f, 0.38268343f, 0.00000000f),
116
      new Static4D ( 0.38268346f, 0.00000000f, 0.00000000f, 0.92387950f),
117
      new Static4D ( 0.38268328f, 0.00000000f, 0.00000000f,-0.92387962f),
118
      new Static4D ( 0.38268328f, 0.00000000f,-0.92387962f, 0.00000000f),
119
      new Static4D ( 0.38268346f, 0.00000000f, 0.92387950f, 0.00000000f),
120
      new Static4D ( 0.38268325f,-0.92387950f, 0.00000000f, 0.00000000f),
121
      new Static4D ( 0.38268325f, 0.92387950f, 0.00000000f, 0.00000000f),
122
      new Static4D ( 0.92387950f, 0.00000000f, 0.00000000f,-0.38268352f),
123
      new Static4D ( 0.92387950f, 0.00000000f, 0.00000000f, 0.38268343f),
124
      new Static4D ( 0.92387950f, 0.00000000f, 0.38268343f, 0.00000000f),
125
      new Static4D ( 0.92387950f, 0.00000000f,-0.38268352f, 0.00000000f),
126
      new Static4D ( 0.92387950f, 0.38268343f, 0.00000000f, 0.00000000f),
127
      new Static4D ( 0.92387950f,-0.38268343f, 0.00000000f, 0.00000000f),
128

    
129
// 48 quats ( 0.2705, 0.2705, 0.6532, 0.6532 )
130

    
131
      new Static4D ( 0.27059805f, 0.27059805f, 0.65328145f, 0.65328145f),
132
      new Static4D ( 0.27059793f, 0.27059793f,-0.65328151f,-0.65328151f),
133
      new Static4D ( 0.27059805f, 0.27059805f,-0.65328145f, 0.65328145f),
134
      new Static4D ( 0.27059793f, 0.27059793f, 0.65328151f,-0.65328151f),
135
      new Static4D ( 0.27059805f,-0.27059805f, 0.65328145f,-0.65328145f),
136
      new Static4D ( 0.27059793f,-0.27059793f,-0.65328151f, 0.65328151f),
137
      new Static4D ( 0.27059805f,-0.27059805f, 0.65328145f, 0.65328145f),
138
      new Static4D ( 0.27059793f,-0.27059793f,-0.65328151f,-0.65328151f),
139
      new Static4D ( 0.27059808f, 0.65328145f, 0.27059802f,-0.65328145f),
140
      new Static4D ( 0.27059799f, 0.65328145f, 0.27059799f, 0.65328145f),
141
      new Static4D ( 0.27059802f, 0.65328145f,-0.27059802f,-0.65328145f),
142
      new Static4D ( 0.27059793f, 0.65328151f,-0.27059793f, 0.65328151f),
143
      new Static4D ( 0.27059799f, 0.65328145f, 0.65328145f, 0.27059799f),
144
      new Static4D ( 0.27059799f, 0.65328145f, 0.65328145f,-0.27059799f),
145
      new Static4D ( 0.27059808f, 0.65328145f,-0.65328145f, 0.27059808f),
146
      new Static4D ( 0.27059796f, 0.65328145f,-0.65328145f,-0.27059796f),
147
      new Static4D ( 0.27059808f,-0.65328145f, 0.27059814f, 0.65328145f),
148
      new Static4D ( 0.27059799f,-0.65328145f, 0.27059799f,-0.65328145f),
149
      new Static4D ( 0.27059805f,-0.65328145f,-0.27059805f,-0.65328145f),
150
      new Static4D ( 0.27059799f,-0.65328145f,-0.27059799f, 0.65328145f),
151
      new Static4D ( 0.27059814f,-0.65328145f, 0.65328145f,-0.27059814f),
152
      new Static4D ( 0.27059799f,-0.65328145f, 0.65328145f, 0.27059799f),
153
      new Static4D ( 0.27059799f,-0.65328145f,-0.65328145f,-0.27059799f),
154
      new Static4D ( 0.27059799f,-0.65328145f,-0.65328145f, 0.27059799f),
155
      new Static4D ( 0.65328145f, 0.27059814f, 0.27059814f, 0.65328145f),
156
      new Static4D ( 0.65328145f, 0.27059799f, 0.27059799f,-0.65328145f),
157
      new Static4D ( 0.65328145f, 0.27059799f,-0.27059799f,-0.65328145f),
158
      new Static4D ( 0.65328145f, 0.27059799f,-0.27059799f, 0.65328145f),
159
      new Static4D ( 0.65328145f, 0.27059802f, 0.65328145f,-0.27059808f),
160
      new Static4D ( 0.65328145f, 0.27059802f, 0.65328145f, 0.27059802f),
161
      new Static4D ( 0.65328145f, 0.27059811f,-0.65328145f, 0.27059811f),
162
      new Static4D ( 0.65328145f, 0.27059802f,-0.65328145f,-0.27059802f),
163
      new Static4D ( 0.65328145f,-0.27059799f, 0.27059799f,-0.65328145f),
164
      new Static4D ( 0.65328145f,-0.27059799f, 0.27059799f, 0.65328145f),
165
      new Static4D ( 0.65328145f,-0.27059799f,-0.27059799f,-0.65328145f),
166
      new Static4D ( 0.65328145f,-0.27059796f,-0.27059796f, 0.65328145f),
167
      new Static4D ( 0.65328151f,-0.27059796f, 0.65328151f, 0.27059790f),
168
      new Static4D ( 0.65328145f,-0.27059799f, 0.65328145f,-0.27059799f),
169
      new Static4D ( 0.65328145f,-0.27059799f,-0.65328145f, 0.27059799f),
170
      new Static4D ( 0.65328145f,-0.27059805f,-0.65328145f,-0.27059805f),
171
      new Static4D ( 0.65328145f, 0.65328145f, 0.27059805f, 0.27059805f),
172
      new Static4D ( 0.65328145f, 0.65328145f,-0.27059811f,-0.27059811f),
173
      new Static4D ( 0.65328145f, 0.65328145f, 0.27059811f,-0.27059811f),
174
      new Static4D ( 0.65328145f, 0.65328145f,-0.27059805f, 0.27059805f),
175
      new Static4D ( 0.65328145f,-0.65328145f, 0.27059805f, 0.27059805f),
176
      new Static4D ( 0.65328145f,-0.65328145f,-0.27059811f,-0.27059811f),
177
      new Static4D ( 0.65328145f,-0.65328145f, 0.27059805f,-0.27059805f),
178
      new Static4D ( 0.65328145f,-0.65328145f,-0.27059811f, 0.27059811f),
179

    
180
// 96 quats ( 0.8535, 0.3535, 0.3535, 0.1464 )
181

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

    
279
// 48 quats (0 - 1/2 - 1/2 - SQ2/2)
280

    
281
      new Static4D ( 0.00000000f, 0.50000000f, 0.70710677f,-0.50000006f),
282
      new Static4D ( 0.00000000f, 0.50000000f, 0.70710677f, 0.50000000f),
283
      new Static4D ( 0.00000000f, 0.50000000f,-0.70710677f,-0.50000006f),
284
      new Static4D ( 0.00000000f, 0.50000000f,-0.70710677f, 0.50000000f),
285
      new Static4D ( 0.00000000f, 0.50000000f,-0.50000000f, 0.70710677f),
286
      new Static4D ( 0.00000000f, 0.50000000f,-0.50000000f,-0.70710670f),
287
      new Static4D ( 0.00000000f, 0.50000000f, 0.50000006f, 0.70710677f),
288
      new Static4D ( 0.00000000f, 0.50000000f, 0.50000006f,-0.70710677f),
289
      new Static4D ( 0.00000000f, 0.70710677f,-0.50000000f, 0.50000000f),
290
      new Static4D ( 0.00000000f, 0.70710677f, 0.50000000f,-0.50000000f),
291
      new Static4D ( 0.00000000f, 0.70710677f, 0.50000000f, 0.50000000f),
292
      new Static4D ( 0.00000000f, 0.70710677f,-0.50000000f,-0.50000000f),
293
      new Static4D ( 0.50000000f, 0.00000000f,-0.50000000f,-0.70710670f),
294
      new Static4D ( 0.50000000f, 0.00000000f,-0.50000000f, 0.70710670f),
295
      new Static4D ( 0.50000000f, 0.00000000f, 0.50000000f,-0.70710670f),
296
      new Static4D ( 0.50000000f, 0.00000000f, 0.50000000f, 0.70710677f),
297
      new Static4D ( 0.50000000f, 0.00000000f, 0.70710677f, 0.50000000f),
298
      new Static4D ( 0.50000000f, 0.00000000f,-0.70710677f, 0.50000000f),
299
      new Static4D ( 0.50000000f, 0.00000000f,-0.70710677f,-0.50000000f),
300
      new Static4D ( 0.50000000f, 0.00000000f, 0.70710677f,-0.50000000f),
301
      new Static4D ( 0.50000000f,-0.50000000f, 0.00000000f, 0.70710670f),
302
      new Static4D ( 0.50000000f, 0.50000000f, 0.00000000f, 0.70710670f),
303
      new Static4D ( 0.50000000f, 0.50000000f, 0.00000000f,-0.70710670f),
304
      new Static4D ( 0.50000000f,-0.50000000f, 0.00000000f,-0.70710670f),
305
      new Static4D ( 0.50000000f, 0.50000000f, 0.70710677f, 0.00000000f),
306
      new Static4D ( 0.50000000f,-0.50000000f,-0.70710677f, 0.00000000f),
307
      new Static4D ( 0.50000000f, 0.50000000f,-0.70710677f, 0.00000000f),
308
      new Static4D ( 0.50000000f,-0.50000000f, 0.70710677f, 0.00000000f),
309
      new Static4D ( 0.50000000f, 0.70710670f, 0.00000000f,-0.50000000f),
310
      new Static4D ( 0.50000000f, 0.70710677f, 0.00000000f, 0.50000000f),
311
      new Static4D ( 0.50000000f,-0.70710670f, 0.00000000f,-0.50000000f),
312
      new Static4D ( 0.50000000f,-0.70710677f, 0.00000000f, 0.50000000f),
313
      new Static4D ( 0.50000000f, 0.70710677f,-0.50000000f, 0.00000000f),
314
      new Static4D ( 0.50000000f, 0.70710677f, 0.50000000f, 0.00000000f),
315
      new Static4D ( 0.50000000f,-0.70710677f,-0.50000000f, 0.00000000f),
316
      new Static4D ( 0.50000000f,-0.70710677f, 0.50000000f, 0.00000000f),
317
      new Static4D ( 0.70710677f, 0.00000000f, 0.50000000f,-0.50000000f),
318
      new Static4D ( 0.70710670f, 0.00000000f,-0.50000000f,-0.50000000f),
319
      new Static4D ( 0.70710670f, 0.00000000f,-0.50000000f, 0.50000000f),
320
      new Static4D ( 0.70710670f, 0.00000000f, 0.50000000f, 0.50000000f),
321
      new Static4D ( 0.70710670f, 0.50000000f, 0.00000000f,-0.50000000f),
322
      new Static4D ( 0.70710670f, 0.50000000f, 0.00000000f, 0.50000000f),
323
      new Static4D ( 0.70710670f,-0.50000000f, 0.00000000f, 0.50000000f),
324
      new Static4D ( 0.70710670f,-0.50000000f, 0.00000000f,-0.50000000f),
325
      new Static4D ( 0.70710670f,-0.50000000f, 0.50000000f, 0.00000000f),
326
      new Static4D ( 0.70710670f, 0.50000000f,-0.50000000f, 0.00000000f),
327
      new Static4D ( 0.70710670f, 0.50000000f, 0.50000000f, 0.00000000f),
328
      new Static4D ( 0.70710670f,-0.50000000f,-0.50000000f, 0.00000000f),
329
      };
330
    }
331

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

    
334
  public ScrambleState[] getScrambleStates()
335
    {
336
    if( mStates==null )
337
      {
338
      int[][] m = new int[16][];
339

    
340
      for(int i=0; i<16; i++) m[i] = new int[] { 0,-1,i,0, 1,i,0, 2,i,
341
                                                 1,-3,i,1,-2,i,1,-1,i,1,1,i,1,2,i,1,3,i,1,4,i,
342
                                                 2,-1,i,2, 1,i,2, 2,i };
343

    
344
      mStates = new ScrambleState[]
345
          {
346
          new ScrambleState( new int[][] { m[ 1], m[ 2], m[ 3] } ),  //  0 0
347
          new ScrambleState( new int[][] {  null, m[ 4], m[ 5] } ),  //  1 x
348
          new ScrambleState( new int[][] { m[ 6],  null, m[ 7] } ),  //  2 y
349
          new ScrambleState( new int[][] { m[ 8], m[ 9],  null } ),  //  3 z
350
          new ScrambleState( new int[][] { m[10],  null, m[ 7] } ),  //  4 xy
351
          new ScrambleState( new int[][] { m[11], m[ 9],  null } ),  //  5 xz
352
          new ScrambleState( new int[][] {  null, m[12], m[ 5] } ),  //  6 yx
353
          new ScrambleState( new int[][] { m[ 8], m[13],  null } ),  //  7 yz
354
          new ScrambleState( new int[][] {  null, m[ 4], m[14] } ),  //  8 zx
355
          new ScrambleState( new int[][] { m[ 6],  null, m[15] } ),  //  9 zy
356
          new ScrambleState( new int[][] {  null,  null, m[ 5] } ),  // 10 xyx
357
          new ScrambleState( new int[][] {  null, m[ 4],  null } ),  // 11 xzx
358
          new ScrambleState( new int[][] {  null,  null, m[ 7] } ),  // 12 yxy
359
          new ScrambleState( new int[][] { m[ 6],  null,  null } ),  // 13 yzy
360
          new ScrambleState( new int[][] {  null, m[ 9],  null } ),  // 14 zxz
361
          new ScrambleState( new int[][] { m[ 8],  null,  null } ),  // 15 zyz
362
          };
363
      }
364

    
365
    return mStates;
366
    }
367

    
368
///////////////////////////////////////////////////////////////////////////////////////////////////
369

    
370
  public boolean[][] getLayerRotatable(int[] numLayers)
371
    {
372
    boolean[] tmp = new boolean[] {true,true,true};
373
    return new boolean[][] { tmp,tmp,tmp };
374
    }
375

    
376
///////////////////////////////////////////////////////////////////////////////////////////////////
377

    
378
  public int getTouchControlType()
379
    {
380
    return TC_HEXAHEDRON;
381
    }
382

    
383
///////////////////////////////////////////////////////////////////////////////////////////////////
384

    
385
  public int getTouchControlSplit()
386
    {
387
    return TYPE_NOT_SPLIT;
388
    }
389

    
390
///////////////////////////////////////////////////////////////////////////////////////////////////
391

    
392
  public int[][][] getEnabled()
393
    {
394
    return new int[][][] { {{1,2}},{{1,2}},{{0,2}},{{0,2}},{{0,1}},{{0,1}} };
395
    }
396

    
397
///////////////////////////////////////////////////////////////////////////////////////////////////
398

    
399
  public float[] getDist3D(int[] numLayers)
400
    {
401
    return TouchControlHexahedron.D3D;
402
    }
403

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

    
406
  public Static3D[] getFaceAxis()
407
    {
408
    return TouchControlHexahedron.FACE_AXIS;
409
    }
410

    
411
///////////////////////////////////////////////////////////////////////////////////////////////////
412

    
413
  public float getStickerRadius()
414
    {
415
    return 0.09f;
416
    }
417

    
418
///////////////////////////////////////////////////////////////////////////////////////////////////
419

    
420
  public float getStickerStroke()
421
    {
422
    return isInIconMode() ? 0.20f : 0.09f;
423
    }
424

    
425
///////////////////////////////////////////////////////////////////////////////////////////////////
426

    
427
  public float[][] getStickerAngles()
428
    {
429
    return null;
430
    }
431

    
432
///////////////////////////////////////////////////////////////////////////////////////////////////
433
// PUBLIC API
434

    
435
  public Static3D[] getRotationAxis()
436
    {
437
    return ROT_AXIS;
438
    }
439

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

    
442
  public int[][] getBasicAngles()
443
    {
444
    if( mBasicAngle ==null )
445
      {
446
      int[] tmp = new int[] {4,8,4};
447
      mBasicAngle = new int[][] { tmp,tmp,tmp };
448
      }
449

    
450
    return mBasicAngle;
451
    }
452
}
(24-24/40)