MRPT  2.0.4
List of all members | Classes | Public Member Functions | Static Public Member Functions | 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 44 of file CPolyhedron.h.

#include <mrpt/opengl/CPolyhedron.h>

Inheritance diagram for mrpt::opengl::CPolyhedron:

Classes

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

Public Member Functions

void getBoundingBox (mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const override
 Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent. More...
 
bool traceRay (const mrpt::poses::CPose3D &o, double &dist) const override
 Simulation of ray-trace, given a pose. 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...
 
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...
 
 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...
 
void InitFromVertAndFaces (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces, bool doCheck=true)
 
 CPolyhedron (const std::vector< math::TPolygon3D > &polys)
 
 CPolyhedron (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< std::vector< uint32_t >> &faces)
 
 ~CPolyhedron () override=default
 Destructor. More...
 
void setLineWidth (float w)
 
float getLineWidth () const
 
void enableAntiAliasing (bool enable=true)
 
bool isAntiAliasingEnabled () const
 
virtual void enqueForRenderRecursive ([[maybe_unused]] const mrpt::opengl::TRenderMatrices &state, [[maybe_unused]] RenderQueue &rq) const
 Process all children objects recursively, if the object is a container. More...
 
void updateBuffers () const
 Calls renderUpdateBuffers() and clear the flag that is set with notifyChange() More...
 
void notifyChange () const
 Call to enable calling renderUpdateBuffers() before the next render() rendering iteration. More...
 
bool hasToUpdateBuffers () const
 Returns whether notifyChange() has been invoked since the last call to renderUpdateBuffers(), meaning the latter needs to be called again before rendering. More...
 
virtual mrpt::math::TPoint3Df getLocalRepresentativePoint () const
 Provide a representative point (in object local coordinates), used to sort objects by eye-distance while rendering with transparencies (Default=[0,0,0]) More...
 
void setLocalRepresentativePoint (const mrpt::math::TPoint3Df &p)
 See getLocalRepresentativePoint() More...
 
mrpt::opengl::CTextlabelObject () const
 Returns or constructs (in its first invokation) the associated mrpt::opengl::CText object representing the label of the object. More...
 
virtual void initializeTextures () const
 Initializes all textures (loads them into opengl memory). 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...
 
Renderizable shader API virtual methods
void render (const RenderContext &rc) const override
 Implements the rendering of 3D objects in each class derived from CRenderizable. More...
 
void renderUpdateBuffers () const override
 Called whenever m_outdatedBuffers is true: used to re-generate OpenGL vertex buffers, etc. More...
 
void freeOpenGLResources () override
 Free opengl buffers. More...
 
virtual shader_list_t requiredShaders () const override
 Returns the ID of the OpenGL shader program required to render this class. More...
 
void onUpdateBuffers_Wireframe () override
 Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" fields. More...
 
void onUpdateBuffers_Triangles () override
 Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" fields. More...
 
Polyhedron special operations.
CPolyhedron::Ptr getDual () const
 Given a polyhedron, creates its dual. More...
 
CPolyhedron::Ptr truncate (double factor) const
 Truncates a polyhedron to a given factor. More...
 
CPolyhedron::Ptr cantellate (double factor) const
 Cantellates a polyhedron to a given factor. More...
 
CPolyhedron::Ptr augment (double height) const
 Augments a polyhedron to a given height. More...
 
CPolyhedron::Ptr augment (double height, size_t numVertices) const
 Augments a polyhedron to a given height. More...
 
CPolyhedron::Ptr augment (bool direction=false) const
 Augments a polyhedron, so that the resulting triangles are equilateral. More...
 
CPolyhedron::Ptr 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...
 
CPolyhedron::Ptr rotate (double angle) const
 Rotates a polyhedron around the Z axis a given amount of radians. More...
 
CPolyhedron::Ptr scale (double factor) const
 Scales a polyhedron to a given factor. More...
 
Raw access to wireframe shader buffer data
const auto & shaderWireframeVertexPointBuffer () const
 
const auto & shaderWireframeVertexColorBuffer () const
 
Changes the appearance of the object to render
void setName (const std::string &n)
 Changes the name of the object. More...
 
const std::string & getName () 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...
 
float getColorR () const
 Color components in the range [0,1]. More...
 
float getColorG () const
 Color components in the range [0,1]. More...
 
float getColorB () const
 Color components in the range [0,1]. More...
 
float 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 float r)
 Color components in the range [0,1]. More...
 
CRenderizablesetColorG (const float g)
 Color components in the range [0,1]. More...
 
CRenderizablesetColorB (const float b)
 Color components in the range [0,1]. More...
 
CRenderizablesetColorA (const float a)
 Color components in the range [0,1]. More...
 
virtual CRenderizablesetColorR_u8 (const uint8_t r)
 Color components in the range [0,255]. More...
 
virtual CRenderizablesetColorG_u8 (const uint8_t g)
 Color components in the range [0,255]. More...
 
virtual CRenderizablesetColorB_u8 (const uint8_t b)
 Color components in the range [0,255]. More...
 
virtual CRenderizablesetColorA_u8 (const uint8_t a)
 Color components in the range [0,255]. 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::img::TColorf getColor () const
 Returns the object color property as a TColorf. More...
 
CRenderizablesetColor (const mrpt::img::TColorf &c)
 Changes the default object color. More...
 
CRenderizablesetColor (float R, float G, float B, float A=1)
 Set the color components of this object (R,G,B,Alpha, in the range 0-1) More...
 
const mrpt::img::TColorgetColor_u8 () const
 Returns the object color property as a TColor. More...
 
virtual CRenderizablesetColor_u8 (const mrpt::img::TColor &c)
 
CRenderizablesetColor_u8 (uint8_t R, uint8_t G, uint8_t B, uint8_t A=255)
 Set the color components of this object (R,G,B,Alpha, in the range 0-255) More...
 
RTTI classes and functions for polymorphic hierarchies
mrpt::rtti::CObject::Ptr duplicateGetSmartPtr () const
 Makes a deep copy of the object and returns a smart pointer to it. More...
 
Raw access to triangle shader buffer data
const auto & shaderTexturedTrianglesBuffer () const
 

Static Public Member Functions

template<class T >
static size_t getIntersection (const CPolyhedron::Ptr &p1, const CPolyhedron::Ptr &p2, T &container)
 Gets the intersection of two polyhedra, either as a set or as a matrix of intersections. More...
 
static CPolyhedron::Ptr CreateRandomPolyhedron (double radius)
 Creates a random polyhedron from the static methods. More...
 
static CPolyhedron::Ptr CreateNoCheck (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces)
 Creates a polyhedron without checking its correctness. More...
 
static CPolyhedron::Ptr CreateEmpty ()
 Creates an empty Polyhedron. More...
 
Platonic solids.
static CPolyhedron::Ptr CreateTetrahedron (double radius)
 Creates a regular tetrahedron (see http://en.wikipedia.org/wiki/Tetrahedron). More...
 
static CPolyhedron::Ptr CreateHexahedron (double radius)
 Creates a regular cube, also called hexahedron (see http://en.wikipedia.org/wiki/Hexahedron). More...
 
static CPolyhedron::Ptr CreateOctahedron (double radius)
 Creates a regular octahedron (see http://en.wikipedia.org/wiki/Octahedron). More...
 
static CPolyhedron::Ptr CreateDodecahedron (double radius)
 Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron). More...
 
static CPolyhedron::Ptr CreateIcosahedron (double radius)
 Creates a regular icosahedron (see http://en.wikipedia.org/wiki/Icosahedron). More...
 
Archimedean solids.
static CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateCuboctahedron (double radius)
 Creates a cuboctahedron, consisting of six square faces and eight triangular ones (see http://en.wikipedia.org/wiki/Cuboctahedron). More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateTruncatedOctahedron (double radius)
 Creates a truncated octahedron, with eight hexagons and eight squares (see http://en.wikipedia.org/wiki/Truncated_octahedron). More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateIcosidodecahedron (double radius, bool type=true)
 Creates an icosidodecahedron, with 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Icosidodecahedron). More...
 
static CPolyhedron::Ptr CreateTruncatedDodecahedron (double radius)
 Creates a truncated dodecahedron, consisting of 12 dodecagons and 20 triangles (see http://en.wikipedia.org/wiki/Truncated_dodecahedron). More...
 
static CPolyhedron::Ptr CreateTruncatedIcosahedron (double radius)
 Creates a truncated icosahedron, consisting of 20 hexagons and 12 pentagons. More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateTriakisTetrahedron (double radius)
 Creates a triakis tetrahedron, dual to the truncated tetrahedron. More...
 
static CPolyhedron::Ptr CreateRhombicDodecahedron (double radius)
 Creates a rhombic dodecahedron, dual to the cuboctahedron. More...
 
static CPolyhedron::Ptr CreateTriakisOctahedron (double radius)
 Creates a triakis octahedron, dual to the truncated hexahedron. More...
 
static CPolyhedron::Ptr CreateTetrakisHexahedron (double radius)
 Creates a tetrakis hexahedron, dual to the truncated octahedron. More...
 
static CPolyhedron::Ptr CreateDeltoidalIcositetrahedron (double radius)
 Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron. More...
 
static CPolyhedron::Ptr CreateRhombicTriacontahedron (double radius)
 Creates a rhombic triacontahedron, dual to the icosidodecahedron. More...
 
static CPolyhedron::Ptr CreateTriakisIcosahedron (double radius)
 Creates a triakis icosahedron, dual to the truncated dodecahedron. More...
 
static CPolyhedron::Ptr CreatePentakisDodecahedron (double radius)
 Creates a pentakis dodecahedron, dual to the truncated icosahedron. More...
 
static CPolyhedron::Ptr CreateDeltoidalHexecontahedron (double radius)
 Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron. More...
 
Customizable polyhedra
static CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateCubicPrism (const mrpt::math::TPoint3D &p1, const mrpt::math::TPoint3D &p2)
 Creates a cubic prism, given two opposite vertices. More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateFrustum (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height, double ratio)
 This is a synonym for CreateTruncatedPyramid. More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateRegularAntiprism (uint32_t numBaseEdges, double baseRadius, double height)
 Creates an antiprism whose base is a regular polygon. More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateRegularPyramid (uint32_t numBaseEdges, double baseRadius, double height)
 Creates a regular pyramid whose base is a regular polygon. More...
 
static CPolyhedron::Ptr CreateRegularDoublePyramid (uint32_t numBaseEdges, double baseRadius, double height1, double height2)
 Creates a regular double pyramid whose base is a regular polygon. More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateRegularTruncatedPyramid (uint32_t numBaseEdges, double baseRadius, double height, double ratio)
 Creates a regular truncated pyramid whose base is a regular polygon. More...
 
static CPolyhedron::Ptr CreateRegularFrustum (uint32_t numBaseEdges, double baseRadius, double height, double ratio)
 This is a synonym for CreateRegularTruncatedPyramid. More...
 
static CPolyhedron::Ptr 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 CPolyhedron::Ptr CreateCupola (uint32_t numBaseEdges, double edgeLength)
 Creates a cupola. More...
 
static CPolyhedron::Ptr CreateCatalanTrapezohedron (uint32_t numBaseEdges, double height)
 Creates a trapezohedron whose dual is exactly an archimedean antiprism. More...
 
static CPolyhedron::Ptr CreateCatalanDoublePyramid (uint32_t numBaseEdges, double height)
 Creates a double pyramid whose dual is exactly an archimedean prism. More...
 
static CPolyhedron::Ptr 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...
 

Protected Member Functions

void writeToStreamRender (mrpt::serialization::CArchive &out) const
 
void readFromStreamRender (mrpt::serialization::CArchive &in)
 
CSerializable virtual methods
uint8_t serializeGetVersion () const override
 Must return the current versioning number of the object. More...
 
void serializeTo (mrpt::serialization::CArchive &out) const override
 Pure virtual method for writing (serializing) to an abstract archive. More...
 
void serializeFrom (mrpt::serialization::CArchive &in, uint8_t serial_version) override
 Pure virtual method for reading (deserializing) from an abstract archive. More...
 
CSerializable virtual methods
virtual void serializeTo (CSchemeArchiveBase &out) const
 Virtual method for writing (serializing) to an abstract schema based archive. More...
 
virtual void serializeFrom (CSchemeArchiveBase &in)
 Virtual method for reading (deserializing) from an abstract schema based archive. More...
 

Protected Attributes

std::vector< mrpt::math::TPoint3Dm_Vertices
 List of vertices presents in the polyhedron. More...
 
std::vector< TPolyhedronEdgem_Edges
 List of polyhedron's edges. More...
 
std::vector< TPolyhedronFacem_Faces
 List of polyhedron's faces. More...
 
bool m_Wireframe {false}
 This flag determines whether the polyhedron will be displayed as a solid object or as a set of edges. More...
 
std::vector< mrpt::math::TPolygonWithPlanetempPolygons
 Mutable list of actual polygons, maintained for speed. More...
 
bool polygonsUpToDate {false}
 Whether the set of actual polygons is up to date or not. More...
 
float m_lineWidth = 1.0f
 
bool m_antiAliasing = false
 
std::vector< mrpt::math::TPoint3Dfm_vertex_buffer_data
 
std::vector< mrpt::img::TColorm_color_buffer_data
 
std::string m_name
 
bool m_show_name {false}
 
mrpt::img::TColor m_color
 Color components in the range [0,255]. More...
 
mrpt::poses::CPose3D m_pose
 6D pose wrt the parent coordinate reference. More...
 
float m_scale_x {1}
 Scale components to apply to the object (default=1) More...
 
float m_scale_y {1}
 
float m_scale_z {1}
 
bool m_visible {true}
 Is the object visible? (default=true) More...
 
bool m_outdatedBuffers = true
 
mrpt::math::TPoint3Df m_representativePoint {0, 0, 0}
 
std::shared_ptr< mrpt::opengl::CTextm_label_obj
 Optional pointer to a mrpt::opengl::CText. More...
 
std::vector< mrpt::opengl::TTrianglem_triangles
 List of triangles. 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...
 

Static Private Member Functions

static std::vector< mrpt::math::TPoint2DgenerateBase (uint32_t numBaseEdges, double baseRadius)
 Generates a list of 2D vertices constituting a regular polygon. More...
 
static std::vector< mrpt::math::TPoint2DgenerateShiftedBase (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...
 

RTTI stuff

using Ptr = std::shared_ptr< mrpt::opengl ::CPolyhedron >
 
using ConstPtr = std::shared_ptr< const mrpt::opengl ::CPolyhedron >
 
using UniquePtr = std::unique_ptr< mrpt::opengl ::CPolyhedron >
 
using ConstUniquePtr = std::unique_ptr< const mrpt::opengl ::CPolyhedron >
 
static const mrpt::rtti::TRuntimeClassId runtimeClassId
 
static constexpr const char * className = "mrpt::opengl" "::" "CPolyhedron"
 
static const mrpt::rtti::TRuntimeClassId_GetBaseClass ()
 
static constexpr auto getClassName ()
 
static const mrpt::rtti::TRuntimeClassIdGetRuntimeClassIdStatic ()
 
static std::shared_ptr< CObjectCreateObject ()
 
template<typename... Args>
static Ptr Create (Args &&... args)
 
template<typename Alloc , typename... Args>
static Ptr CreateAlloc (const Alloc &alloc, Args &&... args)
 
template<typename... Args>
static UniquePtr CreateUnique (Args &&... args)
 
virtual const mrpt::rtti::TRuntimeClassIdGetRuntimeClass () const override
 Returns information about the class of an object in runtime. More...
 
virtual mrpt::rtti::CObjectclone () const override
 Returns a deep copy (clone) of the object, indepently of its class. More...
 

Member Typedef Documentation

◆ ConstPtr

Definition at line 47 of file CPolyhedron.h.

◆ ConstUniquePtr

using mrpt::opengl::CPolyhedron::ConstUniquePtr = std::unique_ptr<const mrpt::opengl :: CPolyhedron >

Definition at line 47 of file CPolyhedron.h.

◆ Ptr

A type for the associated smart pointer

Definition at line 47 of file CPolyhedron.h.

◆ UniquePtr

using mrpt::opengl::CPolyhedron::UniquePtr = std::unique_ptr< mrpt::opengl :: CPolyhedron >

Definition at line 47 of file CPolyhedron.h.

Constructor & Destructor Documentation

◆ CPolyhedron() [1/4]

mrpt::opengl::CPolyhedron::CPolyhedron ( )
inline

Basic empty constructor.

Definition at line 879 of file CPolyhedron.h.

◆ CPolyhedron() [2/4]

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

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

Definition at line 884 of file CPolyhedron.h.

◆ CPolyhedron() [3/4]

CPolyhedron::CPolyhedron ( const std::vector< math::TPolygon3D > &  polys)

Definition at line 514 of file CPolyhedron.cpp.

References getVerticesAndFaces(), InitFromVertAndFaces(), m_Faces, and m_Vertices.

Here is the call graph for this function:

◆ CPolyhedron() [4/4]

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

Definition at line 527 of file CPolyhedron.cpp.

References InitFromVertAndFaces(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Here is the call graph for this function:

◆ ~CPolyhedron()

mrpt::opengl::CPolyhedron::~CPolyhedron ( )
overridedefault

Destructor.

Member Function Documentation

◆ _GetBaseClass()

static const mrpt::rtti::TRuntimeClassId* mrpt::opengl::CPolyhedron::_GetBaseClass ( )
staticprotected

◆ addEdges()

void CPolyhedron::addEdges ( const TPolyhedronFace e)
private

Adds, to the existing list of edges, each edge in a given face.

Definition at line 1856 of file CPolyhedron.cpp.

References mrpt::containers::find(), m_Edges, mrpt::opengl::CPolyhedron::TPolyhedronEdge::v1, mrpt::opengl::CPolyhedron::TPolyhedronEdge::v2, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by makeConvexPolygons(), and serializeFrom().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ augment() [1/4]

CPolyhedron::Ptr 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 1543 of file CPolyhedron.cpp.

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

Here is the call graph for this function:

◆ augment() [2/4]

CPolyhedron::Ptr CPolyhedron::augment ( double  height,
size_t  numVertices 
) const

Augments a polyhedron to a given height.

This method only affects to faces with certain number of vertices.

See also
augment(double) const

Definition at line 1588 of file CPolyhedron.cpp.

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

Here is the call graph for this function:

◆ augment() [3/4]

CPolyhedron::Ptr 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 1649 of file CPolyhedron.cpp.

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

Here is the call graph for this function:

◆ augment() [4/4]

CPolyhedron::Ptr 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 1695 of file CPolyhedron.cpp.

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

Here is the call graph for this function:

◆ cantellate()

CPolyhedron::Ptr CPolyhedron::cantellate ( double  factor) const

Cantellates a polyhedron to a given factor.

See also
getDual,truncate,augment

Definition at line 1457 of file CPolyhedron.cpp.

References mrpt::containers::begin(), CreateEmpty(), CreateNoCheck(), mrpt::containers::end(), getCenter(), getSetOfPolygons(), m_Edges, m_Faces, m_Vertices, and searchForEdge().

Here is the call graph for this function:

◆ checkConsistence()

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 1875 of file CPolyhedron.cpp.

Referenced by serializeFrom().

Here is the caller graph for this function:

◆ clone()

virtual mrpt::rtti::CObject* mrpt::opengl::CPolyhedron::clone ( ) const
overridevirtual

Returns a deep copy (clone) of the object, indepently of its class.

Implements mrpt::rtti::CObject.

◆ Create()

template<typename... Args>
static Ptr mrpt::opengl::CPolyhedron::Create ( Args &&...  args)
inlinestatic

Definition at line 47 of file CPolyhedron.h.

Referenced by CreateEmpty(), and CreateNoCheck().

Here is the caller graph for this function:

◆ CreateAlloc()

template<typename Alloc , typename... Args>
static Ptr mrpt::opengl::CPolyhedron::CreateAlloc ( const Alloc &  alloc,
Args &&...  args 
)
inlinestatic

Definition at line 47 of file CPolyhedron.h.

◆ CreateArchimedeanRegularAntiprism()

CPolyhedron::Ptr 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 2182 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase().

Referenced by CreateCatalanTrapezohedron(), and CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateArchimedeanRegularPrism()

CPolyhedron::Ptr 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 2177 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase().

Referenced by CreateCatalanDoublePyramid(), and CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateBifrustum()

CPolyhedron::Ptr 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 724 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by CreateRegularBifrustum().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateCatalanDoublePyramid()

CPolyhedron::Ptr 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 2218 of file CPolyhedron.cpp.

References CreateArchimedeanRegularPrism().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateCatalanTrapezohedron()

CPolyhedron::Ptr 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 2213 of file CPolyhedron.cpp.

References CreateArchimedeanRegularAntiprism().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateCubicPrism() [1/2]

CPolyhedron::Ptr 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 540 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by mrpt::opengl::stock_objects::BumblebeeCamera(), CreateCubicPrism(), and CreateHexahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateCubicPrism() [2/2]

CPolyhedron::Ptr CPolyhedron::CreateCubicPrism ( const mrpt::math::TPoint3D p1,
const mrpt::math::TPoint3D p2 
)
static

Creates a cubic prism, given two opposite vertices.

See also
CreateCubicPrism(double,double,double,double,double,double),CreateParallelepiped,CreateCustomPrism,CreateRegularPrism,CreateArchimedeanRegularPrism

Definition at line 2139 of file CPolyhedron.cpp.

References CreateCubicPrism(), mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.

Here is the call graph for this function:

◆ CreateCuboctahedron()

CPolyhedron::Ptr 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 2054 of file CPolyhedron.cpp.

References CreateHexahedron().

Referenced by CreateRandomPolyhedron(), and CreateRhombicDodecahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateCupola()

CPolyhedron::Ptr 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 2207 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase(), and M_PI.

Here is the call graph for this function:

◆ CreateCustomAntiprism()

CPolyhedron::Ptr 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 649 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by CreateRegularAntiprism().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateCustomPrism()

CPolyhedron::Ptr 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 2149 of file CPolyhedron.cpp.

References CreateTruncatedPyramid().

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateDeltoidalHexecontahedron()

CPolyhedron::Ptr 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 2134 of file CPolyhedron.cpp.

References CreateRhombicosidodecahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateDeltoidalIcositetrahedron()

CPolyhedron::Ptr 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 2114 of file CPolyhedron.cpp.

References CreateRhombicuboctahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateDodecahedron()

CPolyhedron::Ptr 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 2039 of file CPolyhedron.cpp.

References CreateIcosahedron().

Referenced by CreateRandomPolyhedron(), and CreateTruncatedDodecahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateDoublePyramid()

CPolyhedron::Ptr 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 588 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by CreateRegularDoublePyramid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateEmpty()

CPolyhedron::Ptr CPolyhedron::CreateEmpty ( )
static

Creates an empty Polyhedron.

Definition at line 2229 of file CPolyhedron.cpp.

References Create().

Referenced by cantellate(), CreateHexahedron(), CreateJohnsonSolidWithConstantBase(), CreateRandomPolyhedron(), CreateTrapezohedron(), and truncate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateFrustum()

CPolyhedron::Ptr 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 2144 of file CPolyhedron.cpp.

References CreateTruncatedPyramid().

Here is the call graph for this function:

◆ CreateHexahedron()

CPolyhedron::Ptr 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 2029 of file CPolyhedron.cpp.

References CreateCubicPrism(), and CreateEmpty().

Referenced by CreateCuboctahedron(), CreateRandomPolyhedron(), and CreateTruncatedHexahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateIcosahedron()

CPolyhedron::Ptr 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 2043 of file CPolyhedron.cpp.

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

Referenced by CreateDodecahedron(), CreateRandomPolyhedron(), CreateRhombicosidodecahedron(), and CreateTruncatedIcosahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateIcosidodecahedron()

CPolyhedron::Ptr 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 2074 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase().

Referenced by CreateRandomPolyhedron(), and CreateRhombicTriacontahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateJohnsonSolidWithConstantBase()

CPolyhedron::Ptr 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 826 of file CPolyhedron.cpp.

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

Referenced by CreateArchimedeanRegularAntiprism(), CreateArchimedeanRegularPrism(), CreateCupola(), CreateIcosahedron(), CreateIcosidodecahedron(), CreateOctahedron(), CreatePentagonalRotunda(), CreateRandomPolyhedron(), CreateRhombicuboctahedron(), and CreateTetrahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateNoCheck()

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

Creates a polyhedron without checking its correctness.

Definition at line 2224 of file CPolyhedron.cpp.

References Create().

Referenced by augment(), cantellate(), CreateBifrustum(), CreateCubicPrism(), CreateCustomAntiprism(), CreateDoublePyramid(), CreateJohnsonSolidWithConstantBase(), CreateParallelepiped(), CreatePyramid(), CreateTrapezohedron(), CreateTruncatedPyramid(), rotate(), scale(), and truncate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateObject()

static std::shared_ptr<CObject> mrpt::opengl::CPolyhedron::CreateObject ( )
static

◆ CreateOctahedron()

CPolyhedron::Ptr 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 2035 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase().

Referenced by CreateRandomPolyhedron(), and CreateTruncatedOctahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateParallelepiped()

CPolyhedron::Ptr 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 684 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Here is the call graph for this function:

◆ CreatePentagonalRotunda()

CPolyhedron::Ptr 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 2094 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase().

Here is the call graph for this function:

◆ CreatePentakisDodecahedron()

CPolyhedron::Ptr 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 2129 of file CPolyhedron.cpp.

References CreateTruncatedIcosahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreatePyramid()

CPolyhedron::Ptr 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 561 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by CreateRegularPyramid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateRandomPolyhedron()

CPolyhedron::Ptr CPolyhedron::CreateRandomPolyhedron ( double  radius)
static

◆ CreateRegularAntiprism()

CPolyhedron::Ptr 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 2154 of file CPolyhedron.cpp.

References CreateCustomAntiprism(), generateBase(), and generateShiftedBase().

Here is the call graph for this function:

◆ CreateRegularBifrustum()

CPolyhedron::Ptr 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 2199 of file CPolyhedron.cpp.

References CreateBifrustum(), and generateBase().

Here is the call graph for this function:

◆ CreateRegularDoublePyramid()

CPolyhedron::Ptr 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 2171 of file CPolyhedron.cpp.

References CreateDoublePyramid(), and generateBase().

Here is the call graph for this function:

◆ CreateRegularFrustum()

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

This is a synonym for CreateRegularTruncatedPyramid.

See also
CreateRegularTruncatedPyramid

Definition at line 2193 of file CPolyhedron.cpp.

References CreateRegularTruncatedPyramid().

Here is the call graph for this function:

◆ CreateRegularPrism()

CPolyhedron::Ptr 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 2161 of file CPolyhedron.cpp.

References CreateCustomPrism(), and generateBase().

Here is the call graph for this function:

◆ CreateRegularPyramid()

CPolyhedron::Ptr 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 2166 of file CPolyhedron.cpp.

References CreatePyramid(), and generateBase().

Here is the call graph for this function:

◆ CreateRegularTruncatedPyramid()

CPolyhedron::Ptr 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 2187 of file CPolyhedron.cpp.

References CreateTruncatedPyramid(), and generateBase().

Referenced by CreateRegularFrustum().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateRhombicDodecahedron()

CPolyhedron::Ptr 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 2102 of file CPolyhedron.cpp.

References CreateCuboctahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateRhombicosidodecahedron()

CPolyhedron::Ptr 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 2089 of file CPolyhedron.cpp.

References CreateIcosahedron().

Referenced by CreateDeltoidalHexecontahedron(), and CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateRhombicTriacontahedron()

CPolyhedron::Ptr 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 2119 of file CPolyhedron.cpp.

References CreateIcosidodecahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateRhombicuboctahedron()

CPolyhedron::Ptr 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 2067 of file CPolyhedron.cpp.

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

Referenced by CreateDeltoidalIcositetrahedron(), and CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTetrahedron()

CPolyhedron::Ptr 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 2022 of file CPolyhedron.cpp.

References CreateJohnsonSolidWithConstantBase().

Referenced by CreateRandomPolyhedron(), and CreateTruncatedTetrahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTetrakisHexahedron()

CPolyhedron::Ptr 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 2110 of file CPolyhedron.cpp.

References CreateTruncatedOctahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTrapezohedron()

CPolyhedron::Ptr 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 772 of file CPolyhedron.cpp.

References CreateEmpty(), CreateNoCheck(), M_PI, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Here is the call graph for this function:

◆ CreateTriakisIcosahedron()

CPolyhedron::Ptr 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 2124 of file CPolyhedron.cpp.

References CreateTruncatedDodecahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTriakisOctahedron()

CPolyhedron::Ptr 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 2106 of file CPolyhedron.cpp.

References CreateTruncatedHexahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTriakisTetrahedron()

CPolyhedron::Ptr 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 2098 of file CPolyhedron.cpp.

References CreateTruncatedTetrahedron().

Referenced by CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTruncatedDodecahedron()

CPolyhedron::Ptr 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 2079 of file CPolyhedron.cpp.

References CreateDodecahedron().

Referenced by CreateRandomPolyhedron(), and CreateTriakisIcosahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTruncatedHexahedron()

CPolyhedron::Ptr 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 2058 of file CPolyhedron.cpp.

References CreateHexahedron().

Referenced by CreateRandomPolyhedron(), and CreateTriakisOctahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTruncatedIcosahedron()

CPolyhedron::Ptr 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 2084 of file CPolyhedron.cpp.

References CreateIcosahedron().

Referenced by CreatePentakisDodecahedron(), and CreateRandomPolyhedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTruncatedOctahedron()

CPolyhedron::Ptr 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 2063 of file CPolyhedron.cpp.

References CreateOctahedron().

Referenced by CreateRandomPolyhedron(), and CreateTetrakisHexahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTruncatedPyramid()

CPolyhedron::Ptr 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 619 of file CPolyhedron.cpp.

References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by CreateCustomPrism(), CreateFrustum(), and CreateRegularTruncatedPyramid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateTruncatedTetrahedron()

CPolyhedron::Ptr 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 2050 of file CPolyhedron.cpp.

References CreateTetrahedron().

Referenced by CreateRandomPolyhedron(), and CreateTriakisTetrahedron().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateUnique()

template<typename... Args>
static UniquePtr mrpt::opengl::CPolyhedron::CreateUnique ( Args &&...  args)
inlinestatic

Definition at line 47 of file CPolyhedron.h.

◆ duplicateGetSmartPtr()

mrpt::rtti::CObject::Ptr CObject::duplicateGetSmartPtr ( ) const
inlineinherited

Makes a deep copy of the object and returns a smart pointer to it.

Definition at line 204 of file CObject.h.

References mrpt::rtti::CObject::clone().

Referenced by mrpt::obs::CRawlog::insert().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ edgesInVertex()

size_t CPolyhedron::edgesInVertex ( size_t  vertex) const
private

Returns how many edges converge in a given vertex.

Definition at line 1892 of file CPolyhedron.cpp.

References m_Edges.

◆ enableAntiAliasing()

void mrpt::opengl::CRenderizableShaderWireFrame::enableAntiAliasing ( bool  enable = true)
inlineinherited

Definition at line 49 of file CRenderizableShaderWireFrame.h.

References mrpt::opengl::CRenderizableShaderWireFrame::m_antiAliasing, and mrpt::opengl::CRenderizable::notifyChange().

Here is the call graph for this function:

◆ enableShowName()

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 90 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_show_name.

◆ enqueForRenderRecursive()

virtual void mrpt::opengl::CRenderizable::enqueForRenderRecursive ( [[maybe_unused] ] const mrpt::opengl::TRenderMatrices state,
[[maybe_unused] ] RenderQueue rq 
) const
inlinevirtualinherited

Process all children objects recursively, if the object is a container.

Definition at line 285 of file CRenderizable.h.

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

Here is the caller graph for this function:

◆ facesInVertex()

size_t CPolyhedron::facesInVertex ( size_t  vertex) const
private

Returns how many faces converge in a given vertex.

Definition at line 1900 of file CPolyhedron.cpp.

References mrpt::containers::find(), and m_Faces.

Here is the call graph for this function:

◆ freeOpenGLResources()

void mrpt::opengl::CPolyhedron::freeOpenGLResources ( )
inlineoverridevirtual

Free opengl buffers.

Implements mrpt::opengl::CRenderizable.

Definition at line 53 of file CPolyhedron.h.

References mrpt::opengl::CRenderizableShaderTriangles::freeOpenGLResources(), and mrpt::opengl::CRenderizableShaderWireFrame::freeOpenGLResources().

Here is the call graph for this function:

◆ generateBase() [1/2]

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

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

Definition at line 1784 of file CPolyhedron.cpp.

References M_PI.

Referenced by CreateRegularAntiprism(), CreateRegularBifrustum(), CreateRegularDoublePyramid(), CreateRegularPrism(), CreateRegularPyramid(), and CreateRegularTruncatedPyramid().

Here is the caller graph for this function:

◆ generateBase() [2/2]

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 1811 of file CPolyhedron.cpp.

References M_PI.

◆ generateShiftedBase() [1/2]

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 1797 of file CPolyhedron.cpp.

References M_PI.

Referenced by CreateJohnsonSolidWithConstantBase(), and CreateRegularAntiprism().

Here is the caller graph for this function:

◆ generateShiftedBase() [2/2]

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 1822 of file CPolyhedron.cpp.

References M_PI.

◆ getBoundingBox()

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

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 1969 of file CPolyhedron.cpp.

References bb_max, bb_min, mrpt::poses::CPose3D::composePoint(), and mrpt::opengl::CRenderizable::m_pose.

Here is the call graph for this function:

◆ getCenter()

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

Gets the center of the polyhedron.

Definition at line 1129 of file CPolyhedron.cpp.

References m_Vertices, mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.

Referenced by augment(), cantellate(), getVolume(), and setNormal().

Here is the caller graph for this function:

◆ getClassName()

static constexpr auto mrpt::opengl::CPolyhedron::getClassName ( )
inlinestatic

Definition at line 47 of file CPolyhedron.h.

◆ getColor()

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

Returns the object color property as a TColorf.

Definition at line 229 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_color.

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

Here is the caller graph for this function:

◆ getColor_u8()

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

Returns the object color property as a TColor.

Definition at line 248 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_color.

◆ getColorA()

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

Color components in the range [0,1].

Definition at line 164 of file CRenderizable.h.

References mrpt::img::TColor::A, mrpt::opengl::CRenderizable::m_color, and mrpt::u8tof().

Here is the call graph for this function:

◆ getColorA_u8()

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

Color components in the range [0,255].

Definition at line 172 of file CRenderizable.h.

References mrpt::img::TColor::A, and mrpt::opengl::CRenderizable::m_color.

◆ getColorB()

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

Color components in the range [0,1].

Definition at line 162 of file CRenderizable.h.

References mrpt::img::TColor::B, mrpt::opengl::CRenderizable::m_color, and mrpt::u8tof().

Here is the call graph for this function:

◆ getColorB_u8()

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

Color components in the range [0,255].

Definition at line 170 of file CRenderizable.h.

References mrpt::img::TColor::B, and mrpt::opengl::CRenderizable::m_color.

◆ getColorG()

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

Color components in the range [0,1].

Definition at line 160 of file CRenderizable.h.

References mrpt::img::TColor::G, mrpt::opengl::CRenderizable::m_color, and mrpt::u8tof().

Here is the call graph for this function:

◆ getColorG_u8()

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

Color components in the range [0,255].

Definition at line 168 of file CRenderizable.h.

References mrpt::img::TColor::G, and mrpt::opengl::CRenderizable::m_color.

◆ getColorR()

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

Color components in the range [0,1].

Definition at line 158 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_color, mrpt::img::TColor::R, and mrpt::u8tof().

Here is the call graph for this function:

◆ getColorR_u8()

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

Color components in the range [0,255].

Definition at line 166 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_color, and mrpt::img::TColor::R.

◆ getDual()

CPolyhedron::Ptr 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 1248 of file CPolyhedron.cpp.

References mrpt::math::TPlane::coefs, faceContainsEdge(), getPlanesIntersection(), m_Edges, m_Faces, m_Vertices, mrpt::square(), val, mrpt::math::TPoint3D_data< T >::x, mrpt::math::TPoint3D_data< T >::y, and mrpt::math::TPoint3D_data< T >::z.

Here is the call graph for this function:

◆ getEdges()

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

Gets a list with the polyhedron's edges.

Definition at line 668 of file CPolyhedron.h.

◆ getEdgesLength()

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

Gets a vector with each edge's length.

Definition at line 1049 of file CPolyhedron.cpp.

References m_Edges, and m_Vertices.

◆ getFaces()

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

Gets a list with the polyhedron's faces.

Definition at line 675 of file CPolyhedron.h.

◆ getFacesArea()

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 1057 of file CPolyhedron.cpp.

References m_Faces, and m_Vertices.

Referenced by getVolume().

Here is the caller graph for this function:

◆ getIntersection()

template<class T >
size_t mrpt::opengl::CPolyhedron::getIntersection ( const CPolyhedron::Ptr p1,
const CPolyhedron::Ptr 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 933 of file CPolyhedron.h.

References mrpt::math::intersect().

Here is the call graph for this function:

◆ getLineWidth()

float mrpt::opengl::CRenderizableShaderWireFrame::getLineWidth ( ) const
inlineinherited

◆ getLocalRepresentativePoint()

virtual mrpt::math::TPoint3Df mrpt::opengl::CRenderizable::getLocalRepresentativePoint ( ) const
inlinevirtualinherited

Provide a representative point (in object local coordinates), used to sort objects by eye-distance while rendering with transparencies (Default=[0,0,0])

Reimplemented in mrpt::opengl::CPlanarLaserScan.

Definition at line 341 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_representativePoint.

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

Here is the caller graph for this function:

◆ getName()

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

Returns the name of the object.

Definition at line 75 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_name.

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

Here is the caller graph for this function:

◆ getNumberOfEdges()

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

Gets the amount of edges.

Definition at line 686 of file CPolyhedron.h.

References m_Vertices.

◆ getNumberOfFaces()

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

Gets the amount of faces.

Definition at line 690 of file CPolyhedron.h.

References m_Edges.

◆ getNumberOfVertices()

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

Gets the amount of vertices.

Definition at line 682 of file CPolyhedron.h.

◆ getPose()

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

Returns the 3D pose of the object as TPose3D.

Definition at line 223 of file CRenderizable.cpp.

Referenced by mrpt::opengl::COpenGLViewport::renderNormalSceneMode().

Here is the caller graph for this function:

◆ getPosePitch()

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

Rotation relative to parent coordinate origin, in DEGREES.

Definition at line 148 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, mrpt::poses::CPose3D::pitch(), and mrpt::RAD2DEG().

Here is the call graph for this function:

◆ getPosePitchRad()

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

Rotation relative to parent coordinate origin, in radians.

Definition at line 154 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, and mrpt::poses::CPose3D::pitch().

Here is the call graph for this function:

◆ getPoseRef()

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 117 of file CRenderizable.h.

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

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

Here is the caller graph for this function:

◆ getPoseRoll()

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

Rotation relative to parent coordinate origin, in DEGREES.

Definition at line 150 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, mrpt::RAD2DEG(), and mrpt::poses::CPose3D::roll().

Here is the call graph for this function:

◆ getPoseRollRad()

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

Rotation relative to parent coordinate origin, in radians.

Definition at line 156 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, and mrpt::poses::CPose3D::roll().

Here is the call graph for this function:

◆ getPoseX()

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

Translation relative to parent coordinate origin.

Definition at line 140 of file CRenderizable.h.

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

Here is the call graph for this function:

◆ getPoseY()

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

Translation relative to parent coordinate origin.

Definition at line 142 of file CRenderizable.h.

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

Here is the call graph for this function:

◆ getPoseYaw()

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

Rotation relative to parent coordinate origin, in DEGREES.

Definition at line 146 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, mrpt::RAD2DEG(), and mrpt::poses::CPose3D::yaw().

Here is the call graph for this function:

◆ getPoseYawRad()

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

Rotation relative to parent coordinate origin, in radians.

Definition at line 152 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, and mrpt::poses::CPose3D::yaw().

Here is the call graph for this function:

◆ getPoseZ()

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

Translation relative to parent coordinate origin.

Definition at line 144 of file CRenderizable.h.

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

◆ GetRuntimeClass()

virtual const mrpt::rtti::TRuntimeClassId* mrpt::opengl::CPolyhedron::GetRuntimeClass ( ) const
overridevirtual

Returns information about the class of an object in runtime.

Reimplemented from mrpt::opengl::CRenderizableShaderTriangles.

◆ GetRuntimeClassIdStatic()

static const mrpt::rtti::TRuntimeClassId& mrpt::opengl::CPolyhedron::GetRuntimeClassIdStatic ( )
static

◆ getScaleX()

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

Get the current scaling factor in one axis.

Definition at line 223 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_scale_x.

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

Here is the caller graph for this function:

◆ getScaleY()

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

Get the current scaling factor in one axis.

Definition at line 225 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_scale_y.

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

Here is the caller graph for this function:

◆ getScaleZ()

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

Get the current scaling factor in one axis.

Definition at line 227 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_scale_z.

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

Here is the caller graph for this function:

◆ getSetOfPolygons()

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 1085 of file CPolyhedron.cpp.

References polygonsUpToDate, tempPolygons, and updatePolygons().

Referenced by cantellate(), and makeConvexPolygons().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSetOfPolygonsAbsolute()

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 1093 of file CPolyhedron.cpp.

References mrpt::poses::CPose3D::composePoint(), m_Faces, mrpt::opengl::CRenderizable::m_pose, and m_Vertices.

Here is the call graph for this function:

◆ getVertices()

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

Gets a list with the polyhedron's vertices.

Definition at line 661 of file CPolyhedron.h.

◆ getVolume()

double CPolyhedron::getVolume ( ) const

Gets the polyhedron volume.

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

Definition at line 1065 of file CPolyhedron.cpp.

References getCenter(), getFacesArea(), m_Faces, polygonsUpToDate, tempPolygons, and updatePolygons().

Here is the call graph for this function:

◆ hasToUpdateBuffers()

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

Returns whether notifyChange() has been invoked since the last call to renderUpdateBuffers(), meaning the latter needs to be called again before rendering.

Definition at line 324 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_outdatedBuffers.

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

Here is the caller graph for this function:

◆ InitFromVertAndFaces()

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

Definition at line 895 of file CPolyhedron.h.

Referenced by CPolyhedron().

Here is the caller graph for this function:

◆ initializeTextures()

virtual void mrpt::opengl::CRenderizable::initializeTextures ( ) const
inlinevirtualinherited

Initializes all textures (loads them into opengl memory).

Reimplemented in mrpt::opengl::CSetOfObjects, and mrpt::opengl::CRenderizableShaderTexturedTriangles.

Definition at line 362 of file CRenderizable.h.

◆ isAntiAliasingEnabled()

bool mrpt::opengl::CRenderizableShaderWireFrame::isAntiAliasingEnabled ( ) const
inlineinherited

◆ isClosed()

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

Returns true if the polygon is a completely closed object.

Definition at line 738 of file CPolyhedron.h.

◆ isShowNameEnabled()

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

Definition at line 92 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_show_name.

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

Here is the caller graph for this function:

◆ isVisible()

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

Is the object visible?

See also
setVisibility

Definition at line 76 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_visible.

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

Here is the caller graph for this function:

◆ isWireframe()

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

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

Definition at line 708 of file CPolyhedron.h.

◆ labelObject()

CText & CRenderizable::labelObject ( ) const
inherited

Returns or constructs (in its first invokation) the associated mrpt::opengl::CText object representing the label of the object.

See also
enableShowName()

Definition at line 238 of file CRenderizable.cpp.

References mrpt::opengl::CText::setString().

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ makeConvexPolygons()

void CPolyhedron::makeConvexPolygons ( )

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

Definition at line 1107 of file CPolyhedron.cpp.

References addEdges(), getSetOfPolygons(), getVerticesAndFaces(), m_Edges, m_Faces, m_Vertices, setNormal(), and mrpt::math::splitInConvexComponents().

Here is the call graph for this function:

◆ notifyChange()

void mrpt::opengl::CRenderizable::notifyChange ( ) const
inlineinherited

Call to enable calling renderUpdateBuffers() before the next render() rendering iteration.

Definition at line 315 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_outdatedBuffers.

Referenced by mrpt::opengl::CMeshFast::adjustGridToImageAR(), mrpt::opengl::CMesh::adjustGridToImageAR(), mrpt::opengl::CVectorField2D::adjustVectorFieldToGrid(), mrpt::opengl::CSetOfLines::appendLine(), mrpt::opengl::CSetOfLines::appendLines(), mrpt::opengl::CRenderizableShaderTexturedTriangles::assignImage(), mrpt::opengl::CMeshFast::assignImage(), mrpt::opengl::CMesh::assignImage(), mrpt::opengl::CMeshFast::assignImageAndZ(), mrpt::opengl::CMesh::assignImageAndZ(), mrpt::opengl::CSetOfLines::begin(), mrpt::opengl::CSetOfLines::clear(), mrpt::opengl::CVectorField2D::clear(), mrpt::opengl::CAssimpModel::clear(), mrpt::opengl::CPlanarLaserScan::clear(), mrpt::opengl::CVectorField3D::clear(), mrpt::opengl::CPointCloud::clear(), mrpt::opengl::CPointCloudColoured::clear(), mrpt::opengl::COctoMapVoxels::clear(), mrpt::opengl::CSetOfTexturedTriangles::clearTriangles(), mrpt::opengl::CSetOfTriangles::clearTriangles(), mrpt::opengl::CRenderizableShaderWireFrame::enableAntiAliasing(), mrpt::opengl::CVectorField2D::enableAntiAliasing(), mrpt::opengl::CSetOfLines::enableAntiAliasing(), mrpt::opengl::CBox::enableBoxBorder(), mrpt::opengl::CVectorField3D::enableColorFromModule(), mrpt::opengl::CPointCloud::enableColorFromX(), mrpt::opengl::CPointCloud::enableColorFromY(), mrpt::opengl::CMeshFast::enableColorFromZ(), mrpt::opengl::CMesh::enableColorFromZ(), mrpt::opengl::CPointCloud::enableColorFromZ(), mrpt::opengl::COctoMapVoxels::enableCubeTransparency(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::enableDrawSolid3D(), mrpt::opengl::CMesh3D::enableFaceNormals(), mrpt::opengl::COctoMapVoxels::enableLights(), mrpt::opengl::CPlanarLaserScan::enableLine(), mrpt::opengl::CPlanarLaserScan::enablePoints(), mrpt::opengl::CPointCloud::enablePointSmooth(), 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::CMeshFast::enableTransparency(), mrpt::opengl::CMesh::enableTransparency(), mrpt::opengl::CAngularObservationMesh::enableTransparency(), mrpt::opengl::CMesh::enableWireFrame(), mrpt::opengl::CSetOfLines::end(), mrpt::opengl::COctoMapVoxels::getGridCubeRef(), mrpt::opengl::CSetOfTexturedTriangles::getTriangle(), mrpt::opengl::COctoMapVoxels::getVoxel(), mrpt::opengl::COctoMapVoxels::getVoxelRef(), mrpt::opengl::CPointCloud::insertPoint(), mrpt::opengl::CSetOfTexturedTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangles(), mrpt::opengl::CPointCloud::loadFromPointsList(), mrpt::opengl::CPointCloudColoured::loadFromPointsMap(), mrpt::opengl::CPointCloud::loadFromPointsMap(), mrpt::opengl::CMesh3D::loadMesh(), mrpt::opengl::CAssimpModel::loadScene(), mrpt::opengl::CPointCloudColoured::push_back(), mrpt::opengl::COctoMapVoxels::push_back_GridCube(), mrpt::opengl::COctoMapVoxels::push_back_Voxel(), mrpt::opengl::CRenderizableShaderTexturedTriangles::readFromStreamTexturedObject(), mrpt::opengl::CSetOfTriangles::reserve(), mrpt::opengl::CSetOfLines::reserve(), mrpt::opengl::COctoMapVoxels::reserveVoxels(), mrpt::opengl::CPointCloudColoured::resize(), 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::CSimpleLine::serializeFrom(), mrpt::opengl::CTexturedPlane::serializeFrom(), mrpt::opengl::CSetOfTriangles::serializeFrom(), mrpt::opengl::CArrow::serializeFrom(), mrpt::opengl::CSphere::serializeFrom(), mrpt::opengl::CGridPlaneXY::serializeFrom(), mrpt::opengl::CAxis::serializeFrom(), mrpt::opengl::CGridPlaneXZ::serializeFrom(), mrpt::opengl::CDisk::serializeFrom(), mrpt::opengl::CSetOfLines::serializeFrom(), mrpt::opengl::CColorBar::serializeFrom(), mrpt::opengl::CVectorField2D::serializeFrom(), mrpt::opengl::CMeshFast::serializeFrom(), mrpt::opengl::CMesh::serializeFrom(), mrpt::opengl::CVectorField3D::serializeFrom(), mrpt::opengl::CBox::serializeFrom(), mrpt::opengl::CText3D::serializeFrom(), mrpt::opengl::CAssimpModel::serializeFrom(), serializeFrom(), mrpt::opengl::CPointCloudColoured::serializeFrom(), mrpt::opengl::CFrustum::serializeFrom(), mrpt::opengl::COctoMapVoxels::serializeFrom(), mrpt::opengl::CPointCloud::setAllPoints(), mrpt::opengl::CPointCloud::setAllPointsFast(), mrpt::opengl::CArrow::setArrowEnds(), mrpt::opengl::CAxis::setAxisLimits(), mrpt::opengl::CBox::setBoxBorderColor(), mrpt::opengl::CBox::setBoxCorners(), 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::CGeneralizedEllipsoidTemplate< 3 >::setCovMatrixAndMean(), mrpt::opengl::CDisk::setDiskRadius(), mrpt::opengl::CText::setFont(), mrpt::opengl::CText3D::setFont(), mrpt::opengl::CAxis::setFrequency(), mrpt::opengl::CVectorField2D::setGridCenterAndCellSize(), mrpt::opengl::CGridPlaneXZ::setGridFrequency(), mrpt::opengl::CGridPlaneXY::setGridFrequency(), mrpt::opengl::CMeshFast::setGridLimits(), mrpt::opengl::CMesh::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::CRenderizableShaderWireFrame::setLineWidth(), mrpt::opengl::CBox::setLineWidth(), mrpt::opengl::CMesh::setMask(), mrpt::opengl::CVectorField3D::setMaxSpeedForColor(), mrpt::opengl::CVectorField3D::setMotionFieldColormap(), mrpt::opengl::CFrustum::setNearFarPlanes(), mrpt::opengl::CSphere::setNumberDivsLatitude(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setNumberOfSegments(), mrpt::opengl::CFrustum::setPlaneColor(), mrpt::opengl::CTexturedPlane::setPlaneCorners(), mrpt::opengl::CGridPlaneXZ::setPlaneLimits(), mrpt::opengl::CGridPlaneXY::setPlaneLimits(), mrpt::opengl::CGridPlaneXZ::setPlaneYcoord(), mrpt::opengl::CGridPlaneXY::setPlaneZcoord(), mrpt::opengl::CPointCloudColoured::setPoint(), mrpt::opengl::CPointCloud::setPoint(), mrpt::opengl::CVectorField2D::setPointColor(), mrpt::opengl::CVectorField3D::setPointColor(), mrpt::opengl::CVectorField3D::setPointCoordinates(), 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::CArrow::setSlicesCount(), mrpt::opengl::CCylinder::setSlicesCount(), mrpt::opengl::CArrow::setSmallRadius(), mrpt::opengl::CText::setString(), mrpt::opengl::CText3D::setString(), mrpt::opengl::CText3D::setTextKerning(), mrpt::opengl::CAxis::setTextScale(), mrpt::opengl::CText3D::setTextSpacing(), mrpt::opengl::CText3D::setTextStyle(), mrpt::opengl::CAxis::setTickMarksLength(), 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::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::CMeshFast::setZ(), mrpt::opengl::CMesh::setZ(), mrpt::opengl::COctoMapVoxels::showGridLines(), mrpt::opengl::COctoMapVoxels::showVoxels(), mrpt::opengl::COctoMapVoxels::showVoxelsAsPoints(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::thisclass_readFromStream(), mrpt::opengl::CMeshFast::updateColorsMatrix(), mrpt::opengl::CMesh::updateColorsMatrix(), mrpt::opengl::CMeshFast::updatePoints(), mrpt::opengl::CSetOfTriangles::updatePolygons(), mrpt::opengl::CMesh::updatePolygons(), and mrpt::opengl::CMesh::updateTriangles().

◆ onUpdateBuffers_Triangles()

void CPolyhedron::onUpdateBuffers_Triangles ( )
overridevirtual

Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" fields.

Implements mrpt::opengl::CRenderizableShaderTriangles.

Definition at line 2264 of file CPolyhedron.cpp.

References mrpt::math::crossProduct3D(), mrpt::opengl::CRenderizable::m_color, m_Faces, mrpt::opengl::CRenderizableShaderTriangles::m_triangles, and m_Vertices.

Here is the call graph for this function:

◆ onUpdateBuffers_Wireframe()

void CPolyhedron::onUpdateBuffers_Wireframe ( )
overridevirtual

Must be implemented in derived classes to update the geometric entities to be drawn in "m_*_buffer" fields.

Implements mrpt::opengl::CRenderizableShaderWireFrame.

Definition at line 2249 of file CPolyhedron.cpp.

References mrpt::opengl::CRenderizable::m_color, mrpt::opengl::CRenderizableShaderWireFrame::m_color_buffer_data, m_Edges, mrpt::opengl::CRenderizableShaderWireFrame::m_vertex_buffer_data, and m_Vertices.

◆ readFromStreamRender()

void CRenderizable::readFromStreamRender ( mrpt::serialization::CArchive in)
protectedinherited

Definition at line 99 of file CRenderizable.cpp.

References mrpt::obs::gnss::pitch, mrpt::serialization::CArchive::ReadBuffer(), mrpt::obs::gnss::roll, THROW_EXCEPTION, and THROW_EXCEPTION_FMT.

Referenced by mrpt::opengl::CGridPlaneXY::serializeFrom(), mrpt::opengl::CGridPlaneXZ::serializeFrom(), mrpt::opengl::CSetOfLines::serializeFrom(), mrpt::opengl::CVectorField3D::serializeFrom(), serializeFrom(), and mrpt::opengl::CFrustum::serializeFrom().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ render()

void CPolyhedron::render ( const RenderContext rc) const
overridevirtual

Implements the rendering of 3D objects in each class derived from CRenderizable.

This can be called more than once (one per required shader program) if the object registered several shaders.

See also
renderUpdateBuffers

Implements mrpt::opengl::CRenderizable.

Definition at line 2231 of file CPolyhedron.cpp.

References m_Wireframe, mrpt::opengl::CRenderizableShaderWireFrame::render(), mrpt::opengl::CRenderizableShaderTriangles::render(), mrpt::opengl::CRenderizable::RenderContext::shader_id, mrpt::opengl::DefaultShaderID::TRIANGLES, and mrpt::opengl::DefaultShaderID::WIREFRAME.

Here is the call graph for this function:

◆ renderUpdateBuffers()

void CPolyhedron::renderUpdateBuffers ( ) const
overridevirtual

Called whenever m_outdatedBuffers is true: used to re-generate OpenGL vertex buffers, etc.

before they are sent for rendering in render()

Implements mrpt::opengl::CRenderizable.

Definition at line 2243 of file CPolyhedron.cpp.

References mrpt::opengl::CRenderizableShaderWireFrame::renderUpdateBuffers(), and mrpt::opengl::CRenderizableShaderTriangles::renderUpdateBuffers().

Here is the call graph for this function:

◆ requiredShaders()

virtual shader_list_t mrpt::opengl::CPolyhedron::requiredShaders ( ) const
inlineoverridevirtual

Returns the ID of the OpenGL shader program required to render this class.

See also
DefaultShaderID

Reimplemented from mrpt::opengl::CRenderizableShaderTriangles.

Definition at line 59 of file CPolyhedron.h.

References mrpt::opengl::DefaultShaderID::TRIANGLES, and mrpt::opengl::DefaultShaderID::WIREFRAME.

◆ rotate()

CPolyhedron::Ptr 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 1757 of file CPolyhedron.cpp.

References CreateNoCheck(), m_Faces, m_Vertices, and A::x.

Here is the call graph for this function:

◆ scale()

CPolyhedron::Ptr 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 1771 of file CPolyhedron.cpp.

References CreateNoCheck(), m_Faces, and m_Vertices.

Here is the call graph for this function:

◆ serializeFrom() [1/2]

void CPolyhedron::serializeFrom ( mrpt::serialization::CArchive in,
uint8_t  serial_version 
)
overrideprotectedvirtual

Pure virtual method for reading (deserializing) from an abstract archive.

Users don't call this method directly. Instead, use stream >> object;.

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 I/O error

Implements mrpt::serialization::CSerializable.

Definition at line 1946 of file CPolyhedron.cpp.

References addEdges(), checkConsistence(), m_Faces, mrpt::opengl::CRenderizableShaderWireFrame::m_lineWidth, m_Vertices, m_Wireframe, MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION, mrpt::opengl::CRenderizable::notifyChange(), mrpt::opengl::CRenderizable::readFromStreamRender(), and setNormal().

Here is the call graph for this function:

◆ serializeFrom() [2/2]

virtual void mrpt::serialization::CSerializable::serializeFrom ( CSchemeArchiveBase in)
inlineprotectedvirtualinherited

Virtual method for reading (deserializing) from an abstract schema based archive.

Definition at line 74 of file CSerializable.h.

References mrpt::serialization::CSerializable::GetRuntimeClass(), and THROW_EXCEPTION.

Here is the call graph for this function:

◆ serializeGetVersion()

uint8_t CPolyhedron::serializeGetVersion ( ) const
overrideprotectedvirtual

Must return the current versioning number of the object.

Start in zero for new classes, and increments each time there is a change in the stored format.

Implements mrpt::serialization::CSerializable.

Definition at line 1938 of file CPolyhedron.cpp.

◆ serializeTo() [1/2]

void CPolyhedron::serializeTo ( mrpt::serialization::CArchive out) const
overrideprotectedvirtual

Pure virtual method for writing (serializing) to an abstract archive.

Users don't call this method directly. Instead, use stream << object;.

Exceptions
std::exceptionOn any I/O error

Implements mrpt::serialization::CSerializable.

Definition at line 1939 of file CPolyhedron.cpp.

References m_Faces, mrpt::opengl::CRenderizableShaderWireFrame::m_lineWidth, m_Vertices, m_Wireframe, out, and mrpt::opengl::CRenderizable::writeToStreamRender().

Here is the call graph for this function:

◆ serializeTo() [2/2]

virtual void mrpt::serialization::CSerializable::serializeTo ( CSchemeArchiveBase out) const
inlineprotectedvirtualinherited

Virtual method for writing (serializing) to an abstract schema based archive.

Definition at line 64 of file CSerializable.h.

References mrpt::serialization::CSerializable::GetRuntimeClass(), and THROW_EXCEPTION.

Here is the call graph for this function:

◆ setColor() [1/2]

CRenderizable& mrpt::opengl::CRenderizable::setColor ( const mrpt::img::TColorf c)
inlineinherited

Changes the default object color.

Returns
a ref to this

Definition at line 234 of file CRenderizable.h.

References mrpt::img::TColorf::A, mrpt::img::TColorf::B, mrpt::f2u8(), mrpt::img::TColorf::G, mrpt::img::TColorf::R, and mrpt::opengl::CRenderizable::setColor_u8().

Here is the call graph for this function:

◆ setColor() [2/2]

CRenderizable& mrpt::opengl::CRenderizable::setColor ( float  R,
float  G,
float  B,
float  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 242 of file CRenderizable.h.

References mrpt::f2u8(), G, R, and mrpt::opengl::CRenderizable::setColor_u8().

Here is the call graph for this function:

◆ setColor_u8() [1/2]

CRenderizable & CRenderizable::setColor_u8 ( const mrpt::img::TColor c)
virtualinherited

Reimplemented in mrpt::opengl::CSetOfObjects, and mrpt::opengl::CSetOfTriangles.

Definition at line 229 of file CRenderizable.cpp.

References mrpt::img::TColor::A, mrpt::img::TColor::B, mrpt::img::TColor::G, and mrpt::img::TColor::R.

Referenced by mrpt::opengl::CRenderizable::setColor(), and mrpt::opengl::CRenderizable::setColor_u8().

Here is the caller graph for this function:

◆ setColor_u8() [2/2]

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

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

Returns
a ref to this

Definition at line 254 of file CRenderizable.h.

References G, R, and mrpt::opengl::CRenderizable::setColor_u8().

Here is the call graph for this function:

◆ setColorA()

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

Color components in the range [0,1].

Returns
a ref to this

Definition at line 180 of file CRenderizable.h.

References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorA_u8().

Here is the call graph for this function:

◆ setColorA_u8()

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

Color components in the range [0,255].

Returns
a ref to this

Reimplemented in mrpt::opengl::CSetOfObjects, and mrpt::opengl::CSetOfTriangles.

Definition at line 200 of file CRenderizable.h.

References mrpt::img::TColor::A, and mrpt::opengl::CRenderizable::m_color.

Referenced by mrpt::nav::ClearanceDiagram::renderAs3DObject(), mrpt::opengl::CRenderizable::setColorA(), and mrpt::opengl::CSetOfObjects::setColorA_u8().

Here is the caller graph for this function:

◆ setColorB()

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

Color components in the range [0,1].

Returns
a ref to this

Definition at line 178 of file CRenderizable.h.

References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorB_u8().

Here is the call graph for this function:

◆ setColorB_u8()

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

Color components in the range [0,255].

Returns
a ref to this

Reimplemented in mrpt::opengl::CSetOfObjects, and mrpt::opengl::CSetOfTriangles.

Definition at line 194 of file CRenderizable.h.

References mrpt::img::TColor::B, and mrpt::opengl::CRenderizable::m_color.

Referenced by mrpt::opengl::CRenderizable::setColorB(), and mrpt::opengl::CSetOfObjects::setColorB_u8().

Here is the caller graph for this function:

◆ setColorG()

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

Color components in the range [0,1].

Returns
a ref to this

Definition at line 176 of file CRenderizable.h.

References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorG_u8().

Here is the call graph for this function:

◆ setColorG_u8()

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

Color components in the range [0,255].

Returns
a ref to this

Reimplemented in mrpt::opengl::CSetOfObjects, and mrpt::opengl::CSetOfTriangles.

Definition at line 188 of file CRenderizable.h.

References mrpt::img::TColor::G, and mrpt::opengl::CRenderizable::m_color.

Referenced by mrpt::opengl::CRenderizable::setColorG(), and mrpt::opengl::CSetOfObjects::setColorG_u8().

Here is the caller graph for this function:

◆ setColorR()

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

Color components in the range [0,1].

Returns
a ref to this

Definition at line 174 of file CRenderizable.h.

References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorR_u8().

Here is the call graph for this function:

◆ setColorR_u8()

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

Color components in the range [0,255].

Returns
a ref to this

Reimplemented in mrpt::opengl::CSetOfObjects, and mrpt::opengl::CSetOfTriangles.

Definition at line 182 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_color, and mrpt::img::TColor::R.

Referenced by mrpt::opengl::CRenderizable::setColorR(), and mrpt::opengl::CSetOfObjects::setColorR_u8().

Here is the caller graph for this function:

◆ setLineWidth()

void mrpt::opengl::CRenderizableShaderWireFrame::setLineWidth ( float  w)
inlineinherited

Definition at line 43 of file CRenderizableShaderWireFrame.h.

References mrpt::opengl::CRenderizableShaderWireFrame::m_lineWidth, and mrpt::opengl::CRenderizable::notifyChange().

Referenced by mrpt::opengl::CAxis::CAxis(), mrpt::opengl::CBox::CBox(), mrpt::opengl::CFrustum::CFrustum(), and mrpt::opengl::COctoMapVoxels::onUpdateBuffers_Wireframe().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setLocalRepresentativePoint()

void mrpt::opengl::CRenderizable::setLocalRepresentativePoint ( const mrpt::math::TPoint3Df p)
inlineinherited

◆ setLocation() [1/2]

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 121 of file CRenderizable.h.

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

Here is the call graph for this function:

◆ setLocation() [2/2]

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 131 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_pose, mrpt::math::TPoint3D_data< T >::x, mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), mrpt::math::TPoint3D_data< T >::y, mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y(), and mrpt::math::TPoint3D_data< T >::z.

Here is the call graph for this function:

◆ setName()

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

Changes the name of the object.

Definition at line 73 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_name.

◆ setNormal()

bool CPolyhedron::setNormal ( TPolyhedronFace f,
bool  doCheck = true 
)
private

Calculates the normal vector to a face.

Definition at line 1842 of file CPolyhedron.cpp.

References getCenter(), mrpt::math::TPolygon3D::getPlane(), m_Vertices, mrpt::opengl::CPolyhedron::TPolyhedronFace::normal, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.

Referenced by makeConvexPolygons(), and serializeFrom().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setPose() [1/6]

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 189 of file CRenderizable.cpp.

Referenced by mrpt::opengl::COpenGLViewport::setCurrentCameraFromPose().

Here is the caller graph for this function:

◆ setPose() [2/6]

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 194 of file CRenderizable.cpp.

◆ setPose() [3/6]

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 199 of file CRenderizable.cpp.

◆ setPose() [4/6]

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 204 of file CRenderizable.cpp.

◆ setPose() [5/6]

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

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

Set the 3D pose from a mrpt::poses::CPose3D object.

Definition at line 211 of file CRenderizable.cpp.

References mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y().

Here is the call graph for this function:

◆ setPose() [6/6]

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

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

Set the 3D pose from a mrpt::poses::CPose3D object.

Definition at line 217 of file CRenderizable.cpp.

References mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y().

Here is the call graph for this function:

◆ setScale() [1/2]

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 208 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_scale_x, mrpt::opengl::CRenderizable::m_scale_y, and mrpt::opengl::CRenderizable::m_scale_z.

◆ setScale() [2/2]

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 215 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_scale_x, mrpt::opengl::CRenderizable::m_scale_y, and mrpt::opengl::CRenderizable::m_scale_z.

◆ setVisibility()

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

Set object visibility (default=true)

See also
isVisible

Definition at line 81 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_visible.

◆ setWireframe()

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

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

Definition at line 712 of file CPolyhedron.h.

References m_Wireframe.

◆ shaderTexturedTrianglesBuffer()

const auto& mrpt::opengl::CRenderizableShaderTriangles::shaderTexturedTrianglesBuffer ( ) const
inlineinherited

◆ shaderWireframeVertexColorBuffer()

const auto& mrpt::opengl::CRenderizableShaderWireFrame::shaderWireframeVertexColorBuffer ( ) const
inlineinherited

◆ shaderWireframeVertexPointBuffer()

const auto& mrpt::opengl::CRenderizableShaderWireFrame::shaderWireframeVertexPointBuffer ( ) const
inlineinherited

◆ traceRay()

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

Simulation of ray-trace, given a pose.

Returns true if the ray effectively collisions with the object (returning the distance to the origin of the ray in "dist"), or false in other case. "dist" variable yields undefined behaviour when false is returned

Reimplemented from mrpt::opengl::CRenderizable.

Definition at line 1043 of file CPolyhedron.cpp.

References mrpt::opengl::CRenderizable::m_pose, polygonsUpToDate, tempPolygons, mrpt::math::traceRay(), and updatePolygons().

Here is the call graph for this function:

◆ truncate()

CPolyhedron::Ptr 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 1324 of file CPolyhedron.cpp.

References CreateEmpty(), CreateNoCheck(), m_Edges, m_Faces, m_Vertices, searchForEdge(), searchForFace(), THROW_EXCEPTION, mrpt::opengl::CPolyhedron::TPolyhedronEdge::v1, and mrpt::opengl::CPolyhedron::TPolyhedronEdge::v2.

Here is the call graph for this function:

◆ updateBuffers()

void mrpt::opengl::CRenderizable::updateBuffers ( ) const
inlineinherited

Calls renderUpdateBuffers() and clear the flag that is set with notifyChange()

Definition at line 307 of file CRenderizable.h.

References mrpt::opengl::CRenderizable::m_outdatedBuffers, and mrpt::opengl::CRenderizable::renderUpdateBuffers().

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

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updatePolygons()

void CPolyhedron::updatePolygons ( ) const

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

Definition at line 1833 of file CPolyhedron.cpp.

References m_Faces, m_Vertices, polygonsUpToDate, and tempPolygons.

Referenced by getSetOfPolygons(), getVolume(), and traceRay().

Here is the caller graph for this function:

◆ writeToMatlab()

virtual mxArray* mrpt::serialization::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 nullptr is class does not support conversion to MATLAB.

Definition at line 90 of file CSerializable.h.

◆ writeToStreamRender()

void CRenderizable::writeToStreamRender ( mrpt::serialization::CArchive out) const
protectedinherited

Definition at line 44 of file CRenderizable.cpp.

References out.

Referenced by mrpt::opengl::CGridPlaneXY::serializeTo(), mrpt::opengl::CGridPlaneXZ::serializeTo(), mrpt::opengl::CSetOfLines::serializeTo(), mrpt::opengl::CVectorField3D::serializeTo(), serializeTo(), and mrpt::opengl::CFrustum::serializeTo().

Here is the caller graph for this function:

Member Data Documentation

◆ className

constexpr const char* mrpt::opengl::CPolyhedron::className = "mrpt::opengl" "::" "CPolyhedron"
static

Definition at line 47 of file CPolyhedron.h.

◆ m_antiAliasing

bool mrpt::opengl::CRenderizableShaderWireFrame::m_antiAliasing = false
protectedinherited

◆ m_color

mrpt::img::TColor mrpt::opengl::CRenderizable::m_color
protectedinherited

◆ m_color_buffer_data

std::vector<mrpt::img::TColor> mrpt::opengl::CRenderizableShaderWireFrame::m_color_buffer_data
mutableprotectedinherited

◆ m_Edges

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

◆ m_Faces

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

◆ m_label_obj

std::shared_ptr<mrpt::opengl::CText> mrpt::opengl::CRenderizable::m_label_obj
mutableprotectedinherited

Optional pointer to a mrpt::opengl::CText.

Definition at line 372 of file CRenderizable.h.

◆ m_lineWidth

float mrpt::opengl::CRenderizableShaderWireFrame::m_lineWidth = 1.0f
protectedinherited

◆ m_name

std::string mrpt::opengl::CRenderizable::m_name
protectedinherited

◆ m_outdatedBuffers

bool mrpt::opengl::CRenderizable::m_outdatedBuffers = true
protectedinherited

◆ m_pose

mrpt::poses::CPose3D mrpt::opengl::CRenderizable::m_pose
protectedinherited

◆ m_representativePoint

mrpt::math::TPoint3Df mrpt::opengl::CRenderizable::m_representativePoint {0, 0, 0}
protectedinherited

◆ m_scale_x

float mrpt::opengl::CRenderizable::m_scale_x {1}
protectedinherited

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

Definition at line 64 of file CRenderizable.h.

Referenced by mrpt::opengl::CRenderizable::getScaleX(), and mrpt::opengl::CRenderizable::setScale().

◆ m_scale_y

float mrpt::opengl::CRenderizable::m_scale_y {1}
protectedinherited

◆ m_scale_z

float mrpt::opengl::CRenderizable::m_scale_z {1}
protectedinherited

◆ m_show_name

bool mrpt::opengl::CRenderizable::m_show_name {false}
protectedinherited

◆ m_triangles

std::vector<mrpt::opengl::TTriangle> mrpt::opengl::CRenderizableShaderTriangles::m_triangles
mutableprotectedinherited

◆ m_vertex_buffer_data

std::vector<mrpt::math::TPoint3Df> mrpt::opengl::CRenderizableShaderWireFrame::m_vertex_buffer_data
mutableprotectedinherited

◆ m_Vertices

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

◆ m_visible

bool mrpt::opengl::CRenderizable::m_visible {true}
protectedinherited

Is the object visible? (default=true)

Definition at line 66 of file CRenderizable.h.

Referenced by mrpt::opengl::CRenderizable::isVisible(), and mrpt::opengl::CRenderizable::setVisibility().

◆ m_Wireframe

bool mrpt::opengl::CPolyhedron::m_Wireframe {false}
protected

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

Definition at line 140 of file CPolyhedron.h.

Referenced by render(), serializeFrom(), serializeTo(), and setWireframe().

◆ polygonsUpToDate

bool mrpt::opengl::CPolyhedron::polygonsUpToDate {false}
mutableprotected

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

Definition at line 148 of file CPolyhedron.h.

Referenced by getSetOfPolygons(), getVolume(), traceRay(), and updatePolygons().

◆ runtimeClassId

const mrpt::rtti::TRuntimeClassId mrpt::opengl::CPolyhedron::runtimeClassId
staticprotected

Definition at line 47 of file CPolyhedron.h.

◆ tempPolygons

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

Mutable list of actual polygons, maintained for speed.

Definition at line 144 of file CPolyhedron.h.

Referenced by getSetOfPolygons(), getVolume(), traceRay(), and updatePolygons().




Page generated by Doxygen 1.8.14 for MRPT 2.0.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020