Main MRPT website > C++ reference for MRPT 1.9.9
CGridPlaneXY.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "opengl-precomp.h" // Precompiled header
11 
14 
15 #include "opengl_internals.h"
16 
17 using namespace mrpt;
18 using namespace mrpt::opengl;
19 
20 using namespace std;
21 
23 
25  float xMin, float xMax, float yMin, float yMax, float z, float frequency,
26  float lineWidth, bool antiAliasing)
27 {
28  return CGridPlaneXY::Ptr(
29  new CGridPlaneXY(
30  xMin, xMax, yMin, yMax, z, frequency, lineWidth, antiAliasing));
31 }
32 /** Constructor */
34  float xMin, float xMax, float yMin, float yMax, float z, float frequency,
35  float lineWidth, bool antiAliasing)
36  : m_xMin(xMin),
37  m_xMax(xMax),
38  m_yMin(yMin),
39  m_yMax(yMax),
40  m_plane_z(z),
41  m_frequency(frequency),
42  m_lineWidth(lineWidth),
43  m_antiAliasing(antiAliasing)
44 {
45 }
46 
47 /*---------------------------------------------------------------
48  render_dl
49  ---------------------------------------------------------------*/
51 {
52 #if MRPT_HAS_OPENGL_GLUT
53  ASSERT_(m_frequency >= 0);
54 
55  // Enable antialiasing:
56  if (m_antiAliasing)
57  {
62  }
64 
65  glDisable(GL_LIGHTING); // Disable lights when drawing lines
67 
68  for (float y = m_yMin; y <= m_yMax; y += m_frequency)
69  {
72  }
73 
74  for (float x = m_xMin; x <= m_xMax; x += m_frequency)
75  {
78  }
79 
80  glEnd();
82 
83  // End antialiasing:
84  if (m_antiAliasing)
85  {
86  glPopAttrib();
88  }
89 #endif
90 }
91 
94 {
96  out << m_xMin << m_xMax;
97  out << m_yMin << m_yMax << m_plane_z;
98  out << m_frequency;
99  out << m_lineWidth << m_antiAliasing; // v1
100 }
101 
104 {
105  switch (version)
106  {
107  case 0:
108  case 1:
109  {
111  in >> m_xMin >> m_xMax;
112  in >> m_yMin >> m_yMax >> m_plane_z;
113  in >> m_frequency;
114  if (version >= 1)
116  else
117  {
118  m_lineWidth = 1.0f;
119  m_antiAliasing = true;
120  }
121  }
122  break;
123  default:
125  };
127 }
128 
130  mrpt::math::TPoint3D& bb_min, mrpt::math::TPoint3D& bb_max) const
131 {
132  bb_min.x = m_xMin;
133  bb_min.y = m_yMin;
134  bb_min.z = 0;
135 
136  bb_max.x = m_xMax;
137  bb_max.y = m_yMax;
138  bb_max.z = 0;
139 
140  // Convert to coordinates of my parent:
141  m_pose.composePoint(bb_min, bb_min);
142  m_pose.composePoint(bb_max, bb_max);
143 }
GLdouble GLdouble z
Definition: glext.h:3872
A grid of lines over the XY plane.
Definition: CGridPlaneXY.h:32
GLAPI void GLAPIENTRY glEnable(GLenum cap)
void serializeTo(mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive.
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
virtual void render_dl() const override
Render.
EIGEN_STRONG_INLINE void notifyChange() const
Must be called to notify that the object has changed (so, the display list must be updated) ...
STL namespace.
#define GL_ONE_MINUS_SRC_ALPHA
Definition: glew.h:287
GLAPI void GLAPIENTRY glPopAttrib(void)
void getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const override
Evaluates the bounding box of this object (including possible children) in the coordinate frame of th...
#define GL_LIGHTING
Definition: glew.h:385
GLAPI void GLAPIENTRY glLineWidth(GLfloat width)
mrpt::poses::CPose3D m_pose
6D pose wrt the parent coordinate reference.
Definition: CRenderizable.h:57
void serializeFrom(mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive.
GLAPI void GLAPIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor)
unsigned char uint8_t
Definition: rptypes.h:41
A renderizable object suitable for rendering with OpenGL&#39;s display lists.
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
Definition: exceptions.h:90
#define ASSERT_(f)
Defines an assertion mechanism.
Definition: exceptions.h:113
#define GL_COLOR_BUFFER_BIT
Definition: glew.h:265
void writeToStreamRender(mrpt::serialization::CArchive &out) const
#define GL_LINE_SMOOTH
Definition: glew.h:367
double x
X,Y,Z coordinates.
GLAPI void GLAPIENTRY glBegin(GLenum mode)
uint8_t serializeGetVersion() const override
Must return the current versioning number of the object.
#define GL_BLEND
Definition: glew.h:432
GLAPI void GLAPIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z)
CGridPlaneXY(float xMin=-10, float xMax=10, float yMin=-10, float yMax=10, float z=0, float frequency=1, float lineWidth=1.3f, bool antiAliasing=true)
Constructor.
#define GL_SRC_ALPHA
Definition: glew.h:286
static void checkOpenGLError()
Checks glGetError and throws an exception if an error situation is found.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Virtual base class for "archives": classes abstracting I/O streams.
Definition: CArchive.h:48
GLAPI void GLAPIENTRY glPushAttrib(GLbitfield mask)
void composePoint(double lx, double ly, double lz, double &gx, double &gy, double &gz, mrpt::math::CMatrixFixedNumeric< double, 3, 3 > *out_jacobian_df_dpoint=nullptr, mrpt::math::CMatrixFixedNumeric< double, 3, 6 > *out_jacobian_df_dpose=nullptr, mrpt::math::CMatrixFixedNumeric< double, 3, 6 > *out_jacobian_df_dse3=nullptr, bool use_small_rot_approx=false) const
An alternative, slightly more efficient way of doing with G and L being 3D points and P this 6D pose...
Definition: CPose3D.cpp:379
GLuint in
Definition: glext.h:7274
The namespace for 3D scene representation and rendering.
Definition: CGlCanvasBase.h:15
GLAPI void GLAPIENTRY glEnd(void)
GLenum GLint GLint y
Definition: glext.h:3538
#define GL_LINES
Definition: glew.h:273
GLenum GLint x
Definition: glext.h:3538
Lightweight 3D point.
GLAPI void GLAPIENTRY glDisable(GLenum cap)
void readFromStreamRender(mrpt::serialization::CArchive &in)
std::shared_ptr< CGridPlaneXY > Ptr
Definition: CGridPlaneXY.h:34
#define GL_LINE_BIT
Definition: glew.h:253



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at lun oct 28 00:14:14 CET 2019