Function
  CameraClass and VisualClass are so closely bound that the point of seperating them
  has become a bit obscure.  For instance, TransMatrix and RevMatrix in VisualClass are
  dependant on CameraClass for non-perspective translation but live in VisualClass.
  CameraClass::Matrix, for perspective translation lives in CameraClass.  There is
  no equiviant RevMatrix for perspective, so FlatToReal() could not work.

  void VisualClass::Axis_Sign(BitMap* bmp)
    Displays a little three pronged axis indicator at the top left of each view.
    The bitmap is usually the default screen buffer.
    Axis letters/lines are added from furthest to closest.

  void VisualClass::MakeRevMatrix()
    Calculates the reverse translation matrix using Camera.Sc & Scale settings.
    Used in FlatToReal.

  void VisualClass::Draw(BitMap* bmp, BOOL focus)
    Displays the background for the view including the axis sign (see Axis_sign) and the
    axies themselves using Axis_Colors (see axis.cpp).  Also, in an isometric view with
    axis rotations set to a 90deg multipul, a grid.

  void VisualClass::Extremity(VTX* max, VTX* min)
    Will find the maximum and minimum axis values for the corners of this view.
    This is used in the Draw function to show the axises.  If there is a floating
    point overflow, it will try to use max and min equal to half the absolute limits
    for fixed type numbers.

  All FlatToReal functions take a screen co-ordinate and translate them into a real
  (virtual) 3D co-ordinate based on the Visual's RevMatrix and a screen Depth.
  Screen Depth is set using the DrawingPlane and the camera location.
  These functions cannot work for Perspective at the moment.
  RevMatrix must have been set due to a Draw() function call.
  Depth must have been set due to a RestoreDepth() function call in View.Draw() of view.cpp

  All RealToFlat type functions calculate a screen co-ordinated based on the virtual
  3D co-ordinate.  TransMatrix must have been set for this to work.
