Go to the documentation of this file.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 #ifndef opengl_CSetOfTexturedTriangles_H
00029 #define opengl_CSetOfTexturedTriangles_H
00030
00031 #include <mrpt/opengl/CTexturedObject.h>
00032
00033 namespace mrpt
00034 {
00035 namespace opengl
00036 {
00037 class MRPTDLLIMPEXP CSetOfTexturedTriangles;
00038
00039
00040 DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE( CSetOfTexturedTriangles, CTexturedObject )
00041
00042
00043
00044
00045
00046 class MRPTDLLIMPEXP CSetOfTexturedTriangles : public CTexturedObject
00047 {
00048 DEFINE_SERIALIZABLE( CSetOfTexturedTriangles )
00049
00050 public:
00051
00052
00053 struct MRPTDLLIMPEXP TVertex
00054 {
00055
00056
00057 TVertex( ) :
00058 m_x(0.0), m_y(0.0), m_z(0.0), m_u(0), m_v(0) { }
00059
00060
00061 TVertex(float x, float y, float z, unsigned int u, unsigned int v) :
00062 m_x(x), m_y(y), m_z(z), m_u(u), m_v(v) { }
00063
00064
00065 float m_x, m_y, m_z;
00066
00067
00068 unsigned int m_u, m_v;
00069 };
00070
00071
00072
00073 struct MRPTDLLIMPEXP TTriangle
00074 {
00075
00076
00077 TTriangle( ) :
00078 m_v1(), m_v2(), m_v3() { }
00079
00080
00081 TTriangle(TVertex v1, TVertex v2, TVertex v3) :
00082 m_v1(v1), m_v2(v2), m_v3(v3) { }
00083
00084
00085 TVertex m_v1, m_v2, m_v3;
00086 };
00087
00088 protected:
00089
00090
00091
00092 std::vector<TTriangle> m_triangles;
00093
00094 public:
00095 void clearTriangles( ) { m_triangles.clear(); }
00096 size_t getTrianglesCount( ) const { return m_triangles.size(); }
00097 void getTriangle( size_t idx, TTriangle &t ) const { ASSERT_(idx<m_triangles.size()); t = m_triangles[idx]; }
00098 void insertTriangle( const TTriangle &t ) { m_triangles.push_back(t); }
00099
00100
00101
00102 void render( ) const;
00103
00104
00105
00106 virtual bool traceRay( const mrpt::poses::CPose3D &o,double &dist ) const;
00107
00108 private:
00109
00110
00111 CSetOfTexturedTriangles( ) : m_triangles()
00112 { }
00113
00114
00115 virtual ~CSetOfTexturedTriangles();
00116 };
00117
00118 }
00119
00120 }
00121
00122 #endif