===============================================================================
TODO LIST
===============================================================================

- put algorithm into its own thread

- add ability to write solutions to a file on the fly and/or an interrupt
  handler to console version

- add read/write ability in Thorleif's htm format for special piece sets

- create better randomization

===============================================================================
KNOWN ISSUES
===============================================================================

- blocks from different pieces may overlap/intersect when exploding a solved
  figure (this can not be trivially solved, see 4x4x4.solved.interlocking.pzl
  but requires to solve another type of puzzle)

- probably a memory leak in the gfx version ?!? valgrind also shows memory
  leaks in the non gfx version

- there is no way to stop a running algorithm both in the gui and pure version,
  except of killing the program, also gui does not redraw while an algorithm
  is running

-------------------------------------------------------------------------------
Version 1.6
-------------------------------------------------------------------------------

- changed anchor point for exploding functionality, look nicer now

- messed around some with colors and lights, cube borders are not drawn anymore

- added filtering for rotational symmetries

- rewrote parts of the algorithm to make symmetry filtering possible, core is
  now recursive
  
- rotation functionality has been splitted from the piece class and templated
  so it is usable for floating point vectors 

-------------------------------------------------------------------------------
Version 1.5.1
-------------------------------------------------------------------------------

- command line options have been added to the console version for some
  algorithm control

- pieces not in solution are now grey in piece window, to do this cycling
  through solutions has been changed

- added gui elements so new algorithm parameters are available for user

- added two parameters to algorithm for creating multiple solutions and
  randomization

- new class for holding/reading/writing multiple solutions added, file format
  changed, using this class now 

-------------------------------------------------------------------------------
Version 1.5
-------------------------------------------------------------------------------

- had a look at opengl projection code and zooming, figure exploding now uses
  center of piece as scale point 

- added button to window for pieces since it has no controls whatsoever on
  windows ... added a dragcorner too since the space is wasted anyway

- added possibility to display pieces in gui

- added a statusbar/replaced old status info

- rewrote interface of GFX classes, changed mouse handling

- pulled all ogl code from mainwin class, created a new intermediate GFX class
  to prepare a GFX class for pieces

- added centering both to problem class and gui, this is now performed
  automatically

- changed some function headers and data types within classes

- added a class to store solutions, finally split solve class completely from 
  problem class

- added a function coverCheck as new break criteria, based on what can be
  covered with remaining placeable pieces

- connecktCheck is now entirely based on solving knapsack relaxations for all
  possible right hand sides

- added a class to solve the knapsack like problem a'x = b , a from N^n, b
  from N such that x from {0,1}^n .. this is more efficient now and the solve
  class is a bit cleaner

- some slight changes to the algorithm, increasing speed a bit ( extra array
  for bitvectors, change of inuse array, removal of one stack, conversion of
  the other stack to a native array,turned loop in connectCheck() )

- removed list sorting on solve class since this is pointless in the stress
  case (find all solutions/prove unsolvable)

- added two missing singlepieces files

- renamed tile -> piece which should now be correct english ;)

- changed colors, now they don't look as nice as before but one can seperate
  pieces more easily since blue isn't as dominant as before
  
- changed the argument type in many functions from const [...] *const to 
  const [...] &, also changed some methods from call by value to call by 
  reference

- removed all "triple int" functions, now only the vector versions exist
  
-------------------------------------------------------------------------------
Version 1.2
-------------------------------------------------------------------------------

- now sorting lists/pieces in solve class, this speeds up the algorithm a lot

- streamlined connecktCheck method some

-------------------------------------------------------------------------------
Version 1.1
-------------------------------------------------------------------------------

- solve now works on bit vectors (unsigned long long) and not on the old
  SomaSet class anymore, this is not as efficient as i thought 

- pulled solve code from problem object to a new solution object

- replaced gluPickMatrix call with own code, now no glu stuff is used anymore

- removed another memory leak in the basic problem class, valgrind shows some
  more but as far as i can tell they are not cause by my code

- beautified the problem and solution gfx classes a lot, also the cubearray 
  class got some polishing

- program crashes when solving the somatic.pzl with one-block pieces =/ this
  has been fixed (there were not enought savety 0 blocks to prevent array 
  overflows)

- changed editing style from Stephans two-click mode to one-click mode =D

- removed all "using namespace std;" directives, replaced them with std:: where
  appropriate 

- removed Stephans cube class, together with triangle_mesh and tr_msh classes,
  cube data is now created as static data within the cube class and immediatly
  put into display lists

- introduced a new naming scheme for classnames, adopted filenames as well

- cleanup of the basix gfx class and the problem and solution gfx class, the 
  rotation core is shared correctly now, found a small memory leak while doing
  this (the one mentioned above ?)

- splitted somatic.cpp into 5 files, seperating the main window and the help 
  window class

- moved .h to .hpp files, introduced a consistent naming scheme 

- cleaned up the vector math class, moved remaining methods into vector
  template and point class

- removed whitespace skip methods, they can not be used with the vector
  template anyways

- major cleanup of the points object code, removed all the get/set stuff

- added a small benchmark program

-------------------------------------------------------------------------------
Version 1.0
-------------------------------------------------------------------------------

- initial release

