Revision 4a5157a1
Added by Leszek Koltunski over 2 years ago
src/main/java/org/distorted/objectlib/main/TwistyObjectScrambler.java | ||
---|---|---|
69 | 69 |
} |
70 | 70 |
} |
71 | 71 |
|
72 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
73 |
// QUATS[i]*QUATS[j] = QUATS[QUAT_MULT[i][j]] |
|
74 |
|
|
75 |
void initializeQuatMult() |
|
76 |
{ |
|
77 |
mQuatMult = new int[][] |
|
78 |
{ |
|
79 |
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,}, |
|
80 |
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12,}, |
|
81 |
{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13,}, |
|
82 |
{ 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14,}, |
|
83 |
{ 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15,}, |
|
84 |
{ 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16,}, |
|
85 |
{ 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17,}, |
|
86 |
{ 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18,}, |
|
87 |
{ 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19,}, |
|
88 |
{ 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20,}, |
|
89 |
{ 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,}, |
|
90 |
{ 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,}, |
|
91 |
{ 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,}, |
|
92 |
{ 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,}, |
|
93 |
{ 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3,}, |
|
94 |
{ 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4,}, |
|
95 |
{ 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5,}, |
|
96 |
{ 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6,}, |
|
97 |
{ 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7,}, |
|
98 |
{ 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8,}, |
|
99 |
{ 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9,}, |
|
100 |
{ 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10,}, |
|
101 |
{ 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11,}, |
|
102 |
{ 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,} |
|
103 |
}; |
|
104 |
} |
|
105 |
|
|
106 | 72 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
107 | 73 |
|
108 | 74 |
private void initializeScrambling() |
... | ... | |
155 | 121 |
} |
156 | 122 |
|
157 | 123 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
124 |
// TYPE 1 |
|
125 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
126 |
// QUATS[i]*QUATS[j] = QUATS[QUAT_MULT[i][j]] |
|
127 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
128 |
|
|
129 |
void initializeQuatMult() |
|
130 |
{ |
|
131 |
mQuatMult = new int[][] |
|
132 |
{ |
|
133 |
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,}, |
|
134 |
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12,}, |
|
135 |
{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13,}, |
|
136 |
{ 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 15, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14,}, |
|
137 |
{ 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 16, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15,}, |
|
138 |
{ 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 17, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16,}, |
|
139 |
{ 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 18, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17,}, |
|
140 |
{ 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 19, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18,}, |
|
141 |
{ 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 20, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19,}, |
|
142 |
{ 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 21, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20,}, |
|
143 |
{ 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 22, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,}, |
|
144 |
{ 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,}, |
|
145 |
{ 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,}, |
|
146 |
{ 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2,}, |
|
147 |
{ 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 15, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3,}, |
|
148 |
{ 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 16, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4,}, |
|
149 |
{ 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 17, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5,}, |
|
150 |
{ 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 18, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6,}, |
|
151 |
{ 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 19, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7,}, |
|
152 |
{ 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 20, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8,}, |
|
153 |
{ 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 21, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9,}, |
|
154 |
{ 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 22, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10,}, |
|
155 |
{ 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 23, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11,}, |
|
156 |
{ 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,} |
|
157 |
}; |
|
158 |
} |
|
159 |
|
|
160 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
161 |
// TYPE 1 |
|
158 | 162 |
|
159 | 163 |
private boolean cornerIsUp(int index) |
160 | 164 |
{ |
... | ... | |
162 | 166 |
} |
163 | 167 |
|
164 | 168 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
169 |
// TYPE 1 |
|
165 | 170 |
|
166 | 171 |
private boolean cornerIsLeft(int index) |
167 | 172 |
{ |
... | ... | |
183 | 188 |
} |
184 | 189 |
|
185 | 190 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
191 |
// TYPE 1 |
|
186 | 192 |
|
187 | 193 |
private boolean quatIsBad(int quatIndex, int corner) |
188 | 194 |
{ |
... | ... | |
201 | 207 |
} |
202 | 208 |
|
203 | 209 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
210 |
// TYPE 1 |
|
204 | 211 |
|
205 | 212 |
private boolean isPermittedDo(int angle) |
206 | 213 |
{ |
... | ... | |
220 | 227 |
} |
221 | 228 |
|
222 | 229 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
230 |
// TYPE 1 |
|
223 | 231 |
|
224 | 232 |
private boolean isPermittedUp(int angle) |
225 | 233 |
{ |
... | ... | |
239 | 247 |
} |
240 | 248 |
|
241 | 249 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
250 |
// TYPE 1 |
|
242 | 251 |
|
243 | 252 |
private void computePermittedAngles() |
244 | 253 |
{ |
... | ... | |
258 | 267 |
} |
259 | 268 |
|
260 | 269 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
270 |
// TYPE 1 |
|
261 | 271 |
|
262 | 272 |
private int getNextAngle(Random rnd, int layer) |
263 | 273 |
{ |
... | ... | |
268 | 278 |
} |
269 | 279 |
|
270 | 280 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
281 |
// TYPE 1 |
|
271 | 282 |
|
272 | 283 |
private int getNextAngleNotZero(Random rnd, int layer) |
273 | 284 |
{ |
... | ... | |
278 | 289 |
} |
279 | 290 |
|
280 | 291 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
292 |
// TYPE 1 |
|
281 | 293 |
|
282 | 294 |
private int makeQuat(int axis,int index) |
283 | 295 |
{ |
... | ... | |
287 | 299 |
} |
288 | 300 |
|
289 | 301 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
302 |
// TYPE 1 |
|
290 | 303 |
|
291 | 304 |
private boolean cornerBelongs(int index, int axis, int layer) |
292 | 305 |
{ |
... | ... | |
303 | 316 |
} |
304 | 317 |
|
305 | 318 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
319 |
// TYPE 1 |
|
306 | 320 |
|
307 | 321 |
private void updateCornerQuats(int[] rotInfo) |
308 | 322 |
{ |
... | ... | |
325 | 339 |
} |
326 | 340 |
|
327 | 341 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
342 |
// TYPE 1 |
|
328 | 343 |
|
329 | 344 |
private void randomizeNewScramble1(int[][] scramble, Random rnd, int curr, int total) |
330 | 345 |
{ |
Also available in: Unified diff
Rotations of a Cuboid - finished.