Main MRPT website > C++ reference for MRPT 1.5.6
List of all members | Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions
mrpt::opengl::CPolyhedron Class Reference

Detailed Description

This class represents arbitrary polyhedra.

The class includes a set of static methods to create common polyhedrons. The class includes many methods to create standard polyhedra, not intended to be fast but to be simple. For example, the dodecahedron is not created efficiently: first, an icosahedron is created, and a duality operator is applied to it, which yields the dodecahedron. This way, code is much smaller, although much slower. This is not a big problem, since polyhedron creation does not usually take a significant amount of time (they are created once and rendered many times). Polyhedra information and models have been gotten from the Wikipedia, http://wikipedia.org

See Also
opengl::COpenGLScene
mrpt::opengl::CPolyhedron
preview_CPolyhedron.png

Definition at line 34 of file CPolyhedron.h.

#include <mrpt/opengl/CPolyhedron.h>

Inheritance diagram for mrpt::opengl::CPolyhedron:
Inheritance graph

Classes

struct  TPolyhedronEdge
 Struct used to store a polyhedron edge. More...
 
struct  TPolyhedronFace
 Struct used to store a polyhedron face. More...
 

Public Member Functions

voidoperator new (size_t size)
 
voidoperator new[] (size_t size)
 
void operator delete (void *ptr) throw ()
 
void operator delete[] (void *ptr) throw ()
 
void operator delete (void *memory, void *ptr) throw ()
 
voidoperator new (size_t size, const std::nothrow_t &) throw ()
 
void operator delete (void *ptr, const std::nothrow_t &) throw ()
 
void getBoundingBox (mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const MRPT_OVERRIDE
 Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent. More...
 
void render_dl () const MRPT_OVERRIDE
 Render. More...
 
bool traceRay (const mrpt::poses::CPose3D &o, double &dist) const MRPT_OVERRIDE
 Ray trace. More...
 
void getVertices (std::vector< mrpt::math::TPoint3D > &vertices) const
 Gets a list with the polyhedron's vertices. More...
 
void getEdges (std::vector< TPolyhedronEdge > &edges) const
 Gets a list with the polyhedron's edges. More...
 
void getFaces (std::vector< TPolyhedronFace > &faces) const
 Gets a list with the polyhedron's faces. More...
 
uint32_t getNumberOfVertices () const
 Gets the amount of vertices. More...
 
uint32_t getNumberOfEdges () const
 Gets the amount of edges. More...
 
uint32_t getNumberOfFaces () const
 Gets the amount of faces. More...
 
void getEdgesLength (std::vector< double > &lengths) const
 Gets a vector with each edge's length. More...
 
void getFacesArea (std::vector< double > &areas) const
 Gets a vector with each face's area. More...
 
double getVolume () const
 Gets the polyhedron volume. More...
 
bool isWireframe () const
 Returns whether the polyhedron will be rendered as a wireframe object. More...
 
void setWireframe (bool enabled=true)
 Sets whether the polyhedron will be rendered as a wireframe object. More...
 
double getLineWidth () const
 Gets the wireframe lines width. More...
 
void setLineWidth (double lineWidth)
 Sets the width used to render lines, when wireframe rendering is activated. More...
 
void getSetOfPolygons (std::vector< math::TPolygon3D > &vec) const
 Gets the polyhedron as a set of polygons. More...
 
void getSetOfPolygonsAbsolute (std::vector< math::TPolygon3D > &vec) const
 Gets the polyhedron as a set of polygons, with the pose transformation already applied. More...
 
bool isClosed () const
 Returns true if the polygon is a completely closed object. More...
 
void makeConvexPolygons ()
 Recomputes polygons, if necessary, so that each one is convex. More...
 
void getCenter (mrpt::math::TPoint3D &center) const
 Gets the center of the polyhedron. More...
 
void updatePolygons () const
 Updates the mutable list of polygons used in rendering and ray tracing. More...
 
CRenderizableDisplayListclone () const
 Interface for the stlplus smart pointer class. More...
 
void render () const MRPT_OVERRIDE
 Render the object, regenerating the display list if needed, otherwise just calling it. More...
 
virtual mxArraywriteToMatlab () const
 Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class. More...
 
mrpt::utils::CObjectPtr duplicateGetSmartPtr () const
 Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). More...
 
Polyhedron special operations.
CPolyhedronPtr getDual () const
 Given a polyhedron, creates its dual. More...
 
CPolyhedronPtr truncate (double factor) const
 Truncates a polyhedron to a given factor. More...
 
CPolyhedronPtr cantellate (double factor) const
 Cantellates a polyhedron to a given factor. More...
 
CPolyhedronPtr augment (double height) const
 Augments a polyhedron to a given height. More...
 
CPolyhedronPtr augment (double height, size_t numVertices) const
 Augments a polyhedron to a given height. More...
 
CPolyhedronPtr augment (bool direction=false) const
 Augments a polyhedron, so that the resulting triangles are equilateral. More...
 
CPolyhedronPtr augment (size_t numVertices, bool direction=false) const
 Augments a polyhedron, so that the resulting triangles are equilateral; affects only faces with certain number of faces. More...
 
CPolyhedronPtr rotate (double angle) const
 Rotates a polyhedron around the Z axis a given amount of radians. More...
 
CPolyhedronPtr scale (double factor) const
 Scales a polyhedron to a given factor. More...
 
Changes the appearance of the object to render (methods from CRenderizable that need to be redefined)
CRenderizablesetColorR_u8 (const uint8_t r) MRPT_OVERRIDE
 Color components in the range [0,255]. More...
 
CRenderizablesetColorG_u8 (const uint8_t g) MRPT_OVERRIDE
 Color components in the range [0,255]. More...
 
CRenderizablesetColorB_u8 (const uint8_t b) MRPT_OVERRIDE
 Color components in the range [0,255]. More...
 
CRenderizablesetColorA_u8 (const uint8_t a) MRPT_OVERRIDE
 Color components in the range [0,255]. More...
 
CRenderizablesetColor_u8 (const mrpt::utils::TColor &c) MRPT_OVERRIDE
 Changes the default object color. More...
 
CRenderizablesetColor_u8 (uint8_t R, uint8_t G, uint8_t B, uint8_t A=255)
 Color components in the range [0,255]. More...
 
Changes the appearance of the object to render
void setName (const std::string &n)
 Changes the name of the object. More...
 
const std::stringgetName () const
 Returns the name of the object. More...
 
bool isVisible () const
 Is the object visible? More...
 
void setVisibility (bool visible=true)
 Set object visibility (default=true) More...
 
void enableShowName (bool showName=true)
 Enables or disables showing the name of the object as a label when rendering. More...
 
bool isShowNameEnabled () const
 
CRenderizablesetPose (const mrpt::poses::CPose3D &o)
 Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More...
 
CRenderizablesetPose (const mrpt::poses::CPose2D &o)
 Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More...
 
CRenderizablesetPose (const mrpt::math::TPose3D &o)
 Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this) More...
 
CRenderizablesetPose (const mrpt::math::TPose2D &o)
 Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this) More...
 
CRenderizablesetPose (const mrpt::poses::CPoint3D &o)
 Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More...
 
CRenderizablesetPose (const mrpt::poses::CPoint2D &o)
 Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More...
 
mrpt::math::TPose3D getPose () const
 Returns the 3D pose of the object as TPose3D. More...
 
const mrpt::poses::CPose3DgetPoseRef () const
 Returns a const ref to the 3D pose of the object as mrpt::poses::CPose3D (which explicitly contains the 3x3 rotation matrix) More...
 
CRenderizablesetLocation (double x, double y, double z)
 Changes the location of the object, keeping untouched the orientation. More...
 
CRenderizablesetLocation (const mrpt::math::TPoint3D &p)
 Changes the location of the object, keeping untouched the orientation. More...
 
double getPoseX () const
 Translation relative to parent coordinate origin. More...
 
double getPoseY () const
 Translation relative to parent coordinate origin. More...
 
double getPoseZ () const
 Translation relative to parent coordinate origin. More...
 
double getPoseYaw () const
 Rotation relative to parent coordinate origin, in DEGREES. More...
 
double getPosePitch () const
 Rotation relative to parent coordinate origin, in DEGREES. More...
 
double getPoseRoll () const
 Rotation relative to parent coordinate origin, in DEGREES. More...
 
double getPoseYawRad () const
 Rotation relative to parent coordinate origin, in radians. More...
 
double getPosePitchRad () const
 Rotation relative to parent coordinate origin, in radians. More...
 
double getPoseRollRad () const
 Rotation relative to parent coordinate origin, in radians. More...
 
double getColorR () const
 Color components in the range [0,1]. More...
 
double getColorG () const
 Color components in the range [0,1]. More...
 
double getColorB () const
 Color components in the range [0,1]. More...
 
double getColorA () const
 Color components in the range [0,1]. More...
 
uint8_t getColorR_u8 () const
 Color components in the range [0,255]. More...
 
uint8_t getColorG_u8 () const
 Color components in the range [0,255]. More...
 
uint8_t getColorB_u8 () const
 Color components in the range [0,255]. More...
 
uint8_t getColorA_u8 () const
 Color components in the range [0,255]. More...
 
CRenderizablesetColorR (const double r)
 Color components in the range [0,1]. More...
 
CRenderizablesetColorG (const double g)
 Color components in the range [0,1]. More...
 
CRenderizablesetColorB (const double b)
 Color components in the range [0,1]. More...
 
CRenderizablesetColorA (const double a)
 Color components in the range [0,1]. More...
 
CRenderizablesetScale (float s)
 Scale to apply to the object, in all three axes (default=1) More...
 
CRenderizablesetScale (float sx, float sy, float sz)
 Scale to apply to the object in each axis (default=1) More...
 
float getScaleX () const
 Get the current scaling factor in one axis. More...
 
float getScaleY () const
 Get the current scaling factor in one axis. More...
 
float getScaleZ () const
 Get the current scaling factor in one axis. More...
 
mrpt::utils::TColorf getColor () const
 Returns the object color property as a TColorf. More...
 
CRenderizablesetColor (const mrpt::utils::TColorf &c)
 
CRenderizablesetColor (double R, double G, double B, double A=1)
 Set the color components of this object (R,G,B,Alpha, in the range 0-1) More...
 
const mrpt::utils::TColorgetColor_u8 () const
 Returns the object color property as a TColor. More...
 

Static Public Member Functions

static voidoperator new (size_t size, void *ptr)
 
static CPolyhedronPtr Create (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< std::vector< uint32_t > > &faces)
 Creation of a polyhedron from its vertices and faces. More...
 
static CPolyhedronPtr Create (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces)
 Creation of a polyhedron from its vertices and faces. More...
 
static CPolyhedronPtr Create (const std::vector< mrpt::math::TPolygon3D > &polys)
 Creation from a set of polygons. More...
 
template<class T >
static size_t getIntersection (const CPolyhedronPtr &p1, const CPolyhedronPtr &p2, T &container)
 Gets the intersection of two polyhedra, either as a set or as a matrix of intersections. More...
 
static CPolyhedronPtr CreateRandomPolyhedron (double radius)
 Creates a random polyhedron from the static methods. More...
 
static void renderTextBitmap (const char *str, void *fontStyle)
 This method is safe for calling from within ::render() methods. More...
 
static void renderTextBitmap (int screen_x, int screen_y, const std::string &str, float color_r=1, float color_g=1, float color_b=1, mrpt::opengl::TOpenGLFont font=mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24)
 Render a text message in the current rendering context, creating a glViewport in the way (do not call within ::render() methods) More...
 
static int textBitmapWidth (const std::string &str, mrpt::opengl::TOpenGLFont font=mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24)
 Return the exact width in pixels for a given string, as will be rendered by renderTextBitmap(). More...
 
Platonic solids.
static CPolyhedronPtr CreateTetrahedron (double radius)
 Creates a regular tetrahedron (see http://en.wikipedia.org/wiki/Tetrahedron). More...
 
static CPolyhedronPtr CreateHexahedron (double radius)
 Creates a regular cube, also called hexahedron (see http://en.wikipedia.org/wiki/Hexahedron). More...
 
static CPolyhedronPtr CreateOctahedron (double radius)
 Creates a regular octahedron (see http://en.wikipedia.org/wiki/Octahedron). More...
 
static CPolyhedronPtr CreateDodecahedron (double radius)
 Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron). More...
 
static CPolyhedronPtr CreateIcosahedron (double radius)
 Creates a regular icosahedron (see http://en.wikipedia.org/wiki/Icosahedron). More...
 
Archimedean solids.
static CPolyhedronPtr CreateTruncatedTetrahedron (double radius)
 Creates a truncated tetrahedron, consisting of four triangular faces and for hexagonal ones (see http://en.wikipedia.org/wiki/Truncated_tetrahedron). More...
 
static CPolyhedronPtr CreateCuboctahedron (double radius)
 Creates a cuboctahedron, consisting of six square faces and eight triangular ones (see http://en.wikipedia.org/wiki/Cuboctahedron). More...
 
static CPolyhedronPtr CreateTruncatedHexahedron (double radius)
 Creates a truncated hexahedron, with six octogonal faces and eight triangular ones (see http://en.wikipedia.org/wiki/Truncated_hexahedron). More...
 
static CPolyhedronPtr CreateTruncatedOctahedron (double radius)
 Creates a truncated octahedron, with eight hexagons and eight squares (see http://en.wikipedia.org/wiki/Truncated_octahedron). More...
 
static CPolyhedronPtr CreateRhombicuboctahedron (double radius, bool type=true)
 Creates a rhombicuboctahedron, with 18 squares and 8 triangles (see http://en.wikipedia.org/wiki/Rhombicuboctahedron), calculated as an elongated square bicupola. More...
 
static CPolyhedronPtr CreateIcosidodecahedron (double radius, bool type=true)
 Creates an icosidodecahedron, with 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Icosidodecahedron). More...
 
static CPolyhedronPtr CreateTruncatedDodecahedron (double radius)
 Creates a truncated dodecahedron, consisting of 12 dodecagons and 20 triangles (see http://en.wikipedia.org/wiki/Truncated_dodecahedron). More...
 
static CPolyhedronPtr CreateTruncatedIcosahedron (double radius)
 Creates a truncated icosahedron, consisting of 20 hexagons and 12 pentagons. More...
 
static CPolyhedronPtr CreateRhombicosidodecahedron (double radius)
 Creates a rhombicosidodecahedron, consisting of 30 squares, 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Rhombicosidodecahedron). More...
 
Other Johnson solids.
static CPolyhedronPtr CreatePentagonalRotunda (double radius)
 Creates a pentagonal rotunda (half an icosidodecahedron), consisting of six pentagons, ten triangles and a decagon (see http://en.wikipedia.org/wiki/Pentagonal_rotunda). More...
 
Catalan solids.
static CPolyhedronPtr CreateTriakisTetrahedron (double radius)
 Creates a triakis tetrahedron, dual to the truncated tetrahedron. More...
 
static CPolyhedronPtr CreateRhombicDodecahedron (double radius)
 Creates a rhombic dodecahedron, dual to the cuboctahedron. More...
 
static CPolyhedronPtr CreateTriakisOctahedron (double radius)
 Creates a triakis octahedron, dual to the truncated hexahedron. More...
 
static CPolyhedronPtr CreateTetrakisHexahedron (double radius)
 Creates a tetrakis hexahedron, dual to the truncated octahedron. More...
 
static CPolyhedronPtr CreateDeltoidalIcositetrahedron (double radius)
 Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron. More...
 
static CPolyhedronPtr CreateRhombicTriacontahedron (double radius)
 Creates a rhombic triacontahedron, dual to the icosidodecahedron. More...
 
static CPolyhedronPtr CreateTriakisIcosahedron (double radius)
 Creates a triakis icosahedron, dual to the truncated dodecahedron. More...
 
static CPolyhedronPtr CreatePentakisDodecahedron (double radius)
 Creates a pentakis dodecahedron, dual to the truncated icosahedron. More...
 
static CPolyhedronPtr CreateDeltoidalHexecontahedron (double radius)
 Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron. More...
 
Customizable polyhedra
static CPolyhedronPtr CreateCubicPrism (double x1, double x2, double y1, double y2, double z1, double z2)
 Creates a cubic prism, given the coordinates of two opposite vertices. More...
 
static CPolyhedronPtr CreateCubicPrism (const mrpt::math::TPoint3D &p1, const mrpt::math::TPoint3D &p2)
 Creates a cubic prism, given two opposite vertices. More...
 
static CPolyhedronPtr CreatePyramid (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height)
 Creates a custom pyramid, using a set of 2D vertices which will lie on the XY plane. More...
 
static CPolyhedronPtr CreateDoublePyramid (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height1, double height2)
 Creates a double pyramid, using a set of 2D vertices which will lie on the XY plane. More...
 
static CPolyhedronPtr CreateTruncatedPyramid (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height, double ratio)
 Creates a truncated pyramid, using a set of vertices which will lie on the XY plane. More...
 
static CPolyhedronPtr CreateFrustum (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height, double ratio)
 This is a synonym for CreateTruncatedPyramid. More...
 
static CPolyhedronPtr CreateCustomPrism (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height)
 Creates a custom prism with vertical edges, given any base which will lie on the XY plane. More...
 
static CPolyhedronPtr CreateCustomAntiprism (const std::vector< mrpt::math::TPoint2D > &bottomBase, const std::vector< mrpt::math::TPoint2D > &topBase, double height)
 Creates a custom antiprism, using two custom bases. More...
 
static CPolyhedronPtr CreateParallelepiped (const mrpt::math::TPoint3D &base, const mrpt::math::TPoint3D &v1, const mrpt::math::TPoint3D &v2, const mrpt::math::TPoint3D &v3)
 Creates a parallelepiped, given a base point and three vectors represented as points. More...
 
static CPolyhedronPtr CreateBifrustum (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height1, double ratio1, double height2, double ratio2)
 Creates a bifrustum, or double truncated pyramid, given a base which will lie on the XY plane. More...
 
static CPolyhedronPtr CreateTrapezohedron (uint32_t numBaseEdges, double baseRadius, double basesDistance)
 Creates a trapezohedron, consisting of 2*N kites, where N is the number of edges in the base. More...
 
static CPolyhedronPtr CreateRegularAntiprism (uint32_t numBaseEdges, double baseRadius, double height)
 Creates an antiprism whose base is a regular polygon. More...
 
static CPolyhedronPtr CreateRegularPrism (uint32_t numBaseEdges, double baseRadius, double height)
 Creates a regular prism whose base is a regular polygon and whose edges are either parallel or perpendicular to the XY plane. More...
 
static CPolyhedronPtr CreateRegularPyramid (uint32_t numBaseEdges, double baseRadius, double height)
 Creates a regular pyramid whose base is a regular polygon. More...
 
static CPolyhedronPtr CreateRegularDoublePyramid (uint32_t numBaseEdges, double baseRadius, double height1, double height2)
 Creates a regular double pyramid whose base is a regular polygon. More...
 
static CPolyhedronPtr CreateArchimedeanRegularPrism (uint32_t numBaseEdges, double baseRadius)
 Creates a regular prism whose lateral area is comprised of squares, and so each face of its is a regular polygon. More...
 
static CPolyhedronPtr CreateArchimedeanRegularAntiprism (uint32_t numBaseEdges, double baseRadius)
 Creates a regular antiprism whose lateral polygons are equilateral triangles, and so each face of its is a regular polygon. More...
 
static CPolyhedronPtr CreateRegularTruncatedPyramid (uint32_t numBaseEdges, double baseRadius, double height, double ratio)
 Creates a regular truncated pyramid whose base is a regular polygon. More...
 
static CPolyhedronPtr CreateRegularFrustum (uint32_t numBaseEdges, double baseRadius, double height, double ratio)
 This is a synonym for CreateRegularTruncatedPyramid. More...
 
static CPolyhedronPtr CreateRegularBifrustum (uint32_t numBaseEdges, double baseRadius, double height1, double ratio1, double height2, double ratio2)
 Creates a bifrustum (double truncated pyramid) whose base is a regular polygon lying in the XY plane. More...
 
static CPolyhedronPtr CreateCupola (uint32_t numBaseEdges, double edgeLength)
 Creates a cupola. More...
 
static CPolyhedronPtr CreateCatalanTrapezohedron (uint32_t numBaseEdges, double height)
 Creates a trapezohedron whose dual is exactly an archimedean antiprism. More...
 
static CPolyhedronPtr CreateCatalanDoublePyramid (uint32_t numBaseEdges, double height)
 Creates a double pyramid whose dual is exactly an archimedean prism. More...
 
static CPolyhedronPtr CreateJohnsonSolidWithConstantBase (uint32_t numBaseEdges, double baseRadius, const std::string &components, size_t shifts=0)
 Creates a series of concatenated solids (most of which are prismatoids) whose base is a regular polygon with a given number of edges. More...
 

Static Public Attributes

static const
mrpt::utils::TRuntimeClassId 
classCObject
 
RTTI stuff
static const
mrpt::utils::TRuntimeClassId 
classCRenderizableDisplayList
 
RTTI stuff
static const
mrpt::utils::TRuntimeClassId 
classCRenderizable
 
RTTI stuff
static const
mrpt::utils::TRuntimeClassId 
classCSerializable
 

Protected Member Functions

void writeToStreamRender (utils::CStream &out) const
 
CSerializable virtual methods
void writeToStream (mrpt::utils::CStream &out, int *getVersion) const
 Introduces a pure virtual method responsible for writing to a CStream. More...
 
void readFromStream (mrpt::utils::CStream &in, int version)
 Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori. More...
 
Methods accesible or implemented by derived classes
EIGEN_STRONG_INLINE void notifyChange () const
 Must be called to notify that the object has changed (so, the display list must be updated) More...
 
virtual bool should_skip_display_list_cache () const
 Optional: If the object has some state in which creating a display list is NOT preferred over direct rendering, implement this method and return "true" in those cases. More...
 
void readFromStreamRender (mrpt::utils::CStream &in)
 

Static Protected Member Functions

static void checkOpenGLError ()
 Checks glGetError and throws an exception if an error situation is found. More...
 
static unsigned int getNewTextureNumber ()
 Returns the lowest next free texture name (avoid using OpenGL's own function since we may call them from different threads and seem it's not cool). More...
 
static void releaseTextureName (unsigned int i)
 

Protected Attributes

std::vector< mrpt::math::TPoint3DmVertices
 List of vertices presents in the polyhedron. More...
 
std::vector< TPolyhedronEdgemEdges
 List of polyhedron's edges. More...
 
std::vector< TPolyhedronFacemFaces
 List of polyhedron's faces. More...
 
bool mWireframe
 This flag determines whether the polyhedron will be displayed as a solid object or as a set of edges. More...
 
double mLineWidth
 When displaying as wireframe object, this variable stores the width of the edges. More...
 
std::vector
< mrpt::math::TPolygonWithPlane
tempPolygons
 Mutable list of actual polygons, maintained for speed. More...
 
bool polygonsUpToDate
 Whether the set of actual polygons is up to date or not. More...
 
std::string m_name
 
bool m_show_name
 
mrpt::utils::TColor m_color
 Color components in the range [0,255]. More...
 
mrpt::poses::CPose3D m_pose
 6D pose wrt the parent coordinate reference. This class automatically holds the cached 3x3 rotation matrix for quick load into opengl stack. More...
 
float m_scale_x
 
float m_scale_y
 
float m_scale_z
 Scale components to apply to the object (default=1) More...
 
bool m_visible
 Is the object visible? (default=true) More...
 

Private Member Functions

bool setNormal (TPolyhedronFace &f, bool doCheck=true)
 Calculates the normal vector to a face. More...
 
void addEdges (const TPolyhedronFace &e)
 Adds, to the existing list of edges, each edge in a given face. More...
 
size_t edgesInVertex (size_t vertex) const
 Returns how many edges converge in a given vertex. More...
 
size_t facesInVertex (size_t vertex) const
 Returns how many faces converge in a given vertex. More...
 
 CPolyhedron ()
 Basic empty constructor. More...
 
 CPolyhedron (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces, bool doCheck=true)
 Basic constructor with a list of vertices and another of faces, checking for correctness. More...
 
virtual ~CPolyhedron ()
 Destructor. More...
 

Static Private Member Functions

static std::vector
< mrpt::math::TPoint2D
generateBase (uint32_t numBaseEdges, double baseRadius)
 Generates a list of 2D vertices constituting a regular polygon. More...
 
static std::vector
< mrpt::math::TPoint2D
generateShiftedBase (uint32_t numBaseEdges, double baseRadius)
 Generates a list of 2D vertices constituting a regular polygon, with an angle shift which makes it suitable for antiprisms. More...
 
static void generateBase (uint32_t numBaseEdges, double baseRadius, double height, std::vector< mrpt::math::TPoint3D > &vec)
 Generates a list of 3D vertices constituting a regular polygon, appending it to an existing vector. More...
 
static void generateShiftedBase (uint32_t numBaseEdges, double baseRadius, double height, double shift, std::vector< mrpt::math::TPoint3D > &vec)
 Generates a list of 3D vertices constituting a regular polygon conveniently shifted, appending it to an existing vector. More...
 
static bool checkConsistence (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces)
 Checks whether a set of faces is suitable for a set of vertices. More...
 
static CPolyhedronPtr CreateNoCheck (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces)
 Creates a polyhedron without checking its correctness. More...
 
static CPolyhedronPtr CreateEmpty ()
 Creates an empty Polyhedron. More...
 

RTTI stuff

typedef CPolyhedronPtr Ptr
 
typedef CPolyhedronPtr ConstPtr
 
static mrpt::utils::CLASSINIT _init_CPolyhedron
 
static mrpt::utils::TRuntimeClassId classCPolyhedron
 
static const
mrpt::utils::TRuntimeClassId
classinfo
 
static const
mrpt::utils::TRuntimeClassId
_GetBaseClass ()
 
virtual const
mrpt::utils::TRuntimeClassId
GetRuntimeClass () const
 Returns information about the class of an object in runtime. More...
 
virtual mrpt::utils::CObjectduplicate () const
 Returns a copy of the object, indepently of its class. More...
 
static mrpt::utils::CObjectCreateObject ()
 
static CPolyhedronPtr Create ()
 

Member Typedef Documentation

typedef CPolyhedronPtr mrpt::opengl::CPolyhedron::ConstPtr

Definition at line 35 of file CPolyhedron.h.

typedef CPolyhedronPtr mrpt::opengl::CPolyhedron::Ptr

A typedef for the associated smart pointer

Definition at line 35 of file CPolyhedron.h.

Constructor & Destructor Documentation

mrpt::opengl::CPolyhedron::CPolyhedron ( )
inlineprivate

Basic empty constructor.

Definition at line 681 of file CPolyhedron.h.

mrpt::opengl::CPolyhedron::CPolyhedron ( const std::vector< mrpt::math::TPoint3D > &  vertices,
const std::vector< TPolyhedronFace > &  faces,
bool  doCheck = true 
)
inlineprivate

Basic constructor with a list of vertices and another of faces, checking for correctness.

Definition at line 685 of file CPolyhedron.h.

virtual mrpt::opengl::CPolyhedron::~CPolyhedron ( )
inlineprivatevirtual

Destructor.

Definition at line 697 of file CPolyhedron.h.

Member Function Documentation

static const mrpt::utils::TRuntimeClassId* mrpt::opengl::CPolyhedron::_GetBaseClass ( )
staticprotected
void CPolyhedron::addEdges ( const TPolyhedronFace e)
private
CPolyhedronPtr CPolyhedron::augment ( double  height) const

Augments a polyhedron to a given height.

This operation is roughly dual to the truncation: given a body P, the operation dtdP and aP yield resembling results.

See Also
getDual,truncate,cantellate

Definition at line 1157 of file CPolyhedron.cpp.

References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::augment ( double  height,
size_t  numVertices 
) const
CPolyhedronPtr CPolyhedron::augment ( bool  direction = false) const

Augments a polyhedron, so that the resulting triangles are equilateral.

If the argument is true, triangles are "cut" from the polyhedron, instead of being added.

Exceptions
std::logic_errora non-regular face has been found.
See Also
augment(double) const

Definition at line 1244 of file CPolyhedron.cpp.

References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), getHeight(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::augment ( size_t  numVertices,
bool  direction = false 
) const

Augments a polyhedron, so that the resulting triangles are equilateral; affects only faces with certain number of faces.

If the second argument is true, triangles are "cut" from the polyhedron.

Exceptions
std::logic_errora non-regular face has been found.
See Also
augment(double) const

Definition at line 1284 of file CPolyhedron.cpp.

References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), getHeight(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::cantellate ( double  factor) const

Cantellates a polyhedron to a given factor.

See Also
getDual,truncate,augment

Definition at line 1091 of file CPolyhedron.cpp.

References begin(), and searchForEdge().

bool CPolyhedron::checkConsistence ( const std::vector< mrpt::math::TPoint3D > &  vertices,
const std::vector< TPolyhedronFace > &  faces 
)
staticprivate

Checks whether a set of faces is suitable for a set of vertices.

Definition at line 1425 of file CPolyhedron.cpp.

void CRenderizable::checkOpenGLError ( )
staticprotectedinherited
CRenderizableDisplayList* mrpt::opengl::CRenderizableDisplayList::clone ( ) const
inlineinherited

Interface for the stlplus smart pointer class.

Definition at line 71 of file CRenderizableDisplayList.h.

static CPolyhedronPtr mrpt::opengl::CPolyhedron::Create ( )
static
CPolyhedronPtr CPolyhedron::Create ( const std::vector< mrpt::math::TPoint3D > &  vertices,
const std::vector< std::vector< uint32_t > > &  faces 
)
static

Creation of a polyhedron from its vertices and faces.

Exceptions
logic_errorif the polyhedron definition has flaws (bad vertex indices, etc.).

Definition at line 1543 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::Create ( const std::vector< mrpt::math::TPoint3D > &  vertices,
const std::vector< TPolyhedronFace > &  faces 
)
static

Creation of a polyhedron from its vertices and faces.

Exceptions
logic_errorif the polyhedron definition has flaws (bad vertex indices, etc.).

Definition at line 1552 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron.

CPolyhedronPtr CPolyhedron::Create ( const std::vector< mrpt::math::TPolygon3D > &  polys)
static

Creation from a set of polygons.

See Also
mrpt::math::TPolygon3D

Definition at line 370 of file CPolyhedron.cpp.

References getVerticesAndFaces().

CPolyhedronPtr CPolyhedron::CreateArchimedeanRegularAntiprism ( uint32_t  numBaseEdges,
double  baseRadius 
)
static

Creates a regular antiprism whose lateral polygons are equilateral triangles, and so each face of its is a regular polygon.

Due to vertex transitivity, the resulting object is always archimedean.

See Also
CreateRegularAntiprism,CreateCustomAntiprism

Definition at line 1658 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateArchimedeanRegularPrism ( uint32_t  numBaseEdges,
double  baseRadius 
)
static

Creates a regular prism whose lateral area is comprised of squares, and so each face of its is a regular polygon.

Due to vertex transitivity, the resulting object is always archimedean.

See Also
CreateRegularPrism,CreateCustomPrism

Definition at line 1655 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateBifrustum ( const std::vector< mrpt::math::TPoint2D > &  baseVertices,
double  height1,
double  ratio1,
double  height2,
double  ratio2 
)
static

Creates a bifrustum, or double truncated pyramid, given a base which will lie on the XY plane.

See Also
CreateFrustum,CreateDoublePyramid

Definition at line 531 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateCatalanDoublePyramid ( uint32_t  numBaseEdges,
double  height 
)
static

Creates a double pyramid whose dual is exactly an archimedean prism.

Creates an octahedron if numBaseEdges is equal to 4.

Todo:
Actually resulting height is significantly higher than that passed to the algorithm.
See Also
CreateDoublePyramid,CreateArchimedeanRegularPrism,getDual

Definition at line 1676 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateCatalanTrapezohedron ( uint32_t  numBaseEdges,
double  height 
)
static

Creates a trapezohedron whose dual is exactly an archimedean antiprism.

Creates a cube if numBaseEdges is equal to 3.

Todo:
Actually resulting height is significantly higher than that passed to the algorithm.
See Also
CreateTrapezohedron,CreateArchimedeanRegularAntiprism,getDual

Definition at line 1673 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateCubicPrism ( double  x1,
double  x2,
double  y1,
double  y2,
double  z1,
double  z2 
)
static

Creates a cubic prism, given the coordinates of two opposite vertices.

Each edge will be parallel to one of the coordinate axes, although the orientation may change by assigning a pose to the object.

See Also
CreateCubicPrism(const mrpt::math::TPoint3D &,const mrpt::math::TPoint3D &),CreateParallelepiped,CreateCustomPrism,CreateRegularPrism,CreateArchimedeanRegularPrism

Definition at line 377 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by mrpt::opengl::stock_objects::BumblebeeCamera().

CPolyhedronPtr CPolyhedron::CreateCubicPrism ( const mrpt::math::TPoint3D p1,
const mrpt::math::TPoint3D p2 
)
static
CPolyhedronPtr CPolyhedron::CreateCuboctahedron ( double  radius)
static

Creates a cuboctahedron, consisting of six square faces and eight triangular ones (see http://en.wikipedia.org/wiki/Cuboctahedron).

There are several ways to create a cuboctahedron:

  • Hexahedron truncated to a certain extent.
  • Octahedron truncated to a certain extent.
  • Cantellated tetrahedron
  • Dual to a rhombic dodecahedron.
See Also
CreateHexahedron,CreateOctahedron,truncate,CreateTetrahedron,cantellate,CreateRhombicuboctahedron,CreateRhombicDodecahedron,

Definition at line 1580 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateCupola ( uint32_t  numBaseEdges,
double  edgeLength 
)
static

Creates a cupola.

Exceptions
std::logic_errorif the number of edges is odd or less than four.

Definition at line 1670 of file CPolyhedron.cpp.

References M_PI.

CPolyhedronPtr CPolyhedron::CreateCustomAntiprism ( const std::vector< mrpt::math::TPoint2D > &  bottomBase,
const std::vector< mrpt::math::TPoint2D > &  topBase,
double  height 
)
static

Creates a custom antiprism, using two custom bases.

For better results, the top base should be slightly rotated with respect to the bottom one.

See Also
CreateCustomPrism,CreateRegularAntiprism,CreateArchimedeanRegularAntiprism

Definition at line 467 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateCustomPrism ( const std::vector< mrpt::math::TPoint2D > &  baseVertices,
double  height 
)
static

Creates a custom prism with vertical edges, given any base which will lie on the XY plane.

See Also
CreateCubicPrism,CreateCustomAntiprism,CreateRegularPrism,CreateArchimedeanRegularPrism

Definition at line 1640 of file CPolyhedron.cpp.

Referenced by mrpt::opengl::stock_objects::RobotGiraff(), and mrpt::opengl::stock_objects::RobotRhodon().

CPolyhedronPtr CPolyhedron::CreateDeltoidalHexecontahedron ( double  radius)
static

Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron.

This body consists of 60 kites (see http://en.wikipedia.org/wiki/Deltoidal_hexecontahedron).

See Also
CreateRhombicosidodecahedron

Definition at line 1631 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateDeltoidalIcositetrahedron ( double  radius)
static

Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron.

This body consists of 24 kites (see http://en.wikipedia.org/wiki/Deltoidal_icositetrahedron).

See Also
CreateRhombicuboctahedron

Definition at line 1619 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateDodecahedron ( double  radius)
static

Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron).

The dodecahedron is created as the dual to an icosahedron.

See Also
CreateIcosahedron,getDual,CreateTruncatedDodecahedron,CreateTruncatedIcosahedron,CreateIcosidodecahedron,CreateRhombicosidodecahedron

Definition at line 1568 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateDoublePyramid ( const std::vector< mrpt::math::TPoint2D > &  baseVertices,
double  height1,
double  height2 
)
static

Creates a double pyramid, using a set of 2D vertices which will lie on the XY plane.

The second height is used with the downwards pointing pyramid, so that it will effectively point downwards if it's positive.

See Also
CreatePyramid,CreateBifrustum,CreateRegularDoublePyramid

Definition at line 414 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateEmpty ( )
staticprivate

Creates an empty Polyhedron.

Definition at line 1684 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron.

CPolyhedronPtr CPolyhedron::CreateFrustum ( const std::vector< mrpt::math::TPoint2D > &  baseVertices,
double  height,
double  ratio 
)
static

This is a synonym for CreateTruncatedPyramid.

See Also
CreateTruncatedPyramid

Definition at line 1637 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateHexahedron ( double  radius)
static

Creates a regular cube, also called hexahedron (see http://en.wikipedia.org/wiki/Hexahedron).

The hexahedron is created as a cubic prism which transitive edges. Another ways to create it include:

  • Dual to an octahedron.
  • Parallelepiped with three orthogonal, equally-lengthed vectors.
  • Triangular trapezohedron with proper height.
See Also
CreateOctahedron,getDual,CreateParallelepiped,CreateTrapezohedron,CreateTruncatedHexahedron,CreateTruncatedOctahedron,CreateCuboctahedron,CreateRhombicuboctahedron

Definition at line 1560 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateIcosahedron ( double  radius)
static

Creates a regular icosahedron (see http://en.wikipedia.org/wiki/Icosahedron).

The icosahedron is created as a gyroelongated pentagonal bipyramid with transitive edges, and it's the dual to a dodecahedron.

See Also
CreateJohnsonSolidWithConstantBase,CreateDodecahedron,getDual,CreateTruncatedIcosahedron,CreateTruncatedDodecahedron,CreateIcosidodecahedron,CreateRhombicosidodecahedron

Definition at line 1571 of file CPolyhedron.cpp.

References M_PI, and mrpt::math::square().

CPolyhedronPtr CPolyhedron::CreateIcosidodecahedron ( double  radius,
bool  type = true 
)
static

Creates an icosidodecahedron, with 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Icosidodecahedron).

Certain truncations of either a dodecahedron or an icosahedron yield an icosidodecahedron. The dual of the icosidodecahedron is the rhombic triacontahedron. If the second argument is set to false, the lower rotunda is rotated. In this case, the object created is a pentagonal orthobirotunda (see http://en.wikipedia.org/wiki/Pentagonal_orthobirotunda). This object presents symmetry against the XY plane and is not vertex transitive, so it's a Johnson's solid.

See Also
CreateDodecahedron,CreateIcosahedron,truncate,CreateRhombicosidodecahedron,CreateRhombicTriacontahedron

Definition at line 1592 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateJohnsonSolidWithConstantBase ( uint32_t  numBaseEdges,
double  baseRadius,
const std::string components,
size_t  shifts = 0 
)
static

Creates a series of concatenated solids (most of which are prismatoids) whose base is a regular polygon with a given number of edges.

Every face of the resulting body will be a regular polygon, so it is a Johnson solid; in special cases, it may be archimedean or even platonic. The shape of the body is defined by the string argument, which can include one or more of the following:

StringBodyRestrictions
P+Upward pointing pyramidMust be the last object, vertex number cannot surpass 5
P-Downward pointing pyramidMust be the first object, vertex number cannot surpass 5
C+Upward pointing cupolaMust be the last object, vertex number must be an even number in the range 4-10.
C-Downward pointing cupolaMust be the first object, vertex number must be an even number in the range 4-10.
GC+Upward pointing cupola, rotatedMust be the last object, vertex number must be an even number in the range 4-10.
GC-Downward pointing cupola, rotatedMust be the first object, vertex number must be an even number in the range 4-10.
PRArchimedean prismCannot abut other prism
AArchimedean antiprismNone
R+Upward pointing rotundaMust be the last object, vertex number must be exactly 10
R-Downward pointing rotundaMust be the first object, vertex number must be exactly 10
GR+Upward pointing rotunda, rotatedMust be the last object, vertex number must be exactly 10
GR-Downward pointing rotundaMust be the first object, vertex number must be exactly 10

Some examples of bodies are:

StringVerticesResulting body
P+3Tetrahedron
PR4Hexahedron
P-P+4Octahedron
A3Octahedron
C+PRC-8Rhombicuboctahedron
P-AP+5Icosahedron
R-R+10Icosidodecahedron

Definition at line 620 of file CPolyhedron.cpp.

References additionalFaces(), additionalVertices(), analyzeJohnsonPartsString(), ANTIPRISM, DOWNWARDS_CUPOLA, DOWNWARDS_PYRAMID, DOWNWARDS_ROTUNDA, INF_NO_BODY, insertCupola(), insertRotunda(), M_PI, PRISM, ROTATED_DOWNWARDS_CUPOLA, ROTATED_DOWNWARDS_ROTUNDA, ROTATED_UPWARDS_CUPOLA, ROTATED_UPWARDS_ROTUNDA, mrpt::math::square(), SUP_NO_BODY, UPWARDS_CUPOLA, UPWARDS_PYRAMID, UPWARDS_ROTUNDA, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateNoCheck ( const std::vector< mrpt::math::TPoint3D > &  vertices,
const std::vector< TPolyhedronFace > &  faces 
)
staticprivate

Creates a polyhedron without checking its correctness.

Definition at line 1680 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron.

static mrpt::utils::CObject* mrpt::opengl::CPolyhedron::CreateObject ( )
static
CPolyhedronPtr CPolyhedron::CreateOctahedron ( double  radius)
static

Creates a regular octahedron (see http://en.wikipedia.org/wiki/Octahedron).

The octahedron is created as a square bipyramid whit transitive edges and vertices. Another ways to create an octahedron are:

  • Dual to an hexahedron
  • Triangular antiprism with transitive vertices.
  • Conveniently truncated tetrahedron.
See Also
CreateHexahedron,getDual,CreateArchimedeanAntiprism,CreateTetrahedron,truncate,CreateTruncatedOctahedron,CreateTruncatedHexahedron,CreateCuboctahedron,CreateRhombicuboctahedron

Definition at line 1565 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateParallelepiped ( const mrpt::math::TPoint3D base,
const mrpt::math::TPoint3D v1,
const mrpt::math::TPoint3D v2,
const mrpt::math::TPoint3D v3 
)
static

Creates a parallelepiped, given a base point and three vectors represented as points.

See Also
CreateCubicPrism

Definition at line 497 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreatePentagonalRotunda ( double  radius)
static

Creates a pentagonal rotunda (half an icosidodecahedron), consisting of six pentagons, ten triangles and a decagon (see http://en.wikipedia.org/wiki/Pentagonal_rotunda).

See Also
CreateIcosidodecahedron,CreateJohnsonSolidWithConstantBase

Definition at line 1604 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreatePentakisDodecahedron ( double  radius)
static

Creates a pentakis dodecahedron, dual to the truncated icosahedron.

This body consists of 60 isosceles triangles (see http://en.wikipedia.org/wiki/Pentakis_dodecahedron).

See Also
CreateTruncatedIcosahedron

Definition at line 1628 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreatePyramid ( const std::vector< mrpt::math::TPoint2D > &  baseVertices,
double  height 
)
static

Creates a custom pyramid, using a set of 2D vertices which will lie on the XY plane.

See Also
CreateDoublePyramid,CreateFrustum,CreateBifrustum,CreateRegularPyramid

Definition at line 391 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateRandomPolyhedron ( double  radius)
static

Creates a random polyhedron from the static methods.

Definition at line 895 of file CPolyhedron.cpp.

References mrpt::random::randomGenerator.

CPolyhedronPtr CPolyhedron::CreateRegularAntiprism ( uint32_t  numBaseEdges,
double  baseRadius,
double  height 
)
static

Creates an antiprism whose base is a regular polygon.

The upper base is rotated $\frac\pi N$ with respect to the lower one, where N is the number of vertices in the base, and thus the lateral triangles are isosceles.

See Also
CreateCustomAntiprism,CreateArchimedeanRegularAntiprism

Definition at line 1643 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRegularBifrustum ( uint32_t  numBaseEdges,
double  baseRadius,
double  height1,
double  ratio1,
double  height2,
double  ratio2 
)
static

Creates a bifrustum (double truncated pyramid) whose base is a regular polygon lying in the XY plane.

See Also
CreateBifrustum

Definition at line 1667 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRegularDoublePyramid ( uint32_t  numBaseEdges,
double  baseRadius,
double  height1,
double  height2 
)
static

Creates a regular double pyramid whose base is a regular polygon.

See Also
CreateDoublePyramid

Definition at line 1652 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRegularFrustum ( uint32_t  numBaseEdges,
double  baseRadius,
double  height,
double  ratio 
)
static

This is a synonym for CreateRegularTruncatedPyramid.

See Also
CreateRegularTruncatedPyramid

Definition at line 1664 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRegularPrism ( uint32_t  numBaseEdges,
double  baseRadius,
double  height 
)
static

Creates a regular prism whose base is a regular polygon and whose edges are either parallel or perpendicular to the XY plane.

See Also
CreateCubicPrism,CreateCustomPrism,CreateArchimedeanRegularAntiprism

Definition at line 1646 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRegularPyramid ( uint32_t  numBaseEdges,
double  baseRadius,
double  height 
)
static

Creates a regular pyramid whose base is a regular polygon.

See Also
CreatePyramid

Definition at line 1649 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRegularTruncatedPyramid ( uint32_t  numBaseEdges,
double  baseRadius,
double  height,
double  ratio 
)
static

Creates a regular truncated pyramid whose base is a regular polygon.

See Also
CreateTruncatedPyramid

Definition at line 1661 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRhombicDodecahedron ( double  radius)
static

Creates a rhombic dodecahedron, dual to the cuboctahedron.

This body consists of 12 rhombi (see http://en.wikipedia.org/wiki/Rhombic_dodecahedron).

See Also
CreateCuboctahedron

Definition at line 1610 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRhombicosidodecahedron ( double  radius)
static

Creates a rhombicosidodecahedron, consisting of 30 squares, 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Rhombicosidodecahedron).

This object can be obtained as the cantellation of either a dodecahedron or an icosahedron. The dual of the rhombicosidodecahedron is the deltoidal hexecontahedron.

See Also
CreateDodecahedron,CreateIcosahedron,CreateIcosidodecahedron,CreateDeltoidalHexecontahedron

Definition at line 1601 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRhombicTriacontahedron ( double  radius)
static

Creates a rhombic triacontahedron, dual to the icosidodecahedron.

This body consists of 30 rhombi (see http://en.wikipedia.org/wiki/Rhombic_triacontahedron).

See Also
CreateIcosidodecahedron

Definition at line 1622 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateRhombicuboctahedron ( double  radius,
bool  type = true 
)
static

Creates a rhombicuboctahedron, with 18 squares and 8 triangles (see http://en.wikipedia.org/wiki/Rhombicuboctahedron), calculated as an elongated square bicupola.

It can also be calculated as a cantellated hexahedron or octahedron, and its dual is the deltoidal icositetrahedron. If the second argument is set to false, the lower cupola is rotated, so that the objet created is an elongated square gyrobicupola (see http://en.wikipedia.org/wiki/Elongated_square_gyrobicupola). This is not an archimedean solid, but a Johnson one, since it hasn't got vertex transitivity.

See Also
CreateJohnsonSolidWithConstantBase,CreateHexahedron,CreateOctahedron,cantellate,CreateCuboctahedron,CreateDeltoidalIcositetrahedron

Definition at line 1589 of file CPolyhedron.cpp.

References M_PI, and mrpt::math::square().

CPolyhedronPtr CPolyhedron::CreateTetrahedron ( double  radius)
static

Creates a regular tetrahedron (see http://en.wikipedia.org/wiki/Tetrahedron).

The tetrahedron is created as a triangular pyramid whose edges and vertices are transitive. The tetrahedron is the dual to itself.

See Also
CreatePyramid,CreateJohnsonSolidWithConstantBase,CreateTruncatedTetrahedron

Definition at line 1555 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTetrakisHexahedron ( double  radius)
static

Creates a tetrakis hexahedron, dual to the truncated octahedron.

This body consists of 24 isosceles triangles (see http://en.wikipedia.org/wiki/Tetrakis_hexahedron).

See Also
CreateTruncatedOctahedron

Definition at line 1616 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTrapezohedron ( uint32_t  numBaseEdges,
double  baseRadius,
double  basesDistance 
)
static

Creates a trapezohedron, consisting of 2*N kites, where N is the number of edges in the base.

The base radius controls the polyhedron height, whilst the distance between bases affects the height. When the number of edges equals 3, the polyhedron is actually a parallelepiped, and it can even be a cube.

Definition at line 572 of file CPolyhedron.cpp.

References M_PI, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateTriakisIcosahedron ( double  radius)
static

Creates a triakis icosahedron, dual to the truncated dodecahedron.

This body consists of 60 isosceles triangles http://en.wikipedia.org/wiki/Triakis_icosahedron).

See Also
CreateTruncatedDodecahedron

Definition at line 1625 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTriakisOctahedron ( double  radius)
static

Creates a triakis octahedron, dual to the truncated hexahedron.

This body consists of 24 isosceles triangles (see http://en.wikipedia.org/wiki/Triakis_octahedron).

See Also
CreateTruncatedHexahedron

Definition at line 1613 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTriakisTetrahedron ( double  radius)
static

Creates a triakis tetrahedron, dual to the truncated tetrahedron.

This body consists of 12 isosceles triangles (see http://en.wikipedia.org/wiki/Triakis_tetrahedron).

See Also
CreateTruncatedTetrahedron

Definition at line 1607 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTruncatedDodecahedron ( double  radius)
static

Creates a truncated dodecahedron, consisting of 12 dodecagons and 20 triangles (see http://en.wikipedia.org/wiki/Truncated_dodecahedron).

The truncated dodecahedron is the dual to the triakis icosahedron.

See Also
CreateDodecahedron,CreateTriakisIcosahedron

Definition at line 1595 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTruncatedHexahedron ( double  radius)
static

Creates a truncated hexahedron, with six octogonal faces and eight triangular ones (see http://en.wikipedia.org/wiki/Truncated_hexahedron).

The truncated octahedron is dual to the triakis octahedron.

See Also
CreateHexahedron,CreateTriakisOctahedron

Definition at line 1583 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTruncatedIcosahedron ( double  radius)
static

Creates a truncated icosahedron, consisting of 20 hexagons and 12 pentagons.

This object resembles a typical soccer ball (see http://en.wikipedia.org/wiki/Truncated_icosahedron). The pentakis dodecahedron is the dual to the truncated icosahedron.

See Also
CreateIcosahedron,CreatePentakisDodecahedron

Definition at line 1598 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTruncatedOctahedron ( double  radius)
static

Creates a truncated octahedron, with eight hexagons and eight squares (see http://en.wikipedia.org/wiki/Truncated_octahedron).

It's the dual to the tetrakis hexahedron.

See Also
CreateOctahedron,CreateTetrakisHexahedron

Definition at line 1586 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::CreateTruncatedPyramid ( const std::vector< mrpt::math::TPoint2D > &  baseVertices,
double  height,
double  ratio 
)
static

Creates a truncated pyramid, using a set of vertices which will lie on the XY plane.

Do not try to use with a ratio equal to zero; use CreatePyramid instead. When using a ratio of 1, it will create a Prism.

See Also
CreatePyramid,CreateBifrustum

Definition at line 441 of file CPolyhedron.cpp.

References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

CPolyhedronPtr CPolyhedron::CreateTruncatedTetrahedron ( double  radius)
static

Creates a truncated tetrahedron, consisting of four triangular faces and for hexagonal ones (see http://en.wikipedia.org/wiki/Truncated_tetrahedron).

Its dual is the triakis tetrahedron.

See Also
CreateTetrahedron,CreateTriakisTetrahedron

Definition at line 1577 of file CPolyhedron.cpp.

virtual mrpt::utils::CObject* mrpt::opengl::CPolyhedron::duplicate ( ) const
virtual

Returns a copy of the object, indepently of its class.

Implements mrpt::utils::CObject.

mrpt::utils::CObjectPtr mrpt::utils::CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).

Definition at line 140 of file CObject.h.

Referenced by mrpt::obs::CRawlog::addActions(), mrpt::slam::CIncrementalMapPartitioner::addMapFrame(), and mrpt::obs::CRawlog::addObservations().

size_t CPolyhedron::edgesInVertex ( size_t  vertex) const
private

Returns how many edges converge in a given vertex.

Definition at line 1435 of file CPolyhedron.cpp.

void mrpt::opengl::CRenderizable::enableShowName ( bool  showName = true)
inlineinherited

Enables or disables showing the name of the object as a label when rendering.

Definition at line 69 of file CRenderizable.h.

size_t CPolyhedron::facesInVertex ( size_t  vertex) const
private

Returns how many faces converge in a given vertex.

Definition at line 1441 of file CPolyhedron.cpp.

References mrpt::utils::find().

vector< TPoint2D > CPolyhedron::generateBase ( uint32_t  numBaseEdges,
double  baseRadius 
)
staticprivate

Generates a list of 2D vertices constituting a regular polygon.

Definition at line 1356 of file CPolyhedron.cpp.

References M_PI.

void CPolyhedron::generateBase ( uint32_t  numBaseEdges,
double  baseRadius,
double  height,
std::vector< mrpt::math::TPoint3D > &  vec 
)
staticprivate

Generates a list of 3D vertices constituting a regular polygon, appending it to an existing vector.

Definition at line 1377 of file CPolyhedron.cpp.

References M_PI.

vector< TPoint2D > CPolyhedron::generateShiftedBase ( uint32_t  numBaseEdges,
double  baseRadius 
)
staticprivate

Generates a list of 2D vertices constituting a regular polygon, with an angle shift which makes it suitable for antiprisms.

Definition at line 1366 of file CPolyhedron.cpp.

References M_PI.

void CPolyhedron::generateShiftedBase ( uint32_t  numBaseEdges,
double  baseRadius,
double  height,
double  shift,
std::vector< mrpt::math::TPoint3D > &  vec 
)
staticprivate

Generates a list of 3D vertices constituting a regular polygon conveniently shifted, appending it to an existing vector.

Definition at line 1384 of file CPolyhedron.cpp.

References M_PI.

void CPolyhedron::getBoundingBox ( mrpt::math::TPoint3D bb_min,
mrpt::math::TPoint3D bb_max 
) const
virtual

Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent.

Implements mrpt::opengl::CRenderizable.

Definition at line 1494 of file CPolyhedron.cpp.

References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

void CPolyhedron::getCenter ( mrpt::math::TPoint3D center) const

Gets the center of the polyhedron.

Definition at line 881 of file CPolyhedron.cpp.

References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

mrpt::utils::TColorf mrpt::opengl::CRenderizable::getColor ( ) const
inlineinherited

Returns the object color property as a TColorf.

Definition at line 126 of file CRenderizable.h.

Referenced by mrpt::maps::COctoMap::getAsOctoMapVoxels(), and mrpt::maps::CColouredOctoMap::getAsOctoMapVoxels().

const mrpt::utils::TColor& mrpt::opengl::CRenderizable::getColor_u8 ( ) const
inlineinherited

Returns the object color property as a TColor.

Definition at line 135 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getColorA ( ) const
inlineinherited

Color components in the range [0,1].

Definition at line 102 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

uint8_t mrpt::opengl::CRenderizable::getColorA_u8 ( ) const
inlineinherited

Color components in the range [0,255].

Definition at line 107 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getColorB ( ) const
inlineinherited

Color components in the range [0,1].

Definition at line 101 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

uint8_t mrpt::opengl::CRenderizable::getColorB_u8 ( ) const
inlineinherited

Color components in the range [0,255].

Definition at line 106 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getColorG ( ) const
inlineinherited

Color components in the range [0,1].

Definition at line 100 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

uint8_t mrpt::opengl::CRenderizable::getColorG_u8 ( ) const
inlineinherited

Color components in the range [0,255].

Definition at line 105 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getColorR ( ) const
inlineinherited

Color components in the range [0,1].

Definition at line 99 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

uint8_t mrpt::opengl::CRenderizable::getColorR_u8 ( ) const
inlineinherited

Color components in the range [0,255].

Definition at line 104 of file CRenderizable.h.

CPolyhedronPtr CPolyhedron::getDual ( ) const

Given a polyhedron, creates its dual.

See Also
truncate,cantellate,augment
Exceptions
std::logic_errorCan't get the dual to this polyhedron.

Definition at line 935 of file CPolyhedron.cpp.

References mrpt::math::TPlane::coefs, faceContainsEdge(), getPlanesIntersection(), mrpt::math::square(), mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

void mrpt::opengl::CPolyhedron::getEdges ( std::vector< TPolyhedronEdge > &  edges) const
inline

Gets a list with the polyhedron's edges.

Definition at line 484 of file CPolyhedron.h.

void CPolyhedron::getEdgesLength ( std::vector< double > &  lengths) const

Gets a vector with each edge's length.

Definition at line 821 of file CPolyhedron.cpp.

void mrpt::opengl::CPolyhedron::getFaces ( std::vector< TPolyhedronFace > &  faces) const
inline

Gets a list with the polyhedron's faces.

Definition at line 490 of file CPolyhedron.h.

void CPolyhedron::getFacesArea ( std::vector< double > &  areas) const

Gets a vector with each face's area.

Won't work properly if the polygons are not convex.

Definition at line 827 of file CPolyhedron.cpp.

template<class T >
size_t mrpt::opengl::CPolyhedron::getIntersection ( const CPolyhedronPtr &  p1,
const CPolyhedronPtr &  p2,
T &  container 
)
inlinestatic

Gets the intersection of two polyhedra, either as a set or as a matrix of intersections.

Each intersection is represented by a TObject3D.

See Also
mrpt::math::TObject3D

Definition at line 709 of file CPolyhedron.h.

References getSetOfPolygonsAbsolute(), and mrpt::math::intersect().

double mrpt::opengl::CPolyhedron::getLineWidth ( ) const
inline

Gets the wireframe lines width.

Definition at line 539 of file CPolyhedron.h.

const std::string& mrpt::opengl::CRenderizable::getName ( ) const
inlineinherited

Returns the name of the object.

Definition at line 64 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

unsigned int CRenderizable::getNewTextureNumber ( )
staticprotectedinherited

Returns the lowest next free texture name (avoid using OpenGL's own function since we may call them from different threads and seem it's not cool).

Returns the lowest, free texture name.

Definition at line 77 of file CRenderizable.cpp.

References TOpenGLNameBooker::instance(), MAX_GL_TEXTURE_IDS, MAX_GL_TEXTURE_IDS_MASK, MRPT_END, MRPT_START, and THROW_EXCEPTION_FMT.

Referenced by mrpt::opengl::CTexturedObject::loadTextureInOpenGL().

uint32_t mrpt::opengl::CPolyhedron::getNumberOfEdges ( ) const
inline

Gets the amount of edges.

Definition at line 502 of file CPolyhedron.h.

uint32_t mrpt::opengl::CPolyhedron::getNumberOfFaces ( ) const
inline

Gets the amount of faces.

Definition at line 508 of file CPolyhedron.h.

uint32_t mrpt::opengl::CPolyhedron::getNumberOfVertices ( ) const
inline

Gets the amount of vertices.

Definition at line 496 of file CPolyhedron.h.

mrpt::math::TPose3D CRenderizable::getPose ( ) const
inherited

Returns the 3D pose of the object as TPose3D.

Definition at line 321 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose.

double mrpt::opengl::CRenderizable::getPosePitch ( ) const
inlineinherited

Rotation relative to parent coordinate origin, in DEGREES.

Definition at line 93 of file CRenderizable.h.

References mrpt::mrpt::utils::RAD2DEG().

double mrpt::opengl::CRenderizable::getPosePitchRad ( ) const
inlineinherited

Rotation relative to parent coordinate origin, in radians.

Definition at line 96 of file CRenderizable.h.

const mrpt::poses::CPose3D& mrpt::opengl::CRenderizable::getPoseRef ( ) const
inlineinherited

Returns a const ref to the 3D pose of the object as mrpt::poses::CPose3D (which explicitly contains the 3x3 rotation matrix)

Definition at line 81 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

double mrpt::opengl::CRenderizable::getPoseRoll ( ) const
inlineinherited

Rotation relative to parent coordinate origin, in DEGREES.

Definition at line 94 of file CRenderizable.h.

References mrpt::mrpt::utils::RAD2DEG().

double mrpt::opengl::CRenderizable::getPoseRollRad ( ) const
inlineinherited

Rotation relative to parent coordinate origin, in radians.

Definition at line 97 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getPoseX ( ) const
inlineinherited

Translation relative to parent coordinate origin.

Definition at line 89 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getPoseY ( ) const
inlineinherited

Translation relative to parent coordinate origin.

Definition at line 90 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getPoseYaw ( ) const
inlineinherited

Rotation relative to parent coordinate origin, in DEGREES.

Definition at line 92 of file CRenderizable.h.

References mrpt::mrpt::utils::RAD2DEG().

double mrpt::opengl::CRenderizable::getPoseYawRad ( ) const
inlineinherited

Rotation relative to parent coordinate origin, in radians.

Definition at line 95 of file CRenderizable.h.

double mrpt::opengl::CRenderizable::getPoseZ ( ) const
inlineinherited

Translation relative to parent coordinate origin.

Definition at line 91 of file CRenderizable.h.

virtual const mrpt::utils::TRuntimeClassId* mrpt::opengl::CPolyhedron::GetRuntimeClass ( ) const
virtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::opengl::CRenderizableDisplayList.

float mrpt::opengl::CRenderizable::getScaleX ( ) const
inlineinherited

Get the current scaling factor in one axis.

Definition at line 121 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

float mrpt::opengl::CRenderizable::getScaleY ( ) const
inlineinherited

Get the current scaling factor in one axis.

Definition at line 122 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

float mrpt::opengl::CRenderizable::getScaleZ ( ) const
inlineinherited

Get the current scaling factor in one axis.

Definition at line 123 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

void CPolyhedron::getSetOfPolygons ( std::vector< math::TPolygon3D > &  vec) const

Gets the polyhedron as a set of polygons.

See Also
mrpt::math::TPolygon3D

Definition at line 848 of file CPolyhedron.cpp.

void CPolyhedron::getSetOfPolygonsAbsolute ( std::vector< math::TPolygon3D > &  vec) const

Gets the polyhedron as a set of polygons, with the pose transformation already applied.

See Also
mrpt::math::TPolygon3D,mrpt::poses::CPose3D

Definition at line 855 of file CPolyhedron.cpp.

References mrpt::poses::CPose3D::composePoint().

Referenced by getIntersection().

void mrpt::opengl::CPolyhedron::getVertices ( std::vector< mrpt::math::TPoint3D > &  vertices) const
inline

Gets a list with the polyhedron's vertices.

Definition at line 478 of file CPolyhedron.h.

double CPolyhedron::getVolume ( ) const

Gets the polyhedron volume.

Won't work properly if the polyhedron is not convex.

Definition at line 833 of file CPolyhedron.cpp.

bool mrpt::opengl::CPolyhedron::isClosed ( ) const
inline

Returns true if the polygon is a completely closed object.

Definition at line 566 of file CPolyhedron.h.

bool mrpt::opengl::CRenderizable::isShowNameEnabled ( ) const
inlineinherited
See Also
enableShowName

Definition at line 70 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

bool mrpt::opengl::CRenderizable::isVisible ( ) const
inlineinherited

Is the object visible?

See Also
setVisibility

Definition at line 66 of file CRenderizable.h.

Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().

bool mrpt::opengl::CPolyhedron::isWireframe ( ) const
inline

Returns whether the polyhedron will be rendered as a wireframe object.

Definition at line 526 of file CPolyhedron.h.

void CPolyhedron::makeConvexPolygons ( )

Recomputes polygons, if necessary, so that each one is convex.

Definition at line 865 of file CPolyhedron.cpp.

References getVerticesAndFaces(), and mrpt::math::splitInConvexComponents().

EIGEN_STRONG_INLINE void mrpt::opengl::CRenderizableDisplayList::notifyChange ( ) const
inlineprotectedinherited

Must be called to notify that the object has changed (so, the display list must be updated)

Definition at line 49 of file CRenderizableDisplayList.h.

Referenced by mrpt::opengl::CGeneralizedCylinder::addVisibleSectionAtEnd(), mrpt::opengl::CGeneralizedCylinder::addVisibleSectionAtStart(), mrpt::opengl::CMeshFast::adjustGridToImageAR(), mrpt::opengl::CMesh::adjustGridToImageAR(), mrpt::opengl::CVectorField2D::adjustVectorFieldToGrid(), mrpt::opengl::CSetOfLines::appendLine(), mrpt::opengl::CSetOfLines::appendLines(), mrpt::opengl::CTexturedObject::assignImage(), mrpt::opengl::CMeshFast::assignImage(), mrpt::opengl::CMesh::assignImage(), mrpt::opengl::CTexturedObject::assignImage_fast(), mrpt::opengl::CMeshFast::assignImageAndZ(), mrpt::opengl::CMesh::assignImageAndZ(), mrpt::opengl::CSetOfLines::begin(), mrpt::opengl::CSetOfLines::clear(), mrpt::opengl::C3DSScene::clear(), mrpt::opengl::CVectorField2D::clear(), mrpt::opengl::CAssimpModel::clear(), mrpt::opengl::CVectorField3D::clear(), mrpt::opengl::CPlanarLaserScan::clear(), mrpt::opengl::COctoMapVoxels::clear(), mrpt::opengl::CSetOfTexturedTriangles::clearTriangles(), mrpt::opengl::CSetOfTriangles::clearTriangles(), mrpt::opengl::COpenGLStandardObject::disable(), mrpt::opengl::COpenGLStandardObject::enable(), mrpt::opengl::CSimpleLine::enableAntiAliasing(), mrpt::opengl::CGridPlaneXY::enableAntiAliasing(), mrpt::opengl::CGridPlaneXZ::enableAntiAliasing(), mrpt::opengl::CMesh3D::enableAntiAliasing(), mrpt::opengl::CVectorField2D::enableAntiAliasing(), mrpt::opengl::CSetOfLines::enableAntiAliasing(), mrpt::opengl::CVectorField3D::enableAntiAliasing(), mrpt::opengl::CBox::enableBoxBorder(), mrpt::opengl::CVectorField3D::enableColorFromModule(), mrpt::opengl::CMesh::enableColorFromZ(), mrpt::opengl::CMeshFast::enableColorFromZ(), mrpt::opengl::COctoMapVoxels::enableCubeTransparency(), mrpt::opengl::CColorBar::enableDepthTest(), mrpt::opengl::CEllipsoid::enableDrawSolid3D(), mrpt::opengl::C3DSScene::enableExtraAmbientLight(), mrpt::opengl::CMesh3D::enableFaceNormals(), mrpt::opengl::COctoMapVoxels::enableLights(), mrpt::opengl::CPlanarLaserScan::enableLine(), mrpt::opengl::CPlanarLaserScan::enablePoints(), mrpt::opengl::CSphere::enableRadiusIndependentOfEyeDistance(), mrpt::opengl::CMesh3D::enableShowEdges(), mrpt::opengl::CMesh3D::enableShowFaces(), mrpt::opengl::CVectorField3D::enableShowPoints(), mrpt::opengl::CMesh3D::enableShowVertices(), mrpt::opengl::CPlanarLaserScan::enableSurface(), mrpt::opengl::CAxis::enableTickMarks(), mrpt::opengl::CMesh3D::enableTransparency(), mrpt::opengl::CMesh::enableTransparency(), mrpt::opengl::CMeshFast::enableTransparency(), mrpt::opengl::CSetOfTriangles::enableTransparency(), mrpt::opengl::CAngularObservationMesh::enableTransparency(), mrpt::opengl::CMesh::enableWireFrame(), mrpt::opengl::CSetOfLines::end(), mrpt::opengl::C3DSScene::evaluateAnimation(), mrpt::opengl::COctoMapVoxels::getGridCubeRef(), mrpt::opengl::CSetOfTexturedTriangles::getTriangle(), mrpt::opengl::COctoMapVoxels::getVoxel(), mrpt::opengl::COctoMapVoxels::getVoxelRef(), mrpt::opengl::CSetOfTexturedTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangles(), mrpt::opengl::C3DSScene::loadFrom3DSFile(), mrpt::opengl::CMesh3D::loadMesh(), mrpt::opengl::CAssimpModel::loadScene(), mrpt::opengl::COctoMapVoxels::push_back_GridCube(), mrpt::opengl::COctoMapVoxels::push_back_Voxel(), mrpt::opengl::COpenGLStandardObject::readFromStream(), mrpt::opengl::CSimpleLine::readFromStream(), mrpt::opengl::CTexturedPlane::readFromStream(), mrpt::opengl::C3DSScene::readFromStream(), mrpt::opengl::CCylinder::readFromStream(), mrpt::opengl::CSetOfTriangles::readFromStream(), mrpt::opengl::CColorBar::readFromStream(), mrpt::opengl::CArrow::readFromStream(), mrpt::opengl::CAxis::readFromStream(), mrpt::opengl::CDisk::readFromStream(), mrpt::opengl::CSphere::readFromStream(), mrpt::opengl::CGridPlaneXY::readFromStream(), mrpt::opengl::CGridPlaneXZ::readFromStream(), mrpt::opengl::CSetOfLines::readFromStream(), mrpt::opengl::CBox::readFromStream(), mrpt::opengl::CVectorField2D::readFromStream(), mrpt::opengl::CMesh::readFromStream(), mrpt::opengl::CEllipsoidRangeBearing2D::readFromStream(), mrpt::opengl::CMeshFast::readFromStream(), mrpt::opengl::CAssimpModel::readFromStream(), mrpt::opengl::CEllipsoid::readFromStream(), mrpt::opengl::CText3D::readFromStream(), mrpt::opengl::CEllipsoidInverseDepth2D::readFromStream(), mrpt::opengl::CVectorField3D::readFromStream(), mrpt::opengl::CEllipsoidInverseDepth3D::readFromStream(), mrpt::opengl::CFrustum::readFromStream(), mrpt::opengl::COctoMapVoxels::readFromStream(), mrpt::opengl::CTexturedObject::readFromStreamTexturedObject(), mrpt::opengl::CSetOfTriangles::reserve(), mrpt::opengl::CSetOfLines::reserve(), mrpt::opengl::COctoMapVoxels::reserveVoxels(), mrpt::opengl::CSetOfLines::resize(), mrpt::opengl::CVectorField2D::resize(), mrpt::opengl::CVectorField3D::resize(), mrpt::opengl::COctoMapVoxels::resizeGridCubes(), mrpt::opengl::COctoMapVoxels::resizeVoxels(), mrpt::opengl::COctoMapVoxels::resizeVoxelSets(), mrpt::opengl::CEllipsoid::set2DsegmentsCount(), mrpt::opengl::CEllipsoid::set3DsegmentsCount(), mrpt::opengl::CGeneralizedCylinder::setAllSectionsInvisible(), mrpt::opengl::CGeneralizedCylinder::setAllSectionsVisible(), mrpt::opengl::CArrow::setArrowEnds(), mrpt::opengl::CArrow::setArrowYawPitchRoll(), mrpt::opengl::CGeneralizedCylinder::setAxis(), mrpt::opengl::CAxis::setAxisLimits(), mrpt::opengl::CBox::setBoxBorderColor(), mrpt::opengl::CBox::setBoxCorners(), mrpt::opengl::CGeneralizedCylinder::setClosed(), mrpt::opengl::CSetOfTriangles::setColor_u8(), mrpt::opengl::CSetOfTriangles::setColorA_u8(), mrpt::opengl::CColorBar::setColorAndValueLimits(), mrpt::opengl::CSetOfTriangles::setColorB_u8(), mrpt::opengl::CSetOfTriangles::setColorG_u8(), mrpt::opengl::CColorBar::setColormap(), mrpt::opengl::CSetOfTriangles::setColorR_u8(), mrpt::opengl::CEllipsoid::setCovMatrix(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setCovMatrixAndMean(), mrpt::opengl::CDisk::setDiskRadius(), mrpt::opengl::COpenGLStandardObject::setFlags(), mrpt::opengl::CText3D::setFont(), mrpt::opengl::CAxis::setFrequency(), mrpt::opengl::CGeneralizedCylinder::setGeneratrix(), mrpt::opengl::CVectorField2D::setGridCenterAndCellSize(), mrpt::opengl::CGridPlaneXY::setGridFrequency(), mrpt::opengl::CGridPlaneXZ::setGridFrequency(), mrpt::opengl::CMesh::setGridLimits(), mrpt::opengl::CMeshFast::setGridLimits(), mrpt::opengl::CVectorField2D::setGridLimits(), mrpt::opengl::COctoMapVoxels::setGridLinesColor(), mrpt::opengl::COctoMapVoxels::setGridLinesWidth(), mrpt::opengl::CCylinder::setHasBases(), mrpt::opengl::CArrow::setHeadRatio(), mrpt::opengl::CCylinder::setHeight(), mrpt::opengl::CFrustum::setHorzFOV(), mrpt::opengl::CFrustum::setHorzFOVAsymmetric(), mrpt::opengl::CArrow::setLargeRadius(), mrpt::opengl::CSetOfLines::setLineByIndex(), mrpt::opengl::CSimpleLine::setLineCoords(), mrpt::opengl::CSimpleLine::setLineWidth(), mrpt::opengl::CGridPlaneXY::setLineWidth(), mrpt::opengl::CGridPlaneXZ::setLineWidth(), mrpt::opengl::CAxis::setLineWidth(), mrpt::opengl::CSetOfLines::setLineWidth(), mrpt::opengl::CFrustum::setLineWidth(), mrpt::opengl::CBox::setLineWidth(), mrpt::opengl::CEllipsoid::setLineWidth(), mrpt::opengl::CVectorField2D::setLineWidth(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setLineWidth(), mrpt::opengl::CVectorField3D::setLineWidth(), mrpt::opengl::CDisk::setLoopsCount(), mrpt::opengl::CMesh::setMask(), mrpt::opengl::CVectorField3D::setMaxSpeedForColor(), mrpt::opengl::CVectorField3D::setMotionFieldColormap(), mrpt::opengl::CFrustum::setNearFarPlanes(), mrpt::opengl::COpenGLStandardObject::setNormal(), mrpt::opengl::CSphere::setNumberDivsLatitude(), mrpt::opengl::CSphere::setNumberDivsLongitude(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setNumberOfSegments(), mrpt::opengl::CFrustum::setPlaneColor(), mrpt::opengl::CTexturedPlane::setPlaneCorners(), mrpt::opengl::CGridPlaneXY::setPlaneLimits(), mrpt::opengl::CGridPlaneXZ::setPlaneLimits(), mrpt::opengl::CGridPlaneXZ::setPlaneYcoord(), mrpt::opengl::CGridPlaneXY::setPlaneZcoord(), mrpt::opengl::CVectorField2D::setPointColor(), mrpt::opengl::CVectorField3D::setPointColor(), mrpt::opengl::CVectorField3D::setPointCoordinates(), mrpt::opengl::CVectorField2D::setPointSize(), mrpt::opengl::CVectorField3D::setPointSize(), mrpt::opengl::CEllipsoid::setQuantiles(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setQuantiles(), mrpt::opengl::CCylinder::setRadii(), mrpt::opengl::CSphere::setRadius(), mrpt::opengl::CCylinder::setRadius(), mrpt::opengl::CPlanarLaserScan::setScan(), mrpt::opengl::CDisk::setSlicesCount(), mrpt::opengl::CCylinder::setSlicesCount(), mrpt::opengl::CArrow::setSmallRadius(), mrpt::opengl::CCylinder::setStacksCount(), mrpt::opengl::CText3D::setString(), mrpt::opengl::CText3D::setTextKerning(), mrpt::opengl::CAxis::setTextScale(), mrpt::opengl::CText3D::setTextSpacing(), mrpt::opengl::CText3D::setTextStyle(), mrpt::opengl::CTexturedPlane::setTextureCornerCoords(), mrpt::opengl::CMesh::setUV(), mrpt::opengl::CVectorField2D::setVectorField(), mrpt::opengl::CVectorField3D::setVectorField(), mrpt::opengl::CVectorField2D::setVectorFieldColor(), mrpt::opengl::CVectorField3D::setVectorFieldColor(), mrpt::opengl::CFrustum::setVertFOV(), mrpt::opengl::CFrustum::setVertFOVAsymmetric(), mrpt::opengl::CSetOfLines::setVerticesPointSize(), mrpt::opengl::CGeneralizedCylinder::setVisibleSections(), mrpt::opengl::COctoMapVoxels::setVisualizationMode(), mrpt::opengl::COctoMapVoxels::setVoxelAsPointsSize(), mrpt::opengl::CBox::setWireframe(), mrpt::opengl::CAngularObservationMesh::setWireframe(), mrpt::opengl::CMeshFast::setXBounds(), mrpt::opengl::CMesh::setXBounds(), mrpt::opengl::CMeshFast::setXMax(), mrpt::opengl::CMesh::setXMax(), mrpt::opengl::CMeshFast::setXMin(), mrpt::opengl::CMesh::setXMin(), mrpt::opengl::CMeshFast::setYBounds(), mrpt::opengl::CMesh::setYBounds(), mrpt::opengl::CMeshFast::setYMax(), mrpt::opengl::CMesh::setYMax(), mrpt::opengl::CMeshFast::setYMin(), mrpt::opengl::CMesh::setYMin(), mrpt::opengl::CMesh::setZ(), mrpt::opengl::CMeshFast::setZ(), mrpt::opengl::COctoMapVoxels::showGridLines(), mrpt::opengl::COctoMapVoxels::showVoxels(), mrpt::opengl::COctoMapVoxels::showVoxelsAsPoints(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::thisclass_readFromStream(), mrpt::opengl::CMesh::updateColorsMatrix(), mrpt::opengl::CMeshFast::updateColorsMatrix(), mrpt::opengl::CMeshFast::updatePoints(), mrpt::opengl::CMesh::updatePolygons(), mrpt::opengl::CSetOfTriangles::updatePolygons(), and mrpt::opengl::CMesh::updateTriangles().

void mrpt::opengl::CPolyhedron::operator delete ( void ptr)
throw (
)
inline

Definition at line 35 of file CPolyhedron.h.

void mrpt::opengl::CPolyhedron::operator delete ( void ptr,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 35 of file CPolyhedron.h.

void mrpt::opengl::CPolyhedron::operator delete ( void memory,
void ptr 
)
throw (
)
inline

Definition at line 35 of file CPolyhedron.h.

void mrpt::opengl::CPolyhedron::operator delete[] ( void ptr)
throw (
)
inline

Definition at line 35 of file CPolyhedron.h.

void* mrpt::opengl::CPolyhedron::operator new ( size_t  size,
const std::nothrow_t &   
)
throw (
)
inline

Definition at line 35 of file CPolyhedron.h.

void* mrpt::opengl::CPolyhedron::operator new ( size_t  size)
inline

Definition at line 35 of file CPolyhedron.h.

static void* mrpt::opengl::CPolyhedron::operator new ( size_t  size,
void ptr 
)
inlinestatic

Definition at line 35 of file CPolyhedron.h.

void* mrpt::opengl::CPolyhedron::operator new[] ( size_t  size)
inline

Definition at line 35 of file CPolyhedron.h.

void CPolyhedron::readFromStream ( mrpt::utils::CStream in,
int  version 
)
protectedvirtual

Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.

Parameters
inThe input binary stream where the object data must read from.
versionThe version of the object stored in the stream: use this version number in your code to know how to read the incoming data.
Exceptions
std::exceptionOn any error, see CStream::ReadBuffer
See Also
CStream

Implements mrpt::utils::CSerializable.

Definition at line 1476 of file CPolyhedron.cpp.

References MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION.

void mrpt::opengl::CRenderizableDisplayList::readFromStreamRender ( mrpt::utils::CStream in)
inlineprotectedinherited
void CRenderizable::releaseTextureName ( unsigned int  i)
staticprotectedinherited
void CRenderizableDisplayList::render ( ) const
virtualinherited
void CPolyhedron::render_dl ( ) const
virtual
void CRenderizable::renderTextBitmap ( const char *  str,
void fontStyle 
)
staticinherited

This method is safe for calling from within ::render() methods.

See Also
renderTextBitmap, mrpt::opengl::gl_utils
renderTextBitmap

Definition at line 351 of file CRenderizable.cpp.

References mrpt::opengl::gl_utils::renderTextBitmap().

void CRenderizable::renderTextBitmap ( int  screen_x,
int  screen_y,
const std::string str,
float  color_r = 1,
float  color_g = 1,
float  color_b = 1,
mrpt::opengl::TOpenGLFont  font = mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24 
)
staticinherited

Render a text message in the current rendering context, creating a glViewport in the way (do not call within ::render() methods)

  • Coordinates (x,y) are 2D pixels, starting at bottom-left of the viewport. Negative numbers will wrap to the opposite side of the viewport (e.g. x=-10 means 10px fromt the right).
  • The text color is defined by (color_r,color_g,color_b), each float numbers in the range [0,1].
    See Also
    renderTextBitmap, textBitmapWidth, mrpt::opengl::gl_utils

Definition at line 286 of file gl_utils.cpp.

References aux_mrptfont2glutfont(), GL_DEPTH_TEST, GL_MODELVIEW, GL_PROJECTION, GL_TRANSFORM_BIT, GL_VIEWPORT, GL_VIEWPORT_BIT, glColor3f(), glDisable(), glEnable(), glGetIntegerv(), glLoadIdentity(), glMatrixMode(), glPopAttrib(), glPopMatrix(), glPushAttrib(), glPushMatrix(), glRasterPos3f(), glViewport(), int(), and MRPT_UNUSED_PARAM.

CPolyhedronPtr CPolyhedron::rotate ( double  angle) const

Rotates a polyhedron around the Z axis a given amount of radians.

In some cases, this operation may be necessary to view the symmetry between related objects.

See Also
scale

Definition at line 1334 of file CPolyhedron.cpp.

CPolyhedronPtr CPolyhedron::scale ( double  factor) const

Scales a polyhedron to a given factor.

Exceptions
std::logic_errorfactor is not a strictly positive number.
See Also
rotate

Definition at line 1346 of file CPolyhedron.cpp.

CRenderizable& mrpt::opengl::CRenderizable::setColor ( const mrpt::utils::TColorf c)
inlineinherited
Parameters
cChanges the default object color
Returns
a ref to this

Definition at line 127 of file CRenderizable.h.

References mrpt::utils::TColorf::A, mrpt::utils::TColorf::B, mrpt::utils::TColorf::G, and mrpt::utils::TColorf::R.

CRenderizable& mrpt::opengl::CRenderizable::setColor ( double  R,
double  G,
double  B,
double  A = 1 
)
inlineinherited

Set the color components of this object (R,G,B,Alpha, in the range 0-1)

Returns
a ref to this

Definition at line 133 of file CRenderizable.h.

CRenderizable& mrpt::opengl::CRenderizableDisplayList::setColor_u8 ( const mrpt::utils::TColor c)
inlinevirtualinherited

Changes the default object color.

Returns
a ref to this

Reimplemented from mrpt::opengl::CRenderizable.

Reimplemented in mrpt::opengl::CSetOfTriangles.

Definition at line 86 of file CRenderizableDisplayList.h.

References mrpt::opengl::CRenderizable::setColor_u8().

CRenderizable& mrpt::opengl::CRenderizableDisplayList::setColor_u8 ( uint8_t  R,
uint8_t  G,
uint8_t  B,
uint8_t  A = 255 
)
inlineinherited

Color components in the range [0,255].

Returns
a ref to this

Definition at line 87 of file CRenderizableDisplayList.h.

References mrpt::opengl::CRenderizable::setColor_u8().

CRenderizable& mrpt::opengl::CRenderizable::setColorA ( const double  a)
inlineinherited

Color components in the range [0,1].

Returns
a ref to this

Definition at line 112 of file CRenderizable.h.

CRenderizable& mrpt::opengl::CRenderizableDisplayList::setColorA_u8 ( const uint8_t  a)
inlinevirtualinherited

Color components in the range [0,255].

Returns
a ref to this

Reimplemented from mrpt::opengl::CRenderizable.

Reimplemented in mrpt::opengl::CSetOfTriangles.

Definition at line 85 of file CRenderizableDisplayList.h.

Referenced by mrpt::nav::ClearanceDiagram::renderAs3DObject().

CRenderizable& mrpt::opengl::CRenderizable::setColorB ( const double  b)
inlineinherited

Color components in the range [0,1].

Returns
a ref to this

Definition at line 111 of file CRenderizable.h.

CRenderizable& mrpt::opengl::CRenderizableDisplayList::setColorB_u8 ( const uint8_t  b)
inlinevirtualinherited

Color components in the range [0,255].

Returns
a ref to this

Reimplemented from mrpt::opengl::CRenderizable.

Reimplemented in mrpt::opengl::CSetOfTriangles.

Definition at line 84 of file CRenderizableDisplayList.h.

CRenderizable& mrpt::opengl::CRenderizable::setColorG ( const double  g)
inlineinherited

Color components in the range [0,1].

Returns
a ref to this

Definition at line 110 of file CRenderizable.h.

CRenderizable& mrpt::opengl::CRenderizableDisplayList::setColorG_u8 ( const uint8_t  g)
inlinevirtualinherited

Color components in the range [0,255].

Returns
a ref to this

Reimplemented from mrpt::opengl::CRenderizable.

Reimplemented in mrpt::opengl::CSetOfTriangles.

Definition at line 83 of file CRenderizableDisplayList.h.

CRenderizable& mrpt::opengl::CRenderizable::setColorR ( const double  r)
inlineinherited

Color components in the range [0,1].

Returns
a ref to this

Definition at line 109 of file CRenderizable.h.

CRenderizable& mrpt::opengl::CRenderizableDisplayList::setColorR_u8 ( const uint8_t  r)
inlinevirtualinherited

Color components in the range [0,255].

Returns
a ref to this

Reimplemented from mrpt::opengl::CRenderizable.

Reimplemented in mrpt::opengl::CSetOfTriangles.

Definition at line 82 of file CRenderizableDisplayList.h.

void mrpt::opengl::CPolyhedron::setLineWidth ( double  lineWidth)
inline

Sets the width used to render lines, when wireframe rendering is activated.

Definition at line 545 of file CPolyhedron.h.

CRenderizable& mrpt::opengl::CRenderizable::setLocation ( double  x,
double  y,
double  z 
)
inlineinherited

Changes the location of the object, keeping untouched the orientation.

Returns
a ref to this

Definition at line 84 of file CRenderizable.h.

CRenderizable& mrpt::opengl::CRenderizable::setLocation ( const mrpt::math::TPoint3D p)
inlineinherited

Changes the location of the object, keeping untouched the orientation.

Returns
a ref to this

Definition at line 87 of file CRenderizable.h.

References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.

void mrpt::opengl::CRenderizable::setName ( const std::string n)
inlineinherited

Changes the name of the object.

Definition at line 63 of file CRenderizable.h.

bool CPolyhedron::setNormal ( TPolyhedronFace f,
bool  doCheck = true 
)
private
CRenderizable & CRenderizable::setPose ( const mrpt::poses::CPose3D o)
inherited

Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)

Definition at line 285 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose.

CRenderizable & CRenderizable::setPose ( const mrpt::poses::CPose2D o)
inherited

Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)

Definition at line 290 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose.

CRenderizable & CRenderizable::setPose ( const mrpt::math::TPose3D o)
inherited

Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)

Definition at line 295 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose.

CRenderizable & CRenderizable::setPose ( const mrpt::math::TPose2D o)
inherited

Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)

Definition at line 300 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose.

CRenderizable & CRenderizable::setPose ( const mrpt::poses::CPoint3D o)
inherited

Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)

Parameters
oSet the 3D pose from a mrpt::poses::CPose3D object

Definition at line 306 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose, mrpt::poses::CPose3D::setFromValues(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().

CRenderizable & CRenderizable::setPose ( const mrpt::poses::CPoint2D o)
inherited

Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)

Parameters
oSet the 3D pose from a mrpt::poses::CPose3D object

Definition at line 311 of file CRenderizable.cpp.

References mrpt::opengl::CRenderizable::m_pose, mrpt::poses::CPose3D::setFromValues(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().

CRenderizable& mrpt::opengl::CRenderizable::setScale ( float  s)
inlineinherited

Scale to apply to the object, in all three axes (default=1)

Returns
a ref to this

Definition at line 119 of file CRenderizable.h.

Referenced by mrpt::opengl::CText3D::CText3D().

CRenderizable& mrpt::opengl::CRenderizable::setScale ( float  sx,
float  sy,
float  sz 
)
inlineinherited

Scale to apply to the object in each axis (default=1)

Returns
a ref to this

Definition at line 120 of file CRenderizable.h.

void mrpt::opengl::CRenderizable::setVisibility ( bool  visible = true)
inlineinherited

Set object visibility (default=true)

See Also
isVisible

Definition at line 67 of file CRenderizable.h.

void mrpt::opengl::CPolyhedron::setWireframe ( bool  enabled = true)
inline

Sets whether the polyhedron will be rendered as a wireframe object.

Definition at line 532 of file CPolyhedron.h.

virtual bool mrpt::opengl::CRenderizableDisplayList::should_skip_display_list_cache ( ) const
inlineprotectedvirtualinherited

Optional: If the object has some state in which creating a display list is NOT preferred over direct rendering, implement this method and return "true" in those cases.

Reimplemented in mrpt::opengl::CSphere.

Definition at line 56 of file CRenderizableDisplayList.h.

Referenced by mrpt::opengl::CRenderizableDisplayList::render().

int CRenderizable::textBitmapWidth ( const std::string str,
mrpt::opengl::TOpenGLFont  font = mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24 
)
staticinherited

Return the exact width in pixels for a given string, as will be rendered by renderTextBitmap().

See Also
renderTextBitmap, mrpt::opengl::gl_utils
renderTextBitmap

Definition at line 359 of file CRenderizable.cpp.

References mrpt::opengl::gl_utils::textBitmapWidth().

bool CPolyhedron::traceRay ( const mrpt::poses::CPose3D o,
double &  dist 
) const
virtual

Ray trace.

See Also
CRenderizable

Reimplemented from mrpt::opengl::CRenderizable.

Definition at line 816 of file CPolyhedron.cpp.

References mrpt::math::traceRay().

CPolyhedronPtr CPolyhedron::truncate ( double  factor) const

Truncates a polyhedron to a given factor.

See Also
getDual,cantellate,augment
Exceptions
std::logic_errorPolyhedron truncation results in skew polygons and thus it's impossible to perform.

Definition at line 991 of file CPolyhedron.cpp.

References searchForEdge(), searchForFace(), THROW_EXCEPTION, mrpt::opengl::CPolyhedron::TPolyhedronEdge::v1, and mrpt::opengl::CPolyhedron::TPolyhedronEdge::v2.

void CPolyhedron::updatePolygons ( ) const

Updates the mutable list of polygons used in rendering and ray tracing.

Definition at line 1391 of file CPolyhedron.cpp.

virtual mxArray* mrpt::utils::CSerializable::writeToMatlab ( ) const
inlinevirtualinherited

Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class.

Returns
A new mxArray (caller is responsible of memory freeing) or NULL is class does not support conversion to MATLAB.

Definition at line 79 of file CSerializable.h.

void CPolyhedron::writeToStream ( mrpt::utils::CStream out,
int getVersion 
) const
protectedvirtual

Introduces a pure virtual method responsible for writing to a CStream.

This can not be used directly be users, instead use "stream << object;" for writing it to a stream.

Parameters
outThe output binary stream where object must be dumped.
getVersionIf NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data.
Exceptions
std::exceptionOn any error, see CStream::WriteBuffer
See Also
CStream

Implements mrpt::utils::CSerializable.

Definition at line 1467 of file CPolyhedron.cpp.

void CRenderizable::writeToStreamRender ( utils::CStream out) const
protectedinherited

Member Data Documentation

mrpt::utils::CLASSINIT mrpt::opengl::CPolyhedron::_init_CPolyhedron
staticprotected

Definition at line 35 of file CPolyhedron.h.

const mrpt::utils::TRuntimeClassId mrpt::utils::CObject::classCObject
staticinherited

Definition at line 128 of file CObject.h.

mrpt::utils::TRuntimeClassId mrpt::opengl::CPolyhedron::classCPolyhedron
static

Definition at line 35 of file CPolyhedron.h.

const mrpt::utils::TRuntimeClassId mrpt::opengl::CRenderizable::classCRenderizable
staticinherited

Definition at line 46 of file CRenderizable.h.

const mrpt::utils::TRuntimeClassId mrpt::opengl::CRenderizableDisplayList::classCRenderizableDisplayList
staticinherited

Definition at line 38 of file CRenderizableDisplayList.h.

const mrpt::utils::TRuntimeClassId mrpt::utils::CSerializable::classCSerializable
staticinherited

Definition at line 42 of file CSerializable.h.

const mrpt::utils::TRuntimeClassId* mrpt::opengl::CPolyhedron::classinfo
static

Definition at line 35 of file CPolyhedron.h.

mrpt::utils::TColor mrpt::opengl::CRenderizable::m_color
protectedinherited
std::string mrpt::opengl::CRenderizable::m_name
protectedinherited
mrpt::poses::CPose3D mrpt::opengl::CRenderizable::m_pose
protectedinherited
float mrpt::opengl::CRenderizable::m_scale_x
protectedinherited
float mrpt::opengl::CRenderizable::m_scale_y
protectedinherited
float mrpt::opengl::CRenderizable::m_scale_z
protectedinherited

Scale components to apply to the object (default=1)

Definition at line 56 of file CRenderizable.h.

Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().

bool mrpt::opengl::CRenderizable::m_show_name
protectedinherited
bool mrpt::opengl::CRenderizable::m_visible
protectedinherited

Is the object visible? (default=true)

Definition at line 57 of file CRenderizable.h.

Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().

std::vector<TPolyhedronEdge> mrpt::opengl::CPolyhedron::mEdges
protected

List of polyhedron's edges.

Definition at line 90 of file CPolyhedron.h.

std::vector<TPolyhedronFace> mrpt::opengl::CPolyhedron::mFaces
protected

List of polyhedron's faces.

Definition at line 94 of file CPolyhedron.h.

double mrpt::opengl::CPolyhedron::mLineWidth
protected

When displaying as wireframe object, this variable stores the width of the edges.

Definition at line 102 of file CPolyhedron.h.

std::vector<mrpt::math::TPoint3D> mrpt::opengl::CPolyhedron::mVertices
protected

List of vertices presents in the polyhedron.

Definition at line 86 of file CPolyhedron.h.

bool mrpt::opengl::CPolyhedron::mWireframe
protected

This flag determines whether the polyhedron will be displayed as a solid object or as a set of edges.

Definition at line 98 of file CPolyhedron.h.

bool mrpt::opengl::CPolyhedron::polygonsUpToDate
mutableprotected

Whether the set of actual polygons is up to date or not.

Definition at line 110 of file CPolyhedron.h.

std::vector<mrpt::math::TPolygonWithPlane> mrpt::opengl::CPolyhedron::tempPolygons
mutableprotected

Mutable list of actual polygons, maintained for speed.

Definition at line 106 of file CPolyhedron.h.




Page generated by Doxygen 1.8.6 for MRPT 1.5.6 Git: 4c65e84 Tue Apr 24 08:18:17 2018 +0200 at mar abr 24 08:26:17 CEST 2018