So I kind of feel like I'm spamming the Projects forum, but I had this idea in first block today and I've been developing it since then. I've got the matrix itself planned out, and I've mapped all the possible moves and how they change in 4 dimensions. I've got the output mostly set up, putting the final touches on a pretty beautiful pair of isometric Rubik's cubes now… I guess I'll put in what I've got so far.

The Matrix: Imagine a Rubik's cube sitting on a table with the blue side facing up. You are sitting at the table and have the white side facing you. That means that the green side is down, the red side is facing left, the orange side is facing right, and the yellow side is facing away from you. I call the line through the middle cube from the blue centerpiece to the green centerpiece the z-axis. The line from white to yellow is the y-axis and the line from red to orange is the x-axis.

The first layer of the matrix is a 3x3 matrix that keeps track of each piece in the layer surrounding the blue centerpiece (i.e. the top layer). Now if you put a 3 element long list in each matrix element, you have three dimensions: x, y, and z. Using just this I can locate any piece I want, but pieces can be rotated. Therefore, I turn the lists into 3x3 matrices and use the matrices to describe the sticker color on each side of the piece.

This is probably pretty hard to understand in writing, so I'll copy down a matrix that I filled with colors from a scrambled cube.

Y | O | B | X | B | R | G | R | Y |

Z | X | W | X | X | Y | Y | X | R |

W | R | G | X | Y | O | W | O | G |

G | Y | X | G | O | X | |||

O | X | X | R | X | X | |||

O | W | X | B | O | X | |||

G | Y | O | X | R | G | W | R | B |

Y | X | B | X | X | W | G | X | W |

Y | B | R | X | G | W | W | O | W |

The "X"s are for pieces that don't have a sticker in that direction (e.g. side edge pieces can't have z direction stickers, because that would put the sticker inside the cube. For clarity I normally have bold lines every third line to differentiate the matrix from its sub matrices, but I don't know how to do that…

Now what happens when you turn a side? The notation I've been using for naming individual stickers is: (y,x)[z,w] where (y,x) is row, column of the main matrix and [z,w] is the row and column of the sub matrix (i.e. z coordinate and sticker direction).

I have every turn mapped out, but it's currently 12:53 here, so, for time's sake I'll just give one possible move. If you turn the side facing you (i.e. the white side) counterclockwise, the piece (3,x)[z,{h,v,p}] becomes (3,z)[(4-x),{v,h,p}] where h, v and p stand for horizontal, vertical and perpendicular and are the equivalent of x, y and z, but in the 4th dimension of the matrix.

So that's it for now… I have more, but I've got to sleep. I'll update more tomorrow.