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);
double x() const
Common members of all points & poses classes.
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL.
GLAPI void GLAPIENTRY glEnable(GLenum cap)
#define IMPLEMENTS_SERIALIZABLE(class_name, base, NameSpace)
This must be inserted in all CSerializable classes implementation files.
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...
double pitch() const
Get the PITCH angle (in radians)
double yaw() const
Get the YAW angle (in radians)
EIGEN_STRONG_INLINE void notifyChange() const
Must be called to notify that the object has changed (so, the display list must be updated) ...
#define GL_ONE_MINUS_SRC_ALPHA
GLsizei GLsizei GLuint * obj
GLubyte GLubyte GLubyte GLubyte w
GLAPI void GLAPIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor)
A renderizable object suitable for rendering with OpenGL's display lists.
void writeToStream(mrpt::utils::CStream &out, int *getVersion) const override
Introduces a pure virtual method responsible for writing to a CStream.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
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...
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
A planar disk in the XY plane.
double x
X,Y,Z coordinates.
double roll() const
Get the ROLL angle (in radians)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
GLdouble GLdouble GLdouble r
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
void checkOpenGLError()
Checks glGetError and throws an exception if an error situation is found.
The namespace for 3D scene representation and rendering.
typedef void(APIENTRYP PFNGLBLENDCOLORPROC)(GLclampf red
GLAPI void GLAPIENTRY glDisable(GLenum cap)
bool traceRay(const mrpt::poses::CPose3D &o, double &dist) const override
Ray tracing.