- switch (face) {
- case BACK_ROTATION:
- if (orient == CLOCK_WISE) {
- T1 = F_[BOTTOM_ROTATION][0][0];
- T2 = F_[BOTTOM_ROTATION][1][0];
- T3 = F_[BOTTOM_ROTATION][LAST][0];
- F_[BOTTOM_ROTATION][0][0] = F_[LEFT_ROTATION][0][LAST];
- F_[BOTTOM_ROTATION][1][0] = F_[LEFT_ROTATION][0][1];
- F_[BOTTOM_ROTATION][LAST][0] = F_[LEFT_ROTATION][0][0];
- F_[LEFT_ROTATION][0][0] = F_[TOP_ROTATION][0][LAST];
- F_[LEFT_ROTATION][0][1] = F_[TOP_ROTATION][1][LAST];
- F_[LEFT_ROTATION][0][LAST] = F_[TOP_ROTATION][LAST][LAST];
- F_[TOP_ROTATION][0][LAST] = F_[RIGHT_ROTATION][LAST][LAST];
- F_[TOP_ROTATION][1][LAST] = F_[RIGHT_ROTATION][LAST][1];
- F_[TOP_ROTATION][LAST][LAST] = F_[RIGHT_ROTATION][LAST][0];
- F_[RIGHT_ROTATION][LAST][0] = T1; /* F_[BOTTOM_ROTATION][0][0]; */
- F_[RIGHT_ROTATION][LAST][1] = T2; /* F_[BOTTOM_ROTATION][1][0]; */
- F_[RIGHT_ROTATION][LAST][LAST] = T3; /* F_[BOTTOM_ROTATION][LAST][0]; */
- } else {
- T1 = F_[LEFT_ROTATION][0][LAST];
- T2 = F_[LEFT_ROTATION][0][1];
- T3 = F_[LEFT_ROTATION][0][0];
- F_[LEFT_ROTATION][0][LAST] = F_[BOTTOM_ROTATION][0][0];
- F_[LEFT_ROTATION][0][1] = F_[BOTTOM_ROTATION][1][0];
- F_[LEFT_ROTATION][0][0] = F_[BOTTOM_ROTATION][LAST][0];
- F_[BOTTOM_ROTATION][0][0] = F_[RIGHT_ROTATION][LAST][0];
- F_[BOTTOM_ROTATION][1][0] = F_[RIGHT_ROTATION][LAST][1];
- F_[BOTTOM_ROTATION][LAST][0] = F_[RIGHT_ROTATION][LAST][LAST];
- F_[RIGHT_ROTATION][LAST][LAST] = F_[TOP_ROTATION][0][LAST];
- F_[RIGHT_ROTATION][LAST][1] = F_[TOP_ROTATION][1][LAST];
- F_[RIGHT_ROTATION][LAST][0] = F_[TOP_ROTATION][LAST][LAST];
- F_[TOP_ROTATION][0][LAST] = T3; /* F_[LEFT_ROTATION][0][0]; */
- F_[TOP_ROTATION][1][LAST] = T2; /* F_[LEFT_ROTATION][0][1]; */
- F_[TOP_ROTATION][LAST][LAST] = T1; /* F_[LEFT_ROTATION][0][LAST]; */
- }
- break;
- case FRONT_ROTATION:
- if (orient == CLOCK_WISE) {
- T1 = F_[RIGHT_ROTATION][0][LAST];
- T2 = F_[RIGHT_ROTATION][0][1];
- T3 = F_[RIGHT_ROTATION][0][0];
- F_[RIGHT_ROTATION][0][LAST] = F_[TOP_ROTATION][0][0];
- F_[RIGHT_ROTATION][0][1] = F_[TOP_ROTATION][1][0];
- F_[RIGHT_ROTATION][0][0] = F_[TOP_ROTATION][LAST][0];
- F_[TOP_ROTATION][0][0] = F_[LEFT_ROTATION][LAST][0];
- F_[TOP_ROTATION][1][0] = F_[LEFT_ROTATION][LAST][1];
- F_[TOP_ROTATION][LAST][0] = F_[LEFT_ROTATION][LAST][LAST];
- F_[LEFT_ROTATION][LAST][LAST] = F_[BOTTOM_ROTATION][0][LAST];
- F_[LEFT_ROTATION][LAST][1] = F_[BOTTOM_ROTATION][1][LAST];
- F_[LEFT_ROTATION][LAST][0] = F_[BOTTOM_ROTATION][LAST][LAST];
- F_[BOTTOM_ROTATION][0][LAST] = T3; /* F_[RIGHT_ROTATION][0][0]; */
- F_[BOTTOM_ROTATION][1][LAST] = T2; /* F_[RIGHT_ROTATION][0][1]; */
- F_[BOTTOM_ROTATION][LAST][LAST] = T1; /* F_[RIGHT_ROTATION][0][LAST]; */
- } else {
- T1 = F_[TOP_ROTATION][0][0];
- T2 = F_[TOP_ROTATION][1][0];
- T3 = F_[TOP_ROTATION][LAST][0];
- F_[TOP_ROTATION][0][0] = F_[RIGHT_ROTATION][0][LAST];
- F_[TOP_ROTATION][1][0] = F_[RIGHT_ROTATION][0][1];
- F_[TOP_ROTATION][LAST][0] = F_[RIGHT_ROTATION][0][0];
- F_[RIGHT_ROTATION][0][0] = F_[BOTTOM_ROTATION][0][LAST];
- F_[RIGHT_ROTATION][0][1] = F_[BOTTOM_ROTATION][1][LAST];
- F_[RIGHT_ROTATION][0][LAST] = F_[BOTTOM_ROTATION][LAST][LAST];
- F_[BOTTOM_ROTATION][0][LAST] = F_[LEFT_ROTATION][LAST][LAST];
- F_[BOTTOM_ROTATION][1][LAST] = F_[LEFT_ROTATION][LAST][1];
- F_[BOTTOM_ROTATION][LAST][LAST] = F_[LEFT_ROTATION][LAST][0];
- F_[LEFT_ROTATION][LAST][0] = T1; /* F_[TOP_ROTATION][0][0]; */
- F_[LEFT_ROTATION][LAST][1] = T2; /* F_[TOP_ROTATION][1][0]; */
- F_[LEFT_ROTATION][LAST][LAST] = T3; /* F_[TOP_ROTATION][LAST][0]; */
- }
- break;
- case LEFT_ROTATION:
- if (orient == CLOCK_WISE) {
- T1 = F_[TOP_ROTATION][0][0];
- T2 = F_[TOP_ROTATION][0][1];
- T3 = F_[TOP_ROTATION][0][LAST];
- F_[TOP_ROTATION][0][0] = F_[BACK_ROTATION][0][0];
- F_[TOP_ROTATION][0][1] = F_[BACK_ROTATION][0][1];
- F_[TOP_ROTATION][0][LAST] = F_[BACK_ROTATION][0][LAST];
- F_[BACK_ROTATION][0][0] = F_[BOTTOM_ROTATION][0][0];
- F_[BACK_ROTATION][0][1] = F_[BOTTOM_ROTATION][0][1];
- F_[BACK_ROTATION][0][LAST] = F_[BOTTOM_ROTATION][0][LAST];
- F_[BOTTOM_ROTATION][0][0] = F_[FRONT_ROTATION][0][0];
- F_[BOTTOM_ROTATION][0][1] = F_[FRONT_ROTATION][0][1];
- F_[BOTTOM_ROTATION][0][LAST] = F_[FRONT_ROTATION][0][LASTY];
- F_[FRONT_ROTATION][0][0] = T1; /* F_[TOP_ROTATION][0][0]; */
- F_[FRONT_ROTATION][0][1] = T2; /* F_[TOP_ROTATION][0][1]; */
- F_[FRONT_ROTATION][0][LASTY] = T3; /* F_[TOP_ROTATION][0][LAST]; */
- } else {
- T1 = F_[BACK_ROTATION][0][0];
- T2 = F_[BACK_ROTATION][0][1];
- T3 = F_[BACK_ROTATION][0][LAST];
- F_[BACK_ROTATION][0][0] = F_[TOP_ROTATION][0][0];
- F_[BACK_ROTATION][0][1] = F_[TOP_ROTATION][0][1];
- F_[BACK_ROTATION][0][LAST] = F_[TOP_ROTATION][0][LAST];
- F_[TOP_ROTATION][0][0] = F_[FRONT_ROTATION][0][0];
- F_[TOP_ROTATION][0][1] = F_[FRONT_ROTATION][0][1];
- F_[TOP_ROTATION][0][LAST] = F_[FRONT_ROTATION][0][LASTY];
- F_[FRONT_ROTATION][0][0] = F_[BOTTOM_ROTATION][0][0];
- F_[FRONT_ROTATION][0][1] = F_[BOTTOM_ROTATION][0][1];
- F_[FRONT_ROTATION][0][LASTY] = F_[BOTTOM_ROTATION][0][LAST];
- F_[BOTTOM_ROTATION][0][0] = T1; /* F_[BACK_ROTATION][0][0]; */
- F_[BOTTOM_ROTATION][0][1] = T2; /* F_[BACK_ROTATION][0][1]; */
- F_[BOTTOM_ROTATION][0][LAST] = T3; /* F_[BACK_ROTATION][0][LAST]; */
- }
- break;
- case RIGHT_ROTATION:
- if (orient == CLOCK_WISE) {
- T1 = F_[TOP_ROTATION][LAST][0];
- T2 = F_[TOP_ROTATION][LAST][1];
- T3 = F_[TOP_ROTATION][LAST][LAST];
- F_[TOP_ROTATION][LAST][0] = F_[FRONT_ROTATION][LASTX][0];
- F_[TOP_ROTATION][LAST][1] = F_[FRONT_ROTATION][LASTX][1];
- F_[TOP_ROTATION][LAST][LAST] = F_[FRONT_ROTATION][LASTX][LASTY];
- F_[FRONT_ROTATION][LASTX][0] = F_[BOTTOM_ROTATION][LAST][0];
- F_[FRONT_ROTATION][LASTX][1] = F_[BOTTOM_ROTATION][LAST][1];
- F_[FRONT_ROTATION][LASTX][LASTY] = F_[BOTTOM_ROTATION][LAST][LAST];
- F_[BOTTOM_ROTATION][LAST][0] = F_[BACK_ROTATION][LAST][0];
- F_[BOTTOM_ROTATION][LAST][1] = F_[BACK_ROTATION][LAST][1];
- F_[BOTTOM_ROTATION][LAST][LAST] = F_[BACK_ROTATION][LAST][LAST];
- F_[BACK_ROTATION][LAST][0] = T1; /* F_[TOP_ROTATION][LAST][0]; */
- F_[BACK_ROTATION][LAST][1] = T2; /* F_[TOP_ROTATION][LAST][1]; */
- F_[BACK_ROTATION][LAST][LAST] = T3; /* F_[TOP_ROTATION][LAST][LAST]; */
- } else {
- T1 = F_[FRONT_ROTATION][LASTX][0];
- T2 = F_[FRONT_ROTATION][LASTX][1];
- T3 = F_[FRONT_ROTATION][LASTX][LASTY];
- F_[FRONT_ROTATION][LASTX][0] = F_[TOP_ROTATION][LAST][0];
- F_[FRONT_ROTATION][LASTX][1] = F_[TOP_ROTATION][LAST][1];
- F_[FRONT_ROTATION][LASTX][LASTY] = F_[TOP_ROTATION][LAST][LAST];
- F_[TOP_ROTATION][LAST][0] = F_[BACK_ROTATION][LAST][0];
- F_[TOP_ROTATION][LAST][1] = F_[BACK_ROTATION][LAST][1];
- F_[TOP_ROTATION][LAST][LAST] = F_[BACK_ROTATION][LAST][LAST];
- F_[BACK_ROTATION][LAST][0] = F_[BOTTOM_ROTATION][LAST][0];
- F_[BACK_ROTATION][LAST][1] = F_[BOTTOM_ROTATION][LAST][1];
- F_[BACK_ROTATION][LAST][LAST] = F_[BOTTOM_ROTATION][LAST][LAST];
- F_[BOTTOM_ROTATION][LAST][0] = T1; /* F_[FRONT_ROTATION][LASTX][0]; */
- F_[BOTTOM_ROTATION][LAST][1] = T2; /* F_[FRONT_ROTATION][LASTX][1]; */
- F_[BOTTOM_ROTATION][LAST][LAST] = T3; /* F_[FRONT_ROTATION][LASTX][LASTY]; */
- }
- break;
- case BOTTOM_ROTATION:
- if (orient == CLOCK_WISE) {
- T1 = F_[FRONT_ROTATION][0][0];
- T2 = F_[FRONT_ROTATION][1][0];
- T3 = F_[FRONT_ROTATION][LASTX][0];
- F_[FRONT_ROTATION][0][0] = F_[LEFT_ROTATION][0][0];
- F_[FRONT_ROTATION][1][0] = F_[LEFT_ROTATION][1][0];
- F_[FRONT_ROTATION][LASTX][0] = F_[LEFT_ROTATION][LAST][0];
- F_[LEFT_ROTATION][0][0] = F_[BACK_ROTATION][LAST][LAST];
- F_[LEFT_ROTATION][1][0] = F_[BACK_ROTATION][1][LAST];
- F_[LEFT_ROTATION][LAST][0] = F_[BACK_ROTATION][0][LAST];
- F_[BACK_ROTATION][LAST][LAST] = F_[RIGHT_ROTATION][0][0];
- F_[BACK_ROTATION][1][LAST] = F_[RIGHT_ROTATION][1][0];
- F_[BACK_ROTATION][0][LAST] = F_[RIGHT_ROTATION][LAST][0];
- F_[RIGHT_ROTATION][0][0] = T1; /* F_[FRONT_ROTATION][0][0]; */
- F_[RIGHT_ROTATION][1][0] = T2; /* F_[FRONT_ROTATION][1][0]; */
- F_[RIGHT_ROTATION][LAST][0] = T3; /* F_[FRONT_ROTATION][LASTX][0]; */
- } else {
- T1 = F_[BACK_ROTATION][LAST][LAST];
- T2 = F_[BACK_ROTATION][1][LAST];
- T3 = F_[BACK_ROTATION][0][LAST];
- F_[BACK_ROTATION][LAST][LAST] = F_[LEFT_ROTATION][0][0];
- F_[BACK_ROTATION][1][LAST] = F_[LEFT_ROTATION][1][0];
- F_[BACK_ROTATION][0][LAST] = F_[LEFT_ROTATION][LAST][0];
- F_[LEFT_ROTATION][0][0] = F_[FRONT_ROTATION][0][0];
- F_[LEFT_ROTATION][1][0] = F_[FRONT_ROTATION][1][0];
- F_[LEFT_ROTATION][LAST][0] = F_[FRONT_ROTATION][LASTX][0];
- F_[FRONT_ROTATION][0][0] = F_[RIGHT_ROTATION][0][0];
- F_[FRONT_ROTATION][1][0] = F_[RIGHT_ROTATION][1][0];
- F_[FRONT_ROTATION][LASTX][0] = F_[RIGHT_ROTATION][LAST][0];
- F_[RIGHT_ROTATION][0][0] = T1; /* F_[BACK_ROTATION][LAST][LAST]; */
- F_[RIGHT_ROTATION][1][0] = T2; /* F_[BACK_ROTATION][1][LAST]; */
- F_[RIGHT_ROTATION][LAST][0] = T3; /* F_[BACK_ROTATION][0][LAST]; */
- }
- break;
- case TOP_ROTATION:
- if (orient == CLOCK_WISE) {
- T1 = F_[BACK_ROTATION][0][0];
- T2 = F_[BACK_ROTATION][1][0];
- T3 = F_[BACK_ROTATION][LAST][0];
- F_[BACK_ROTATION][0][0] = F_[LEFT_ROTATION][LAST][LAST];
- F_[BACK_ROTATION][1][0] = F_[LEFT_ROTATION][1][LAST];
- F_[BACK_ROTATION][LAST][0] = F_[LEFT_ROTATION][0][LAST];
- F_[LEFT_ROTATION][LAST][LAST] = F_[FRONT_ROTATION][LASTX][LASTY];
- F_[LEFT_ROTATION][1][LAST] = F_[FRONT_ROTATION][1][LASTY];
- F_[LEFT_ROTATION][0][LAST] = F_[FRONT_ROTATION][0][LASTY];
- F_[FRONT_ROTATION][LASTX][LASTY] = F_[RIGHT_ROTATION][LAST][LAST];
- F_[FRONT_ROTATION][1][LASTY] = F_[RIGHT_ROTATION][1][LAST];
- F_[FRONT_ROTATION][0][LASTY] = F_[RIGHT_ROTATION][0][LAST];
- F_[RIGHT_ROTATION][LAST][LAST] = T1; /* F_[BACK_ROTATION][0][0]; */
- F_[RIGHT_ROTATION][1][LAST] = T2; /* F_[BACK_ROTATION][1][0]; */
- F_[RIGHT_ROTATION][0][LAST] = T3; /* F_[BACK_ROTATION][LAST][0]; */
- } else {
- T1 = F_[RIGHT_ROTATION][LAST][LAST];
- T2 = F_[RIGHT_ROTATION][1][LAST];
- T3 = F_[RIGHT_ROTATION][0][LAST];
- F_[RIGHT_ROTATION][LAST][LAST] = F_[FRONT_ROTATION][LASTX][LASTY];
- F_[RIGHT_ROTATION][1][LAST] = F_[FRONT_ROTATION][1][LASTY];
- F_[RIGHT_ROTATION][0][LAST] = F_[FRONT_ROTATION][0][LASTY];
- F_[FRONT_ROTATION][LASTX][LASTY] = F_[LEFT_ROTATION][LAST][LAST];
- F_[FRONT_ROTATION][1][LASTY] = F_[LEFT_ROTATION][1][LAST];
- F_[FRONT_ROTATION][0][LASTY] = F_[LEFT_ROTATION][0][LAST];
- F_[LEFT_ROTATION][LAST][LAST] = F_[BACK_ROTATION][0][0];
- F_[LEFT_ROTATION][1][LAST] = F_[BACK_ROTATION][1][0];
- F_[LEFT_ROTATION][0][LAST] = F_[BACK_ROTATION][LAST][0];
- F_[BACK_ROTATION][0][0] = T1; /* F_[RIGHT_ROTATION][LAST][LAST]; */
- F_[BACK_ROTATION][1][0] = T2; /* F_[RIGHT_ROTATION][1][LAST]; */
- F_[BACK_ROTATION][LAST][0] = T3; /* F_[RIGHT_ROTATION][0][LAST]; */
- }
- break;