30 #if MRPT_HAS_OPENGL_GLUT
36 GLUquadricObj*
obj = gluNewQuadric();
38 gluDisk(
obj, m_radiusIn, m_radiusOut, m_nSlices, m_nLoops);
40 gluDeleteQuadric(
obj);
49 writeToStreamRender(out);
50 out << m_radiusIn << m_radiusOut;
51 out << m_nSlices << m_nLoops;
60 readFromStreamRender(
in);
61 in >> m_radiusIn >> m_radiusOut;
81 CPose3D transf = this->m_pose - o;
82 double x = transf.
x(),
y = transf.
y(),
z = transf.z(),
w = transf.
yaw(),
84 double coef = sin(
w) * sin(
r) + cos(
w) * sin(
p) * cos(
r);
90 if (coef == 0)
return false;
95 (
y * (sin(
p) * sin(
w) * cos(
r) - cos(
w) * sin(
r)) +
96 z * cos(
p) * cos(
r)) /
98 if (dist < 0)
return false;
100 double d2 = (
x - dist) * (
x - dist) +
y *
y +
z *
z;
101 return d2 >= (m_radiusIn * m_radiusIn) && d2 <= (m_radiusOut * m_radiusOut);
110 bb_min.
x = -std::max(m_radiusIn, m_radiusOut);
114 bb_max.
x = std::max(m_radiusIn, m_radiusOut);
119 m_pose.composePoint(bb_min, bb_min);
120 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...
uint8_t serializeGetVersion() const override
Must return the current versioning number of the object.
void serializeFrom(mrpt::serialization::CArchive &in, uint8_t serial_version) override
Pure virtual method for reading (deserializing) from an abstract archive.
void serializeTo(mrpt::serialization::CArchive &out) const override
Pure virtual method for writing (serializing) to an abstract archive.
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.
Virtual base class for "archives": classes abstracting I/O streams.
#define MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION(__V)
For use in CSerializable implementations.
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
void checkOpenGLError()
Checks glGetError and throws an exception if an error situation is found.
The namespace for 3D scene representation and rendering.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
double x
X,Y,Z coordinates.