#ifndef QUICKHULL3DTEST_H
#define QUICKHULL3DTEST_H

#include <vector>
using namespace std;

#include <gobj.h>
#include <quickhull3D.h>

/*!
\brief 3D quickhull test and program tools.
*/
class quickhull3Dtest
{
  /** Global graphics stream. */
  gobjContainer xGraphics;

  /** Turn on and off the axes. */
  gobjSwitch<> * displayaxes;

  gobjContainer pointscontainer;

  gobjContainer dynamic;

  static void dynamicupdate();

  /** Toggle the display of the points. */
  bool pointsdisplay;
  /** Toggle the numbering of the points. */
  bool pointsnumber;

  typedef point3<double> pt3;

  vector<pt3> pts;

  /** The static functions can access the quickhull3Dtest
      class. */
  static quickhull3Dtest * member;

  /** Toggle the help menu. */
  bool menuhelp;
  gobjSwitch<bool &> * menuswitch;
  /** This class accesses the quickhull algorithm through
      the quickhull3D class. */
  quickhull3D< pt3, double > * quickhull;

  
  
public:

  quickhull3Dtest();

  /** Default keyboard handler - ESC to quit. */
  static void keyboard01(unsigned char key, int x, int y);
  /** Displays the gobj::global with double buffering. */
  static void display01();

  void test01(int argc, char** argv);

  //void test02(int argc, char** argv);



};


#endif


