00001
00013
00014
00015 #ifdef HAVE_MODULE_QDISPLAY // lgl viewer is on if HAVE_MODULE_QDISPLAY is defined
00016
00017 #ifndef LGL_DISPLAY_MULTI_PURSUIT_HPP
00018 #define LGL_DISPLAY_MULTI_PURSUIT_HPP
00019
00020 #include <qdisplay/init.hpp>
00021 #include <qdisplay/Viewer.hpp>
00022 #include <qdisplay/ImageView.hpp>
00023 #include <qdisplay/Shape.hpp>
00024
00025 #include <lgl/PursuitStats.hpp>
00026 #include <lgl/RobotPursuer.hpp>
00027
00028 #include <boost/thread/thread.hpp>
00029
00030 #include <ostream>
00031 #include <string>
00032 #include <vector>
00033
00034 namespace jafar {
00035 namespace lgl {
00036
00037
00038 class LGLMultiPursuit_Viewer ;
00039
00040
00041 class MultiPursuit_Controller : public jafar::qdisplay::Viewer
00042 {
00043
00044 private :
00045 LGLMultiPursuit_Viewer *master ;
00046
00047 protected :
00048 void setMaster( LGLMultiPursuit_Viewer &_master);
00049
00050 signals:
00051 void keyPressEvent(QKeyEvent *event);
00052
00053 friend class LGLMultiPursuit_Viewer ;
00054
00055 };
00056
00057 class MultiPursuit_Viewer : public jafar::qdisplay::Viewer
00058 {
00059
00060 private :
00061 double scale ;
00062
00063 public :
00064 MultiPursuit_Viewer(double _scale) :
00065 scale(_scale)
00066 { }
00067
00068 protected :
00069 void mouseMoveEvent ( QMouseEvent * event );
00070
00071 friend class LGLMultiPursuit_Viewer ;
00072
00073 };
00074
00075 struct MultiProtagonist
00076 {
00077
00078 int x ;
00079 int y ;
00080
00081
00082 jafar::qdisplay::Shape *shape1;
00083 jafar::qdisplay::Shape *shape2;
00084 jafar::qdisplay::Shape *shape3;
00085 };
00086
00087 class LGLMultiPursuit_Viewer
00088 {
00089 public:
00090
00091
00092 LGLMultiPursuit_Viewer( RobotPursuer &_pt_robot);
00093
00094 ~LGLMultiPursuit_Viewer();
00095
00096 void setRobotPosition ( int _x, int _y);
00097 void setTargetPosition ( int _x, int _y);
00098
00099
00100
00101
00102
00103 bool start () ;
00104
00105
00106
00107 void move ( int _x, int _y) ;
00108
00109 private:
00110
00111 RobotPursuer *pt_robot;
00112
00113
00114 jafar::lgl::MultiPursuit_Controller* ctrl ;
00115
00117 MultiPursuit_Viewer* viewer1;
00118 MultiPursuit_Viewer* viewer2;
00119 MultiPursuit_Viewer* viewer3;
00120
00121
00122 MultiProtagonist robot ;
00123 MultiProtagonist target ;
00124
00125
00126 double scale ;
00127
00128
00129 std::vector< jafar::qdisplay::Shape *> risks ;
00130
00131
00132
00133 bool visibleRisks;
00134
00135
00136
00137 PursuitStats stats ;
00138
00139
00140
00141
00142
00143 bool startDisplay () ;
00144
00145
00146
00147 bool refresh();
00148
00149
00150
00151 void displayrisks();
00152
00153
00154
00155 void hiderisks();
00156
00157
00158
00159 void displaystats();
00160
00161
00162
00163 void displayhelp();
00164
00165 friend class MultiPursuit_Controller ;
00166
00167 };
00168
00169 }
00170 }
00171
00172 #endif // LGL_DISPLAY_MULTI_PURSUIT_HPP
00173 #endif // QDisplay enabled