|
CubeTwister 2.0alpha141 2011-10-13 | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectch.randelshofer.rubik.AbstractCube
ch.randelshofer.rubik.ProfessorCube
public class ProfessorCube
Represents the state of a 5-times sliced cube (Professor Cube) by the location and orientation of its parts.
A Professor Cube has 8 corner parts, 36 edge parts, 54 side parts and one center part. The parts divide each face of the cube into 5 x 5 layers.
Corner parts
The following diagram shows the initial orientations and locations of the corner parts:
+---+---+---+---+---+
|4.0| |2.0|
+---+ +---+
| |
+ +
| u |
+ +
| |
+---+ +---+
|6.0| |0.0|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|4.1| |6.2|6.1| |0.2|0.1| |2.2|2.1| |4.2|
+---+ +---+---+ +---+---+ +---+---+ +---+
| | | | |
+ + + + +
| l | f | r | b |
+ + + + +
| | | | |
+---+ +---+---+ +---+---+ +---+---+ +---+
|5.2| |7.1|7.2| |1.1|1.2| |3.1|3.2| |5.1|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|7.0| |1.0|
+---+ +---+
| |
+ +
| d |
+ +
| |
+---+ +---+
|5.0| |3.0|
+---+---+---+---+---+
Edge parts
The following diagram shows the initial orientations and locations of the edge parts. The first 12 edges are located at the center of the x-, y-, and z-axis. The second 12 edges are located near the origins of the x-, y- and z-axis. The last 12 edges are located far from the origin of the x-, y- and z-axis.
X--->
+---+---+---+---+---+
| |15 |3.1| 27| |
+---+---+---+---+---+
|18 | |12 |
Z +---+ +---+ Z
| |6.0| u |0.0| |
V +---+ +---+ V
|30 | |24 |
+---+---+---+---+---+
Z---> | |21 |9.1|33 | | <---Z <---X
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| |18 |6.1|30 | | |21 |9.0|33 | | |24 |0.1|12 | | |27 |3.0|15 | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|31 | |34 |34 | |25 |25 | |28 |28 | |31 |
^ +---+ +---+---+ +---+---+ +---+---+ +---+ ^
| |7.0| l 10.0|10.1 f |1.1|1.0| r |4.0|4.1| b |7.1| |
Y +---+ +---+---+ +---+---+ +---+---+ +---+ Y
|19 | |22 |22 | |13 |13 | |16 |16 | |19 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| |20 |8.1|32 | | |23 11.0|35 | | |26 |2.1|14 | | |29 |5.0| 17| |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| |23 11.1|35 | | <---Z <---X
+---+---+---+---+---+
|32 | |26 |
+---+ +---+ ^
|8.0| d |2.0| |
+---+ +---+ Z
|20 | |14 |
+---+---+---+---+---+
| |17 |5.1|29 | |
+---+---+---+---+---+
X-->
Side parts
The following diagram shows the initial orientation and location of the side parts:
+---+---+---+---+---+
| .1 |
+ +---+---+---+ +
| | 7 |37 |13 | |
+ +---+---+---+ +
| .0|31 | 1 |43 |.2 |
+ +---+---+---+ +
| |25 |49 |19 | |
+ +---+---+---+ +
| .3 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| .0 | .2 | .3 | .1 |
+ +---+---+---+ + +---+---+---+ + +---+---+---+ + +---+---+---+ +
| |27 |33 | 9 | | |14 |44 |20 | | |18 |48 |24 | | |11 |41 |17 | |
+ +---+---+---+ + +---+---+---+ + +---+---+---+ + +---+---+---+ +
| .3|51 | 3 |39 |.1 | .1|38 | 2 |50 |.3 | .2|42 | 0 |30 |.0 | .0|35 | 5 |47 |.2 |
+ +---+---+---+ + +---+---+---+ + +---+---+---+ + +---+---+---+ +
| |21 |45 |15 | | | 8 |32 |26 | | |12 |36 | 6 | | |29 |53 |23 | |
+ +---+---+---+ + +---+---+---+ + +---+---+---+ + +---+---+---+ +
| .2 | .0 | .1 | .3 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| .0 |
+ +---+---+---+ +
| |28 |34 |10 | |
+ +---+---+---+ +
| .3|52 | 4 |40 |.1 |
+ +---+---+---+ +
| |22 |46 |16 | |
+ +---+---+---+ +
| .2 |
+---+---+---+---+---+
For more information about the location and orientation of the parts see
AbstractCube.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class ch.randelshofer.rubik.AbstractCube |
|---|
AbstractCube.TransformType |
| Field Summary |
|---|
| Fields inherited from class ch.randelshofer.rubik.AbstractCube |
|---|
CENTER_PART, CENTER_TO_SIDE_MAP, CORNER_PART, CORNER_SWIPE_TABLE, CORNER_TO_FACE_MAP, cornerLoc, cornerOrient, EDGE_PART, EDGE_TO_ANGLE_MAP, EDGE_TO_AXIS_MAP, EDGE_TO_FACE_MAP, edgeLoc, edgeOrient, layerCount, NUMBER_OF_CORNER_PARTS, SIDE_PART, sideLoc, sideOrient, transformAngle, transformAxis, transformMask, transformType |
| Constructor Summary | |
|---|---|
ProfessorCube()
Creates a new instance. |
|
| Method Summary | |
|---|---|
int |
getPartLayerMask(int part,
int orientation)
Returns the current layer mask on which the orientation of the part lies. |
int |
getPartSwipeAngle(int part,
int orientation,
int swipeDirection)
Returns the angle on which the orientation of the part can be swiped into the specified direction. |
int |
getPartSwipeAxis(int part,
int orientation,
int swipeDirection)
Returns the axis on which the orientation of the part can be swiped into the specified direction. |
int |
getPartSwipeLayerMask(int part,
int orientation,
int swipeDirection)
Returns the layer mask on which the orientation of the part can be swiped into the specified direction. |
void |
setToStickers(int[][] stickers)
Sets the cube to a state where the faces of the parts map to the provided stickers array. |
int[][] |
toStickers()
Converts the cube into a stickers array reflecting the current permutation of the cube. |
protected void |
transform0(int axis,
int layerMask,
int angle)
Transforms the cube and fires a cubeTwisted event. |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public ProfessorCube()
| Method Detail |
|---|
protected void transform0(int axis,
int layerMask,
int angle)
transform0 in class AbstractCubeaxis - 0=x, 1=y, 2=z axis.layerMask - A bitmask specifying the layers to be transformed.
The size of the layer mask depends on the value returned by
getLayerCount(axis). For a 3x3x3 cube, the layer mask has the
following meaning:
31=rotate the whole cube;angle - positive values=clockwise rotationAbstractCube.getLayerCount()
public int getPartLayerMask(int part,
int orientation)
getPartLayerMask in interface CubegetPartLayerMask in class AbstractCubepublic int[][] toStickers()
Cube
Cube.setToStickers(int[][])public void setToStickers(int[][] stickers)
Cube
stickers - Sticker array to be reused. The method creates a new
array if this parameter is null.
public int getPartSwipeAxis(int part,
int orientation,
int swipeDirection)
Cube
part - The part index.orientation - The orientation of the part where swiping is performed.swipeDirection - The direction of the swipe. 0=up,1=right,2=down,4=left.
public int getPartSwipeLayerMask(int part,
int orientation,
int swipeDirection)
Cube
part - The part index.orientation - The orientation of the part where swiping is performed.swipeDirection - The direction of the swipe. 0=up,1=right,2=down,4=left.
public int getPartSwipeAngle(int part,
int orientation,
int swipeDirection)
Cube
part - The part index.orientation - The orientation of the part where swiping is performed.swipeDirection - The direction of the swipe. 0=up,1=right,2=down,4=left.
|
(c) Werner Randelshofer. All rights reserved. |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||