00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef opengl_CPlanarLaserScan_H
00030 #define opengl_CPlanarLaserScan_H
00031
00032 #include <mrpt/opengl/CRenderizable.h>
00033
00034 #include <mrpt/slam/CMetricMap.h>
00035 #include <mrpt/slam/CObservation.h>
00036 #include <mrpt/slam/CObservation2DRangeScan.h>
00037 #include <mrpt/slam/CSimplePointsMap.h>
00038
00039
00040 namespace mrpt
00041 {
00042 namespace opengl
00043 {
00044 class MRPTDLLIMPEXP CPlanarLaserScan;
00045
00046
00047 DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE( CPlanarLaserScan, CRenderizable )
00048
00049
00061 class MRPTDLLIMPEXP CPlanarLaserScan : public CRenderizable
00062 {
00063 DEFINE_SERIALIZABLE( CPlanarLaserScan )
00064 protected:
00065 mrpt::slam::CObservation2DRangeScan m_scan;
00066 mutable mrpt::slam::CSimplePointsMap m_cache_points;
00067 mutable bool m_cache_valid;
00068
00069
00070 float m_line_width;
00071 float m_line_R,m_line_G,m_line_B,m_line_A;
00072
00073 float m_points_width;
00074 float m_points_R,m_points_G,m_points_B,m_points_A;
00075
00076 float m_plane_R,m_plane_G,m_plane_B,m_plane_A;
00077
00078 public:
00079 void clear();
00080
00081 bool m_enable_points;
00082 bool m_enable_line;
00083 bool m_enable_surface;
00084
00085 void setLineWidth(float w) { m_line_width=w; }
00086 float getLineWidth() const { return m_line_width;}
00087
00088 void sePointsWidth(float w) { m_points_width=w; }
00089
00090 void setLineColor(float R,float G, float B, float A=1.0f)
00091 {
00092 m_line_R=R;
00093 m_line_G=G;
00094 m_line_B=B;
00095 m_line_A=A;
00096 }
00097 void setPointsColor(float R,float G, float B, float A=1.0f)
00098 {
00099 m_points_R=R;
00100 m_points_G=G;
00101 m_points_B=B;
00102 m_points_A=A;
00103 }
00104 void setSurfaceColor(float R,float G, float B, float A=1.0f)
00105 {
00106 m_plane_R=R;
00107 m_plane_G=G;
00108 m_plane_B=B;
00109 m_plane_A=A;
00110 }
00111
00112 void setScan( const mrpt::slam::CObservation2DRangeScan &scan)
00113 {
00114 m_cache_valid = false;
00115 m_scan = scan;
00116 }
00117
00119 static CPlanarLaserScanPtr Create()
00120 {
00121 return CPlanarLaserScanPtr( new CPlanarLaserScan() );
00122 }
00123
00126 void render() const;
00127
00128 private:
00131 CPlanarLaserScan( );
00132
00134 virtual ~CPlanarLaserScan() { }
00135 };
00136
00137 }
00138
00139 }
00140
00141
00142 #endif