main.cpp

                      Splits Two Threads

                    (1)                     (2)

  +-------------------+                      +------------------------+ 
  | Thread 1          |                      | Thread 2               |
  | FV_MOOSApp        |                      | FV_GUI                 |
  |                   |                      |                        |
  | interacts w/MOOS  |                      | interacts w/USER       |
  |                   |                      |                        |
  | rgsters for IPF's |                     /|                        |
  |                   |                    / |                        |
  | has-a: FV_Model*  |                   /  | has-a: FV_Model*       |
  | has-a: FV_Viewer* |                  /   | has-a: FV_Viewer*      |
  +-------------------+                 /    +------------------------+ 
      |                 \              /                 |
      | (1) Sends curr    \           / Send ColorMap    | Sends user 
      |     IPF as string   \        /  preferences      | view options
      |                       \     /                    | (rotate etc)  
      |       (2) tell viewer   \  /                     |   
      |           to redraw()     \                      |  
      V                          /  \                    V 
   +-----------------------+    /     \    +-----------------------+
   | FV_Model              |   /        >  | FV_Viewer             |
   |                       |  /            |                       |
   |                       | /             |                       |
   |                       |<              |                       |
   | has-a: FColorMap      |               | (does OpenGL stuff)   |
   |                       |<------------- |                       |
   | has-a: FunctionQueue  |  Query model  | has-a: FV_Model*      |
   +-----------------------+  for drawing  +-----------------------+