Revision a64e07d0
Added by Leszek Koltunski over 3 years ago
src/main/java/org/distorted/objects/TwistyRedi.java | ||
---|---|---|
31 | 31 |
import org.distorted.library.type.Static3D; |
32 | 32 |
import org.distorted.library.type.Static4D; |
33 | 33 |
import org.distorted.main.R; |
34 |
import org.distorted.main.RubikSurfaceView; |
|
35 | 34 |
|
36 | 35 |
import java.util.Random; |
37 | 36 |
|
... | ... | |
174 | 173 |
|
175 | 174 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
176 | 175 |
|
177 |
int getNumStickerTypes() |
|
176 |
int getNumStickerTypes(int numLayers)
|
|
178 | 177 |
{ |
179 | 178 |
return 2; |
180 | 179 |
} |
... | ... | |
239 | 238 |
|
240 | 239 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
241 | 240 |
|
242 |
MeshBase createCubitMesh(int cubit) |
|
241 |
MeshBase createCubitMesh(int cubit, int numLayers)
|
|
243 | 242 |
{ |
244 | 243 |
MeshBase mesh; |
245 | 244 |
|
... | ... | |
303 | 302 |
|
304 | 303 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
305 | 304 |
|
306 |
float[] getRowChances() |
|
305 |
float[] getRowChances(int numLayers)
|
|
307 | 306 |
{ |
308 | 307 |
float[] chances = new float[3]; |
309 | 308 |
|
... | ... | |
353 | 352 |
return (oldRotAxis==START_AXIS) ? (rnd.nextFloat()<=0.5f ? 0:2) : (oldRotAxis+newRotAxis==3 ? 2-oldRow : oldRow); |
354 | 353 |
} |
355 | 354 |
|
356 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
357 |
// remember about the double cover or unit quaternions! |
|
358 |
|
|
359 |
private int mulQuat(int q1, int q2) |
|
360 |
{ |
|
361 |
Static4D result = RubikSurfaceView.quatMultiply(QUATS[q1],QUATS[q2]); |
|
362 |
|
|
363 |
float rX = result.get0(); |
|
364 |
float rY = result.get1(); |
|
365 |
float rZ = result.get2(); |
|
366 |
float rW = result.get3(); |
|
367 |
|
|
368 |
final float MAX_ERROR = 0.1f; |
|
369 |
float dX,dY,dZ,dW; |
|
370 |
|
|
371 |
for(int i=0; i<QUATS.length; i++) |
|
372 |
{ |
|
373 |
dX = QUATS[i].get0() - rX; |
|
374 |
dY = QUATS[i].get1() - rY; |
|
375 |
dZ = QUATS[i].get2() - rZ; |
|
376 |
dW = QUATS[i].get3() - rW; |
|
377 |
|
|
378 |
if( dX<MAX_ERROR && dX>-MAX_ERROR && |
|
379 |
dY<MAX_ERROR && dY>-MAX_ERROR && |
|
380 |
dZ<MAX_ERROR && dZ>-MAX_ERROR && |
|
381 |
dW<MAX_ERROR && dW>-MAX_ERROR ) return i; |
|
382 |
|
|
383 |
dX = QUATS[i].get0() + rX; |
|
384 |
dY = QUATS[i].get1() + rY; |
|
385 |
dZ = QUATS[i].get2() + rZ; |
|
386 |
dW = QUATS[i].get3() + rW; |
|
387 |
|
|
388 |
if( dX<MAX_ERROR && dX>-MAX_ERROR && |
|
389 |
dY<MAX_ERROR && dY>-MAX_ERROR && |
|
390 |
dZ<MAX_ERROR && dZ>-MAX_ERROR && |
|
391 |
dW<MAX_ERROR && dW>-MAX_ERROR ) return i; |
|
392 |
} |
|
393 |
|
|
394 |
return -1; |
|
395 |
} |
|
396 |
|
|
397 | 355 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
398 | 356 |
// The Redi is solved if and only if: |
399 | 357 |
// |
Also available in: Unified diff
Beginnings of Megaminx & Gigaminx