30 #if MRPT_HAS_OPENGL_GLUT
36 GLUquadricObj*
obj = gluNewQuadric();
38 gluDisk(
obj, m_radiusIn, m_radiusOut, m_nSlices, m_nLoops);
40 gluDeleteQuadric(
obj);
56 writeToStreamRender(out);
57 out << m_radiusIn << m_radiusOut;
58 out << m_nSlices << m_nLoops;
72 readFromStreamRender(
in);
73 in >> m_radiusIn >> m_radiusOut;
93 CPose3D transf = this->m_pose - o;
94 double x = transf.
x(),
y = transf.
y(),
z = transf.z(),
w = transf.
yaw(),
96 double coef = sin(
w) * sin(
r) + cos(
w) * sin(
p) * cos(
r);
102 if (coef == 0)
return false;
107 (
y * (sin(
p) * sin(
w) * cos(
r) - cos(
w) * sin(
r)) +
108 z * cos(
p) * cos(
r)) /
110 if (dist < 0)
return false;
112 double d2 = (
x - dist) * (
x - dist) +
y *
y +
z *
z;
113 return d2 >= (m_radiusIn * m_radiusIn) && d2 <= (m_radiusOut * m_radiusOut);
122 bb_min.
x = -std::max(m_radiusIn, m_radiusOut);
126 bb_max.
x = std::max(m_radiusIn, m_radiusOut);
131 m_pose.composePoint(bb_min, bb_min);
132 m_pose.composePoint(bb_max, bb_max);
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
A planar disk in the XY plane.
bool traceRay(const mrpt::poses::CPose3D &o, double &dist) const override
Ray tracing.
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...
void readFromStream(mrpt::utils::CStream &in, int version) override
Introduces a pure virtual method responsible for loading from a CStream This can not be used directly...
void writeToStream(mrpt::utils::CStream &out, int *getVersion) const override
Introduces a pure virtual method responsible for writing to a CStream.
A renderizable object suitable for rendering with OpenGL's display lists.
EIGEN_STRONG_INLINE void notifyChange() const
Must be called to notify that the object has changed (so, the display list must be updated)
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
double pitch() const
Get the PITCH angle (in radians)
double roll() const
Get the ROLL angle (in radians)
double yaw() const
Get the YAW angle (in radians)
double x() const
Common members of all points & poses classes.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
GLAPI void GLAPIENTRY glEnable(GLenum cap)
GLAPI void GLAPIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor)
#define GL_ONE_MINUS_SRC_ALPHA
GLAPI void GLAPIENTRY glDisable(GLenum cap)
GLsizei GLsizei GLuint * obj
GLubyte GLubyte GLubyte GLubyte w
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
GLdouble GLdouble GLdouble r
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
void checkOpenGLError()
Checks glGetError and throws an exception if an error situation is found.
The namespace for 3D scene representation and rendering.
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values,...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
double x
X,Y,Z coordinates.