                Ideas for improvements to MagicCube4d

User interface issues:

 * Have some way of selecting a polygon and seeing all the other
   polygons that comprise that polygon's sticker.  This could be done
   with shading, outlining, etc.

 * Support multiple simultaneous views of the puzzle.  Alternatively,
   have a "back" view so that the user can see all the stickers at the
   same time without having to do any 4D rotations.

 * Implement "replay" so that a user can view a solution forward and
   see the puzzle from the same view that the solver saw.

 * Calculate faceshrink/stickershrink/eyew/eyez automatically based on
   n.  From Don:

   >   For an nxnx... puzzle, to get the stickers on a cubie to meet,
   >   set F=faceshrink in terms of S=stickershrink as follows:
   >	   F = n / (n-1 + S)
   >   For example:
   >	   n=3 S=1 F=1
   >	   n=3 S=.5 F=1.2
   >	   n=3 S=0 F=1.5
   >   I think it looks better with a small crack, e.g. S=.5,F=1.19.
   >   Other interesting values are S=.95,F=1-- this makes it look and act like
   >   a 3-D Rubik's cube (as long as you don't click on corners or edges).
   >   However, most of these interesting non-standard values
   >   show up the inadequacy of the depth-sort algorithm, even when
   >   sitting still.


Windows issues:

 * Make "Save As" work

 * Support n^4 for n > 3

 * Support macros

 * Support marks

 * Add support for undo/redo through scramble boundaries (or remove
   from UNIX code if consistency is desired)


Logic issues:

 * Code a real solution algorithm.  Change the current "solve" button
   to "cheat", and have the solve button actually solve the puzzle.

 * In history compression, recognize pairs of moves that are invereses
   of each other and remove them.  (Do this recursively?)  Note: doing
   this at time of recording moves could result in unfortunate loss of
   information if one move is at the end of a pattern and the
   following move is at the beginning of the next pattern.

 * Have a way for the user to specify the number of random twists for
   a scramble through a dialog box; then always reset state before a
   scramble and insert a scramble boundary mark after a scramble of
   any length.


Things that would be nice but may not be worth the trouble:

 * Eliminate more of the code duplication between the Windows and UNIX
   versions.

 * Have a more general/uniform way of specifying preferences along the
   lines of the Java preferences conventions.  Right now, preferences
   are specified through a hodge podge of environment variables and,
   for the UNIX version, commandline options and X resources.
