00001 #ifndef _PL_PrmIjg_ 00002 #define _PL_PrmIjg_ 00003 00004 #include "Planners/PL_Boolean_Output.h" 00005 #include "Planners/PL_OpenGL.h" 00006 #include "math/graph.h" 00007 #include <vector> 00008 00009 #pragma warning( disable : 4250 ) 00010 00011 class CD_Bool; 00012 00013 00014 class PL_PrmIjg 00015 : public PL_Boolean_Output, 00016 virtual public PL_OpenGL 00017 { 00018 public: 00019 PL_PrmIjg(); 00020 virtual ~PL_PrmIjg(); 00021 virtual bool DrawExplicit () const; 00022 virtual void DrawUniversePortion() const; 00023 bool Plan (); 00024 void PlanMultiThread (void* data); 00025 00026 protected: 00027 bool AddNodeToGraph( const int graphNum, const Configuration& config ); 00028 int CreateNewGraph( const Configuration& config ); 00029 void DrawOverlay( const Configuration& config ) const; 00030 Configuration GenerateRandomConfig() const; 00031 void MergeGraphs( const int base, const int merge, const Configuration& config ); 00032 void PrintGraph( const int graphNum ) const; 00033 static void SetColor( const int i ); 00034 00035 typedef Graph::Graph< Configuration, bool > PrmGraph; 00036 std::vector< PrmGraph > m_Graphs; 00037 std::vector< bool > m_GraphInFreeSpace; 00038 bool m_PlanComplete; 00039 int m_NumberOfTimesContinued; 00040 00041 private: 00042 }; 00043 00044 #endif //_PL_PrmIjg_ 00045