MRPT
2.0.4
|
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
Definition at line 44 of file CPolyhedron.h.
#include <mrpt/opengl/CPolyhedron.h>
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 ¢er) 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::CText & | labelObject () 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 mxArray * | writeToMatlab () 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 |
CRenderizable & | setPose (const mrpt::poses::CPose3D &o) |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More... | |
CRenderizable & | setPose (const mrpt::poses::CPose2D &o) |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More... | |
CRenderizable & | setPose (const mrpt::math::TPose3D &o) |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this) More... | |
CRenderizable & | setPose (const mrpt::math::TPose2D &o) |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this) More... | |
CRenderizable & | setPose (const mrpt::poses::CPoint3D &o) |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) More... | |
CRenderizable & | setPose (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::CPose3D & | getPoseRef () const |
Returns a const ref to the 3D pose of the object as mrpt::poses::CPose3D (which explicitly contains the 3x3 rotation matrix) More... | |
CRenderizable & | setLocation (double x, double y, double z) |
Changes the location of the object, keeping untouched the orientation. More... | |
CRenderizable & | setLocation (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... | |
CRenderizable & | setColorR (const float r) |
Color components in the range [0,1]. More... | |
CRenderizable & | setColorG (const float g) |
Color components in the range [0,1]. More... | |
CRenderizable & | setColorB (const float b) |
Color components in the range [0,1]. More... | |
CRenderizable & | setColorA (const float a) |
Color components in the range [0,1]. More... | |
virtual CRenderizable & | setColorR_u8 (const uint8_t r) |
Color components in the range [0,255]. More... | |
virtual CRenderizable & | setColorG_u8 (const uint8_t g) |
Color components in the range [0,255]. More... | |
virtual CRenderizable & | setColorB_u8 (const uint8_t b) |
Color components in the range [0,255]. More... | |
virtual CRenderizable & | setColorA_u8 (const uint8_t a) |
Color components in the range [0,255]. More... | |
CRenderizable & | setScale (float s) |
Scale to apply to the object, in all three axes (default=1) More... | |
CRenderizable & | setScale (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... | |
CRenderizable & | setColor (const mrpt::img::TColorf &c) |
Changes the default object color. More... | |
CRenderizable & | setColor (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::TColor & | getColor_u8 () const |
Returns the object color property as a TColor. More... | |
virtual CRenderizable & | setColor_u8 (const mrpt::img::TColor &c) |
CRenderizable & | setColor_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::TPoint3D > | m_Vertices |
List of vertices presents in the polyhedron. More... | |
std::vector< TPolyhedronEdge > | m_Edges |
List of polyhedron's edges. More... | |
std::vector< TPolyhedronFace > | m_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::TPolygonWithPlane > | tempPolygons |
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::TPoint3Df > | m_vertex_buffer_data |
std::vector< mrpt::img::TColor > | m_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::CText > | m_label_obj |
Optional pointer to a mrpt::opengl::CText. More... | |
std::vector< mrpt::opengl::TTriangle > | m_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::TPoint2D > | generateBase (uint32_t numBaseEdges, double baseRadius) |
Generates a list of 2D vertices constituting a regular polygon. More... | |
static std::vector< mrpt::math::TPoint2D > | generateShiftedBase (uint32_t numBaseEdges, double baseRadius) |
Generates a list of 2D vertices constituting a regular polygon, with an angle shift which makes it suitable for antiprisms. More... | |
static void | generateBase (uint32_t numBaseEdges, double baseRadius, double height, std::vector< mrpt::math::TPoint3D > &vec) |
Generates a list of 3D vertices constituting a regular polygon, appending it to an existing vector. More... | |
static void | generateShiftedBase (uint32_t numBaseEdges, double baseRadius, double height, double shift, std::vector< mrpt::math::TPoint3D > &vec) |
Generates a list of 3D vertices constituting a regular polygon conveniently shifted, appending it to an existing vector. More... | |
static bool | checkConsistence (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces) |
Checks whether a set of faces is suitable for a set of vertices. More... | |
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::TRuntimeClassId & | GetRuntimeClassIdStatic () |
static std::shared_ptr< CObject > | CreateObject () |
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::TRuntimeClassId * | GetRuntimeClass () const override |
Returns information about the class of an object in runtime. More... | |
virtual mrpt::rtti::CObject * | clone () const override |
Returns a deep copy (clone) of the object, indepently of its class. More... | |
using mrpt::opengl::CPolyhedron::ConstPtr = std::shared_ptr<const mrpt::opengl :: CPolyhedron > |
Definition at line 47 of file CPolyhedron.h.
using mrpt::opengl::CPolyhedron::ConstUniquePtr = std::unique_ptr<const mrpt::opengl :: CPolyhedron > |
Definition at line 47 of file CPolyhedron.h.
using mrpt::opengl::CPolyhedron::Ptr = std::shared_ptr< mrpt::opengl :: CPolyhedron > |
A type for the associated smart pointer
Definition at line 47 of file CPolyhedron.h.
using mrpt::opengl::CPolyhedron::UniquePtr = std::unique_ptr< mrpt::opengl :: CPolyhedron > |
Definition at line 47 of file CPolyhedron.h.
|
inline |
Basic empty constructor.
Definition at line 879 of file CPolyhedron.h.
|
inline |
Basic constructor with a list of vertices and another of faces, checking for correctness.
Definition at line 884 of file CPolyhedron.h.
CPolyhedron::CPolyhedron | ( | const std::vector< math::TPolygon3D > & | polys | ) |
Definition at line 514 of file CPolyhedron.cpp.
References getVerticesAndFaces(), InitFromVertAndFaces(), m_Faces, and m_Vertices.
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.
|
overridedefault |
Destructor.
|
staticprotected |
|
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().
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.
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.
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.
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.
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.
std::logic_error | a non-regular face has been found. |
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.
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.
std::logic_error | a non-regular face has been found. |
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.
CPolyhedron::Ptr CPolyhedron::cantellate | ( | double | factor | ) | const |
Cantellates a polyhedron to a given factor.
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().
|
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().
|
overridevirtual |
Returns a deep copy (clone) of the object, indepently of its class.
Implements mrpt::rtti::CObject.
|
inlinestatic |
Definition at line 47 of file CPolyhedron.h.
Referenced by CreateEmpty(), and CreateNoCheck().
|
inlinestatic |
Definition at line 47 of file CPolyhedron.h.
|
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.
Definition at line 2182 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase().
Referenced by CreateCatalanTrapezohedron(), and CreateRandomPolyhedron().
|
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.
Definition at line 2177 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase().
Referenced by CreateCatalanDoublePyramid(), and CreateRandomPolyhedron().
|
static |
Creates a bifrustum, or double truncated pyramid, given a base which will lie on the XY plane.
Definition at line 724 of file CPolyhedron.cpp.
References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
Referenced by CreateRegularBifrustum().
|
static |
Creates a double pyramid whose dual is exactly an archimedean prism.
Creates an octahedron if numBaseEdges is equal to 4.
Definition at line 2218 of file CPolyhedron.cpp.
References CreateArchimedeanRegularPrism().
Referenced by CreateRandomPolyhedron().
|
static |
Creates a trapezohedron whose dual is exactly an archimedean antiprism.
Creates a cube if numBaseEdges is equal to 3.
Definition at line 2213 of file CPolyhedron.cpp.
References CreateArchimedeanRegularAntiprism().
Referenced by CreateRandomPolyhedron().
|
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.
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().
|
static |
Creates a cubic prism, given two opposite vertices.
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.
|
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:
Definition at line 2054 of file CPolyhedron.cpp.
References CreateHexahedron().
Referenced by CreateRandomPolyhedron(), and CreateRhombicDodecahedron().
|
static |
Creates a cupola.
std::logic_error | if the number of edges is odd or less than four. |
Definition at line 2207 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase(), and M_PI.
|
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.
Definition at line 649 of file CPolyhedron.cpp.
References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
Referenced by CreateRegularAntiprism().
|
static |
Creates a custom prism with vertical edges, given any base which will lie on the XY plane.
Definition at line 2149 of file CPolyhedron.cpp.
References CreateTruncatedPyramid().
Referenced by CreateRegularPrism(), mrpt::opengl::stock_objects::RobotGiraff(), and mrpt::opengl::stock_objects::RobotRhodon().
|
static |
Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron.
This body consists of 60 kites (see http://en.wikipedia.org/wiki/Deltoidal_hexecontahedron).
Definition at line 2134 of file CPolyhedron.cpp.
References CreateRhombicosidodecahedron().
Referenced by CreateRandomPolyhedron().
|
static |
Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron.
This body consists of 24 kites (see http://en.wikipedia.org/wiki/Deltoidal_icositetrahedron).
Definition at line 2114 of file CPolyhedron.cpp.
References CreateRhombicuboctahedron().
Referenced by CreateRandomPolyhedron().
|
static |
Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron).
The dodecahedron is created as the dual to an icosahedron.
Definition at line 2039 of file CPolyhedron.cpp.
References CreateIcosahedron().
Referenced by CreateRandomPolyhedron(), and CreateTruncatedDodecahedron().
|
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.
Definition at line 588 of file CPolyhedron.cpp.
References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
Referenced by CreateRegularDoublePyramid().
|
static |
Creates an empty Polyhedron.
Definition at line 2229 of file CPolyhedron.cpp.
References Create().
Referenced by cantellate(), CreateHexahedron(), CreateJohnsonSolidWithConstantBase(), CreateRandomPolyhedron(), CreateTrapezohedron(), and truncate().
|
static |
This is a synonym for CreateTruncatedPyramid.
Definition at line 2144 of file CPolyhedron.cpp.
References CreateTruncatedPyramid().
|
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:
Definition at line 2029 of file CPolyhedron.cpp.
References CreateCubicPrism(), and CreateEmpty().
Referenced by CreateCuboctahedron(), CreateRandomPolyhedron(), and CreateTruncatedHexahedron().
|
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.
Definition at line 2043 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase(), M_PI, and mrpt::square().
Referenced by CreateDodecahedron(), CreateRandomPolyhedron(), CreateRhombicosidodecahedron(), and CreateTruncatedIcosahedron().
|
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.
Definition at line 2074 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase().
Referenced by CreateRandomPolyhedron(), and CreateRhombicTriacontahedron().
|
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:
String | Body | Restrictions |
P+ | Upward pointing pyramid | Must be the last object, vertex number cannot surpass 5 |
P- | Downward pointing pyramid | Must be the first object, vertex number cannot surpass 5 |
C+ | Upward pointing cupola | Must be the last object, vertex number must be an even number in the range 4-10. |
C- | Downward pointing cupola | Must be the first object, vertex number must be an even number in the range 4-10. |
GC+ | Upward pointing cupola, rotated | Must be the last object, vertex number must be an even number in the range 4-10. |
GC- | Downward pointing cupola, rotated | Must be the first object, vertex number must be an even number in the range 4-10. |
PR | Archimedean prism | Cannot abut other prism |
A | Archimedean antiprism | None |
R+ | Upward pointing rotunda | Must be the last object, vertex number must be exactly 10 |
R- | Downward pointing rotunda | Must be the first object, vertex number must be exactly 10 |
GR+ | Upward pointing rotunda, rotated | Must be the last object, vertex number must be exactly 10 |
GR- | Downward pointing rotunda | Must be the first object, vertex number must be exactly 10 |
Some examples of bodies are:
String | Vertices | Resulting body |
P+ | 3 | Tetrahedron |
PR | 4 | Hexahedron |
P-P+ | 4 | Octahedron |
A | 3 | Octahedron |
C+PRC- | 8 | Rhombicuboctahedron |
P-AP+ | 5 | Icosahedron |
R-R+ | 10 | Icosidodecahedron |
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().
|
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().
|
static |
|
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:
Definition at line 2035 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase().
Referenced by CreateRandomPolyhedron(), and CreateTruncatedOctahedron().
|
static |
Creates a parallelepiped, given a base point and three vectors represented as points.
Definition at line 684 of file CPolyhedron.cpp.
References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
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).
Definition at line 2094 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase().
|
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).
Definition at line 2129 of file CPolyhedron.cpp.
References CreateTruncatedIcosahedron().
Referenced by CreateRandomPolyhedron().
|
static |
Creates a custom pyramid, using a set of 2D vertices which will lie on the XY plane.
Definition at line 561 of file CPolyhedron.cpp.
References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
Referenced by CreateRegularPyramid().
|
static |
Creates a random polyhedron from the static methods.
Definition at line 1145 of file CPolyhedron.cpp.
References CreateArchimedeanRegularAntiprism(), CreateArchimedeanRegularPrism(), CreateCatalanDoublePyramid(), CreateCatalanTrapezohedron(), CreateCuboctahedron(), CreateDeltoidalHexecontahedron(), CreateDeltoidalIcositetrahedron(), CreateDodecahedron(), CreateEmpty(), CreateHexahedron(), CreateIcosahedron(), CreateIcosidodecahedron(), CreateJohnsonSolidWithConstantBase(), CreateOctahedron(), CreatePentakisDodecahedron(), CreateRhombicDodecahedron(), CreateRhombicosidodecahedron(), CreateRhombicTriacontahedron(), CreateRhombicuboctahedron(), CreateTetrahedron(), CreateTetrakisHexahedron(), CreateTriakisIcosahedron(), CreateTriakisOctahedron(), CreateTriakisTetrahedron(), CreateTruncatedDodecahedron(), CreateTruncatedHexahedron(), CreateTruncatedIcosahedron(), CreateTruncatedOctahedron(), CreateTruncatedTetrahedron(), and mrpt::random::getRandomGenerator().
|
static |
Creates an antiprism whose base is a regular polygon.
The upper base is rotated with respect to the lower one, where N is the number of vertices in the base, and thus the lateral triangles are isosceles.
Definition at line 2154 of file CPolyhedron.cpp.
References CreateCustomAntiprism(), generateBase(), and generateShiftedBase().
|
static |
Creates a bifrustum (double truncated pyramid) whose base is a regular polygon lying in the XY plane.
Definition at line 2199 of file CPolyhedron.cpp.
References CreateBifrustum(), and generateBase().
|
static |
Creates a regular double pyramid whose base is a regular polygon.
Definition at line 2171 of file CPolyhedron.cpp.
References CreateDoublePyramid(), and generateBase().
|
static |
This is a synonym for CreateRegularTruncatedPyramid.
Definition at line 2193 of file CPolyhedron.cpp.
References CreateRegularTruncatedPyramid().
|
static |
Creates a regular prism whose base is a regular polygon and whose edges are either parallel or perpendicular to the XY plane.
Definition at line 2161 of file CPolyhedron.cpp.
References CreateCustomPrism(), and generateBase().
|
static |
Creates a regular pyramid whose base is a regular polygon.
Definition at line 2166 of file CPolyhedron.cpp.
References CreatePyramid(), and generateBase().
|
static |
Creates a regular truncated pyramid whose base is a regular polygon.
Definition at line 2187 of file CPolyhedron.cpp.
References CreateTruncatedPyramid(), and generateBase().
Referenced by CreateRegularFrustum().
|
static |
Creates a rhombic dodecahedron, dual to the cuboctahedron.
This body consists of 12 rhombi (see http://en.wikipedia.org/wiki/Rhombic_dodecahedron).
Definition at line 2102 of file CPolyhedron.cpp.
References CreateCuboctahedron().
Referenced by CreateRandomPolyhedron().
|
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.
Definition at line 2089 of file CPolyhedron.cpp.
References CreateIcosahedron().
Referenced by CreateDeltoidalHexecontahedron(), and CreateRandomPolyhedron().
|
static |
Creates a rhombic triacontahedron, dual to the icosidodecahedron.
This body consists of 30 rhombi (see http://en.wikipedia.org/wiki/Rhombic_triacontahedron).
Definition at line 2119 of file CPolyhedron.cpp.
References CreateIcosidodecahedron().
Referenced by CreateRandomPolyhedron().
|
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.
Definition at line 2067 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase(), M_PI, and mrpt::square().
Referenced by CreateDeltoidalIcositetrahedron(), and CreateRandomPolyhedron().
|
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.
Definition at line 2022 of file CPolyhedron.cpp.
References CreateJohnsonSolidWithConstantBase().
Referenced by CreateRandomPolyhedron(), and CreateTruncatedTetrahedron().
|
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).
Definition at line 2110 of file CPolyhedron.cpp.
References CreateTruncatedOctahedron().
Referenced by CreateRandomPolyhedron().
|
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.
|
static |
Creates a triakis icosahedron, dual to the truncated dodecahedron.
This body consists of 60 isosceles triangles http://en.wikipedia.org/wiki/Triakis_icosahedron).
Definition at line 2124 of file CPolyhedron.cpp.
References CreateTruncatedDodecahedron().
Referenced by CreateRandomPolyhedron().
|
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).
Definition at line 2106 of file CPolyhedron.cpp.
References CreateTruncatedHexahedron().
Referenced by CreateRandomPolyhedron().
|
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).
Definition at line 2098 of file CPolyhedron.cpp.
References CreateTruncatedTetrahedron().
Referenced by CreateRandomPolyhedron().
|
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.
Definition at line 2079 of file CPolyhedron.cpp.
References CreateDodecahedron().
Referenced by CreateRandomPolyhedron(), and CreateTriakisIcosahedron().
|
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.
Definition at line 2058 of file CPolyhedron.cpp.
References CreateHexahedron().
Referenced by CreateRandomPolyhedron(), and CreateTriakisOctahedron().
|
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.
Definition at line 2084 of file CPolyhedron.cpp.
References CreateIcosahedron().
Referenced by CreatePentakisDodecahedron(), and CreateRandomPolyhedron().
|
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.
Definition at line 2063 of file CPolyhedron.cpp.
References CreateOctahedron().
Referenced by CreateRandomPolyhedron(), and CreateTetrakisHexahedron().
|
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.
Definition at line 619 of file CPolyhedron.cpp.
References CreateNoCheck(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
Referenced by CreateCustomPrism(), CreateFrustum(), and CreateRegularTruncatedPyramid().
|
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.
Definition at line 2050 of file CPolyhedron.cpp.
References CreateTetrahedron().
Referenced by CreateRandomPolyhedron(), and CreateTriakisTetrahedron().
|
inlinestatic |
Definition at line 47 of file CPolyhedron.h.
|
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().
|
private |
Returns how many edges converge in a given vertex.
Definition at line 1892 of file CPolyhedron.cpp.
References m_Edges.
|
inlineinherited |
Definition at line 49 of file CRenderizableShaderWireFrame.h.
References mrpt::opengl::CRenderizableShaderWireFrame::m_antiAliasing, and mrpt::opengl::CRenderizable::notifyChange().
|
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.
|
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().
|
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.
|
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().
|
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().
|
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.
|
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().
|
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.
|
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.
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().
|
inlinestatic |
Definition at line 47 of file CPolyhedron.h.
|
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().
|
inlineinherited |
Returns the object color property as a TColor.
Definition at line 248 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_color.
|
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().
|
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.
|
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().
|
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.
|
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().
|
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.
|
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().
|
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.
CPolyhedron::Ptr CPolyhedron::getDual | ( | ) | const |
Given a polyhedron, creates its dual.
std::logic_error | Can'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.
|
inline |
Gets a list with the polyhedron's edges.
Definition at line 668 of file CPolyhedron.h.
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.
|
inline |
Gets a list with the polyhedron's faces.
Definition at line 675 of file CPolyhedron.h.
void CPolyhedron::getFacesArea | ( | std::vector< double > & | areas | ) | const |
Gets a vector with each face's area.
Won't work properly if the polygons are not convex.
Definition at line 1057 of file CPolyhedron.cpp.
References m_Faces, and m_Vertices.
Referenced by getVolume().
|
inlinestatic |
Gets the intersection of two polyhedra, either as a set or as a matrix of intersections.
Each intersection is represented by a TObject3D.
Definition at line 933 of file CPolyhedron.h.
References mrpt::math::intersect().
|
inlineinherited |
Definition at line 48 of file CRenderizableShaderWireFrame.h.
References mrpt::opengl::CRenderizableShaderWireFrame::m_lineWidth.
|
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().
|
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().
|
inline |
|
inline |
|
inline |
Gets the amount of vertices.
Definition at line 682 of file CPolyhedron.h.
|
inherited |
Returns the 3D pose of the object as TPose3D.
Definition at line 223 of file CRenderizable.cpp.
Referenced by mrpt::opengl::COpenGLViewport::renderNormalSceneMode().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
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().
|
inlineinherited |
Translation relative to parent coordinate origin.
Definition at line 144 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_pose.
|
overridevirtual |
Returns information about the class of an object in runtime.
Reimplemented from mrpt::opengl::CRenderizableShaderTriangles.
|
static |
|
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().
|
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().
|
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().
void CPolyhedron::getSetOfPolygons | ( | std::vector< math::TPolygon3D > & | vec | ) | const |
Gets the polyhedron as a set of polygons.
Definition at line 1085 of file CPolyhedron.cpp.
References polygonsUpToDate, tempPolygons, and updatePolygons().
Referenced by cantellate(), and makeConvexPolygons().
void CPolyhedron::getSetOfPolygonsAbsolute | ( | std::vector< math::TPolygon3D > & | vec | ) | const |
Gets the polyhedron as a set of polygons, with the pose transformation already applied.
Definition at line 1093 of file CPolyhedron.cpp.
References mrpt::poses::CPose3D::composePoint(), m_Faces, mrpt::opengl::CRenderizable::m_pose, and m_Vertices.
|
inline |
Gets a list with the polyhedron's vertices.
Definition at line 661 of file CPolyhedron.h.
double CPolyhedron::getVolume | ( | ) | const |
Gets the polyhedron volume.
Won't work properly if the polyhedron is not convex.
Definition at line 1065 of file CPolyhedron.cpp.
References getCenter(), getFacesArea(), m_Faces, polygonsUpToDate, tempPolygons, and updatePolygons().
|
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().
|
inline |
Definition at line 895 of file CPolyhedron.h.
Referenced by CPolyhedron().
|
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.
|
inlineinherited |
Definition at line 54 of file CRenderizableShaderWireFrame.h.
References mrpt::opengl::CRenderizableShaderWireFrame::m_antiAliasing.
|
inline |
Returns true if the polygon is a completely closed object.
Definition at line 738 of file CPolyhedron.h.
|
inlineinherited |
Definition at line 92 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_show_name.
Referenced by mrpt::opengl::enqueForRendering().
|
inlineinherited |
Is the object visible?
Definition at line 76 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_visible.
Referenced by mrpt::opengl::enqueForRendering().
|
inline |
Returns whether the polyhedron will be rendered as a wireframe object.
Definition at line 708 of file CPolyhedron.h.
|
inherited |
Returns or constructs (in its first invokation) the associated mrpt::opengl::CText object representing the label of the object.
Definition at line 238 of file CRenderizable.cpp.
References mrpt::opengl::CText::setString().
Referenced by mrpt::opengl::enqueForRendering().
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().
|
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().
|
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.
|
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.
|
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().
|
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.
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.
|
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().
|
inlineoverridevirtual |
Returns the ID of the OpenGL shader program required to render this class.
Reimplemented from mrpt::opengl::CRenderizableShaderTriangles.
Definition at line 59 of file CPolyhedron.h.
References mrpt::opengl::DefaultShaderID::TRIANGLES, and mrpt::opengl::DefaultShaderID::WIREFRAME.
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.
Definition at line 1757 of file CPolyhedron.cpp.
References CreateNoCheck(), m_Faces, m_Vertices, and A::x.
CPolyhedron::Ptr CPolyhedron::scale | ( | double | factor | ) | const |
Scales a polyhedron to a given factor.
std::logic_error | factor is not a strictly positive number. |
Definition at line 1771 of file CPolyhedron.cpp.
References CreateNoCheck(), m_Faces, and m_Vertices.
|
overrideprotectedvirtual |
Pure virtual method for reading (deserializing) from an abstract archive.
Users don't call this method directly. Instead, use stream >> object;
.
in | The input binary stream where the object data must read from. |
version | The version of the object stored in the stream: use this version number in your code to know how to read the incoming data. |
std::exception | On 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().
|
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.
|
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.
|
overrideprotectedvirtual |
Pure virtual method for writing (serializing) to an abstract archive.
Users don't call this method directly. Instead, use stream << object;
.
std::exception | On 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().
|
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.
|
inlineinherited |
Changes the default object color.
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().
|
inlineinherited |
Set the color components of this object (R,G,B,Alpha, in the range 0-1)
Definition at line 242 of file CRenderizable.h.
References mrpt::f2u8(), G, R, and mrpt::opengl::CRenderizable::setColor_u8().
|
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().
|
inlineinherited |
Set the color components of this object (R,G,B,Alpha, in the range 0-255)
Definition at line 254 of file CRenderizable.h.
References G, R, and mrpt::opengl::CRenderizable::setColor_u8().
|
inlineinherited |
Color components in the range [0,1].
Definition at line 180 of file CRenderizable.h.
References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorA_u8().
|
inlinevirtualinherited |
Color components in the range [0,255].
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().
|
inlineinherited |
Color components in the range [0,1].
Definition at line 178 of file CRenderizable.h.
References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorB_u8().
|
inlinevirtualinherited |
Color components in the range [0,255].
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().
|
inlineinherited |
Color components in the range [0,1].
Definition at line 176 of file CRenderizable.h.
References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorG_u8().
|
inlinevirtualinherited |
Color components in the range [0,255].
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().
|
inlineinherited |
Color components in the range [0,1].
Definition at line 174 of file CRenderizable.h.
References mrpt::f2u8(), and mrpt::opengl::CRenderizable::setColorR_u8().
|
inlinevirtualinherited |
Color components in the range [0,255].
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().
|
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().
|
inlineinherited |
See getLocalRepresentativePoint()
Definition at line 347 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_representativePoint.
|
inlineinherited |
Changes the location of the object, keeping untouched the orientation.
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().
|
inlineinherited |
Changes the location of the object, keeping untouched the orientation.
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.
|
inlineinherited |
Changes the name of the object.
Definition at line 73 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_name.
|
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().
|
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().
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
Definition at line 194 of file CRenderizable.cpp.
|
inherited |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)
Definition at line 199 of file CRenderizable.cpp.
|
inherited |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)
Definition at line 204 of file CRenderizable.cpp.
|
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().
|
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().
|
inlineinherited |
Scale to apply to the object, in all three axes (default=1)
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.
|
inlineinherited |
Scale to apply to the object in each axis (default=1)
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.
|
inlineinherited |
Set object visibility (default=true)
Definition at line 81 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::m_visible.
|
inline |
Sets whether the polyhedron will be rendered as a wireframe object.
Definition at line 712 of file CPolyhedron.h.
References m_Wireframe.
|
inlineinherited |
Definition at line 53 of file CRenderizableShaderTriangles.h.
References mrpt::opengl::CRenderizableShaderTriangles::m_triangles.
|
inlineinherited |
Definition at line 70 of file CRenderizableShaderWireFrame.h.
References mrpt::opengl::CRenderizableShaderWireFrame::m_color_buffer_data.
|
inlineinherited |
Definition at line 66 of file CRenderizableShaderWireFrame.h.
References mrpt::opengl::CRenderizableShaderWireFrame::m_vertex_buffer_data.
|
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().
CPolyhedron::Ptr CPolyhedron::truncate | ( | double | factor | ) | const |
Truncates a polyhedron to a given factor.
std::logic_error | Polyhedron 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.
|
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().
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().
|
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.
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.
|
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().
|
static |
Definition at line 47 of file CPolyhedron.h.
|
protectedinherited |
Definition at line 78 of file CRenderizableShaderWireFrame.h.
Referenced by mrpt::opengl::CSetOfLines::CSetOfLines(), mrpt::opengl::CRenderizableShaderWireFrame::enableAntiAliasing(), mrpt::opengl::CVectorField2D::enableAntiAliasing(), mrpt::opengl::CSetOfLines::enableAntiAliasing(), mrpt::opengl::CRenderizableShaderWireFrame::isAntiAliasingEnabled(), mrpt::opengl::CVectorField2D::isAntiAliasingEnabled(), mrpt::opengl::CSetOfLines::isAntiAliasingEnabled(), mrpt::opengl::CVectorField3D::isAntiAliasingEnabled(), mrpt::opengl::CGridPlaneXY::serializeFrom(), mrpt::opengl::CGridPlaneXZ::serializeFrom(), mrpt::opengl::CSetOfLines::serializeFrom(), mrpt::opengl::CVectorField3D::serializeFrom(), mrpt::opengl::CGridPlaneXY::serializeTo(), mrpt::opengl::CGridPlaneXZ::serializeTo(), mrpt::opengl::CSetOfLines::serializeTo(), and mrpt::opengl::CVectorField3D::serializeTo().
|
protectedinherited |
Color components in the range [0,255].
Definition at line 59 of file CRenderizable.h.
Referenced by mrpt::opengl::CMeshFast::CMeshFast(), mrpt::opengl::CVectorField3D::CVectorField3D(), mrpt::opengl::CRenderizable::getColor(), mrpt::opengl::CRenderizable::getColor_u8(), mrpt::opengl::CRenderizable::getColorA(), mrpt::opengl::CRenderizable::getColorA_u8(), mrpt::opengl::CRenderizable::getColorB(), mrpt::opengl::CRenderizable::getColorB_u8(), mrpt::opengl::CRenderizable::getColorG(), mrpt::opengl::CRenderizable::getColorG_u8(), mrpt::opengl::CRenderizable::getColorR(), mrpt::opengl::CRenderizable::getColorR_u8(), mrpt::opengl::CSetOfLines::onUpdateBuffers_Points(), onUpdateBuffers_Triangles(), mrpt::opengl::CSetOfLines::onUpdateBuffers_Wireframe(), onUpdateBuffers_Wireframe(), mrpt::opengl::CGridPlaneXY::onUpdateBuffers_Wireframe(), mrpt::opengl::CGridPlaneXZ::onUpdateBuffers_Wireframe(), mrpt::opengl::CRenderizable::setColorA_u8(), mrpt::opengl::CRenderizable::setColorB_u8(), mrpt::opengl::CRenderizable::setColorG_u8(), and mrpt::opengl::CRenderizable::setColorR_u8().
|
mutableprotectedinherited |
Definition at line 80 of file CRenderizableShaderWireFrame.h.
Referenced by mrpt::opengl::CAssimpModel::onUpdateBuffers_all(), mrpt::opengl::CColorBar::onUpdateBuffers_all(), mrpt::opengl::CAxis::onUpdateBuffers_Wireframe(), mrpt::opengl::CSetOfLines::onUpdateBuffers_Wireframe(), mrpt::opengl::CBox::onUpdateBuffers_Wireframe(), mrpt::opengl::CMesh3D::onUpdateBuffers_Wireframe(), mrpt::opengl::CMesh::onUpdateBuffers_Wireframe(), onUpdateBuffers_Wireframe(), mrpt::opengl::CVectorField2D::onUpdateBuffers_Wireframe(), mrpt::opengl::CGridPlaneXY::onUpdateBuffers_Wireframe(), mrpt::opengl::CGridPlaneXZ::onUpdateBuffers_Wireframe(), mrpt::opengl::CFrustum::onUpdateBuffers_Wireframe(), mrpt::opengl::CPlanarLaserScan::onUpdateBuffers_Wireframe(), mrpt::opengl::CVectorField3D::onUpdateBuffers_Wireframe(), mrpt::opengl::COctoMapVoxels::onUpdateBuffers_Wireframe(), and mrpt::opengl::CRenderizableShaderWireFrame::shaderWireframeVertexColorBuffer().
|
protected |
List of polyhedron's edges.
Definition at line 131 of file CPolyhedron.h.
Referenced by addEdges(), cantellate(), edgesInVertex(), getDual(), getEdgesLength(), getNumberOfFaces(), makeConvexPolygons(), onUpdateBuffers_Wireframe(), and truncate().
|
protected |
List of polyhedron's faces.
Definition at line 135 of file CPolyhedron.h.
Referenced by augment(), cantellate(), CPolyhedron(), facesInVertex(), getDual(), getFacesArea(), getSetOfPolygonsAbsolute(), getVolume(), makeConvexPolygons(), onUpdateBuffers_Triangles(), rotate(), scale(), serializeFrom(), serializeTo(), truncate(), and updatePolygons().
|
mutableprotectedinherited |
Optional pointer to a mrpt::opengl::CText.
Definition at line 372 of file CRenderizable.h.
|
protectedinherited |
Definition at line 77 of file CRenderizableShaderWireFrame.h.
Referenced by mrpt::opengl::CSetOfLines::CSetOfLines(), mrpt::opengl::CRenderizableShaderWireFrame::getLineWidth(), mrpt::opengl::CBox::getLineWidth(), mrpt::opengl::CGridPlaneXY::serializeFrom(), mrpt::opengl::CGridPlaneXZ::serializeFrom(), mrpt::opengl::CSetOfLines::serializeFrom(), mrpt::opengl::CVectorField3D::serializeFrom(), serializeFrom(), mrpt::opengl::CFrustum::serializeFrom(), mrpt::opengl::CGridPlaneXY::serializeTo(), mrpt::opengl::CGridPlaneXZ::serializeTo(), mrpt::opengl::CSetOfLines::serializeTo(), mrpt::opengl::CVectorField3D::serializeTo(), serializeTo(), mrpt::opengl::CFrustum::serializeTo(), mrpt::opengl::CRenderizableShaderWireFrame::setLineWidth(), mrpt::opengl::CBox::setLineWidth(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::thisclass_readFromStream(), and mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::thisclass_writeToStream().
|
protectedinherited |
Definition at line 56 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::getName(), and mrpt::opengl::CRenderizable::setName().
|
protectedinherited |
Definition at line 368 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::hasToUpdateBuffers(), mrpt::opengl::CRenderizable::notifyChange(), and mrpt::opengl::CRenderizable::updateBuffers().
|
protectedinherited |
6D pose wrt the parent coordinate reference.
This class automatically holds the cached 3x3 rotation matrix for quick load into opengl stack.
Definition at line 62 of file CRenderizable.h.
Referenced by mrpt::opengl::CGridPlaneXY::getBoundingBox(), mrpt::opengl::CGridPlaneXZ::getBoundingBox(), mrpt::opengl::CAssimpModel::getBoundingBox(), mrpt::opengl::CFrustum::getBoundingBox(), getBoundingBox(), mrpt::opengl::CSetOfLines::getBoundingBox(), mrpt::opengl::CVectorField3D::getBoundingBox(), mrpt::opengl::CRenderizable::getPosePitch(), mrpt::opengl::CRenderizable::getPosePitchRad(), mrpt::opengl::CRenderizable::getPoseRef(), mrpt::opengl::CRenderizable::getPoseRoll(), mrpt::opengl::CRenderizable::getPoseRollRad(), mrpt::opengl::CRenderizable::getPoseX(), mrpt::opengl::CRenderizable::getPoseY(), mrpt::opengl::CRenderizable::getPoseYaw(), mrpt::opengl::CRenderizable::getPoseYawRad(), mrpt::opengl::CRenderizable::getPoseZ(), getSetOfPolygonsAbsolute(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::renderUpdateBuffers(), mrpt::opengl::CRenderizable::setLocation(), and traceRay().
|
protectedinherited |
Definition at line 369 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::getLocalRepresentativePoint(), and mrpt::opengl::CRenderizable::setLocalRepresentativePoint().
|
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().
|
protectedinherited |
Definition at line 64 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::getScaleY(), and mrpt::opengl::CRenderizable::setScale().
|
protectedinherited |
Definition at line 64 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::getScaleZ(), and mrpt::opengl::CRenderizable::setScale().
|
protectedinherited |
Definition at line 57 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::enableShowName(), and mrpt::opengl::CRenderizable::isShowNameEnabled().
|
mutableprotectedinherited |
List of triangles.
Definition at line 58 of file CRenderizableShaderTriangles.h.
Referenced by mrpt::opengl::CSetOfTriangles::begin(), mrpt::opengl::CSetOfTriangles::clearTriangles(), mrpt::opengl::CSetOfTriangles::end(), mrpt::opengl::CSetOfTriangles::getTriangle(), mrpt::opengl::CSetOfTriangles::getTrianglesCount(), mrpt::opengl::CSetOfTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangles(), mrpt::opengl::CAssimpModel::onUpdateBuffers_all(), mrpt::opengl::CColorBar::onUpdateBuffers_all(), mrpt::opengl::CArrow::onUpdateBuffers_Triangles(), mrpt::opengl::CCylinder::onUpdateBuffers_Triangles(), mrpt::opengl::CDisk::onUpdateBuffers_Triangles(), mrpt::opengl::CBox::onUpdateBuffers_Triangles(), mrpt::opengl::CMesh3D::onUpdateBuffers_Triangles(), onUpdateBuffers_Triangles(), mrpt::opengl::CVectorField2D::onUpdateBuffers_Triangles(), mrpt::opengl::CFrustum::onUpdateBuffers_Triangles(), mrpt::opengl::CPlanarLaserScan::onUpdateBuffers_Triangles(), mrpt::opengl::COctoMapVoxels::onUpdateBuffers_Triangles(), mrpt::opengl::CSetOfTriangles::rbegin(), mrpt::opengl::CSetOfTriangles::rend(), mrpt::opengl::CRenderizableShaderTriangles::render(), mrpt::opengl::CSetOfTriangles::reserve(), and mrpt::opengl::CRenderizableShaderTriangles::shaderTexturedTrianglesBuffer().
|
mutableprotectedinherited |
Definition at line 79 of file CRenderizableShaderWireFrame.h.
Referenced by mrpt::opengl::CAssimpModel::onUpdateBuffers_all(), mrpt::opengl::CColorBar::onUpdateBuffers_all(), mrpt::opengl::CAxis::onUpdateBuffers_Wireframe(), mrpt::opengl::CSimpleLine::onUpdateBuffers_Wireframe(), mrpt::opengl::CSetOfLines::onUpdateBuffers_Wireframe(), mrpt::opengl::CBox::onUpdateBuffers_Wireframe(), mrpt::opengl::CMesh3D::onUpdateBuffers_Wireframe(), mrpt::opengl::CMesh::onUpdateBuffers_Wireframe(), onUpdateBuffers_Wireframe(), mrpt::opengl::CVectorField2D::onUpdateBuffers_Wireframe(), mrpt::opengl::CGridPlaneXY::onUpdateBuffers_Wireframe(), mrpt::opengl::CGridPlaneXZ::onUpdateBuffers_Wireframe(), mrpt::opengl::CFrustum::onUpdateBuffers_Wireframe(), mrpt::opengl::CPlanarLaserScan::onUpdateBuffers_Wireframe(), mrpt::opengl::CVectorField3D::onUpdateBuffers_Wireframe(), mrpt::opengl::COctoMapVoxels::onUpdateBuffers_Wireframe(), mrpt::opengl::CRenderizableShaderWireFrame::render(), and mrpt::opengl::CRenderizableShaderWireFrame::shaderWireframeVertexPointBuffer().
|
protected |
List of vertices presents in the polyhedron.
Definition at line 127 of file CPolyhedron.h.
Referenced by augment(), cantellate(), CPolyhedron(), getCenter(), getDual(), getEdgesLength(), getFacesArea(), getNumberOfEdges(), getSetOfPolygonsAbsolute(), makeConvexPolygons(), onUpdateBuffers_Triangles(), onUpdateBuffers_Wireframe(), rotate(), scale(), serializeFrom(), serializeTo(), setNormal(), truncate(), and updatePolygons().
|
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().
|
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().
|
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().
|
staticprotected |
Definition at line 47 of file CPolyhedron.h.
|
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 |