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 34 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 * | operator new (size_t size) |
void * | operator new[] (size_t size) |
void | operator delete (void *ptr) throw () |
void | operator delete[] (void *ptr) throw () |
void | operator delete (void *memory, void *ptr) throw () |
void * | operator new (size_t size, const std::nothrow_t &) throw () |
void | operator delete (void *ptr, const std::nothrow_t &) throw () |
void | getBoundingBox (mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const MRPT_OVERRIDE |
Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent. More... | |
void | render_dl () const MRPT_OVERRIDE |
Render. More... | |
bool | traceRay (const mrpt::poses::CPose3D &o, double &dist) const MRPT_OVERRIDE |
Ray trace. More... | |
void | getVertices (std::vector< mrpt::math::TPoint3D > &vertices) const |
Gets a list with the polyhedron's vertices. More... | |
void | getEdges (std::vector< TPolyhedronEdge > &edges) const |
Gets a list with the polyhedron's edges. More... | |
void | getFaces (std::vector< TPolyhedronFace > &faces) const |
Gets a list with the polyhedron's faces. More... | |
uint32_t | getNumberOfVertices () const |
Gets the amount of vertices. More... | |
uint32_t | getNumberOfEdges () const |
Gets the amount of edges. More... | |
uint32_t | getNumberOfFaces () const |
Gets the amount of faces. More... | |
void | getEdgesLength (std::vector< double > &lengths) const |
Gets a vector with each edge's length. More... | |
void | getFacesArea (std::vector< double > &areas) const |
Gets a vector with each face's area. More... | |
double | getVolume () const |
Gets the polyhedron volume. More... | |
bool | isWireframe () const |
Returns whether the polyhedron will be rendered as a wireframe object. More... | |
void | setWireframe (bool enabled=true) |
Sets whether the polyhedron will be rendered as a wireframe object. More... | |
double | getLineWidth () const |
Gets the wireframe lines width. More... | |
void | setLineWidth (double lineWidth) |
Sets the width used to render lines, when wireframe rendering is activated. More... | |
void | getSetOfPolygons (std::vector< math::TPolygon3D > &vec) const |
Gets the polyhedron as a set of polygons. More... | |
void | getSetOfPolygonsAbsolute (std::vector< math::TPolygon3D > &vec) const |
Gets the polyhedron as a set of polygons, with the pose transformation already applied. More... | |
bool | isClosed () const |
Returns true if the polygon is a completely closed object. More... | |
void | makeConvexPolygons () |
Recomputes polygons, if necessary, so that each one is convex. More... | |
void | getCenter (mrpt::math::TPoint3D ¢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... | |
CRenderizableDisplayList * | clone () const |
Interface for the smart pointer class. More... | |
void | render () const MRPT_OVERRIDE |
Render the object, regenerating the display list if needed, otherwise just calling it. 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... | |
Polyhedron special operations. | |
CPolyhedronPtr | getDual () const |
Given a polyhedron, creates its dual. More... | |
CPolyhedronPtr | truncate (double factor) const |
Truncates a polyhedron to a given factor. More... | |
CPolyhedronPtr | cantellate (double factor) const |
Cantellates a polyhedron to a given factor. More... | |
CPolyhedronPtr | augment (double height) const |
Augments a polyhedron to a given height. More... | |
CPolyhedronPtr | augment (double height, size_t numVertices) const |
Augments a polyhedron to a given height. More... | |
CPolyhedronPtr | augment (bool direction=false) const |
Augments a polyhedron, so that the resulting triangles are equilateral. More... | |
CPolyhedronPtr | augment (size_t numVertices, bool direction=false) const |
Augments a polyhedron, so that the resulting triangles are equilateral; affects only faces with certain number of faces. More... | |
CPolyhedronPtr | rotate (double angle) const |
Rotates a polyhedron around the Z axis a given amount of radians. More... | |
CPolyhedronPtr | scale (double factor) const |
Scales a polyhedron to a given factor. More... | |
Changes the appearance of the object to render (methods from CRenderizable that need to be redefined) | |
CRenderizable & | setColorR_u8 (const uint8_t r) MRPT_OVERRIDE |
Color components in the range [0,255]. More... | |
CRenderizable & | setColorG_u8 (const uint8_t g) MRPT_OVERRIDE |
Color components in the range [0,255]. More... | |
CRenderizable & | setColorB_u8 (const uint8_t b) MRPT_OVERRIDE |
Color components in the range [0,255]. More... | |
CRenderizable & | setColorA_u8 (const uint8_t a) MRPT_OVERRIDE |
Color components in the range [0,255]. More... | |
CRenderizable & | setColor_u8 (const mrpt::utils::TColor &c) MRPT_OVERRIDE |
Changes the default object color. More... | |
CRenderizable & | setColor_u8 (uint8_t R, uint8_t G, uint8_t B, uint8_t A=255) |
Color components in the range [0,255]. More... | |
Changes the appearance of the object to render | |
void | setName (const std::string &n) |
Changes the name of the object. More... | |
const std::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... | |
double | getColorR () const |
Color components in the range [0,1]. More... | |
double | getColorG () const |
Color components in the range [0,1]. More... | |
double | getColorB () const |
Color components in the range [0,1]. More... | |
double | getColorA () const |
Color components in the range [0,1]. More... | |
uint8_t | getColorR_u8 () const |
Color components in the range [0,255]. More... | |
uint8_t | getColorG_u8 () const |
Color components in the range [0,255]. More... | |
uint8_t | getColorB_u8 () const |
Color components in the range [0,255]. More... | |
uint8_t | getColorA_u8 () const |
Color components in the range [0,255]. More... | |
CRenderizable & | setColorR (const double r) |
Color components in the range [0,1]. More... | |
CRenderizable & | setColorG (const double g) |
Color components in the range [0,1]. More... | |
CRenderizable & | setColorB (const double b) |
Color components in the range [0,1]. More... | |
CRenderizable & | setColorA (const double a) |
Color components in the range [0,1]. 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::utils::TColorf | getColor () const |
Returns the object color property as a TColorf. More... | |
CRenderizable & | setColor (const mrpt::utils::TColorf &c) |
CRenderizable & | setColor (double R, double G, double B, double A=1) |
Set the color components of this object (R,G,B,Alpha, in the range 0-1) More... | |
const mrpt::utils::TColor & | getColor_u8 () const |
Returns the object color property as a TColor. More... | |
RTTI classes and functions | |
mrpt::utils::CObjectPtr | duplicateGetSmartPtr () const |
Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). More... | |
Static Public Member Functions | |
static void * | operator new (size_t size, void *ptr) |
static CPolyhedronPtr | Create (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< std::vector< uint32_t > > &faces) |
Creation of a polyhedron from its vertices and faces. More... | |
static CPolyhedronPtr | Create (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces) |
Creation of a polyhedron from its vertices and faces. More... | |
static CPolyhedronPtr | Create (const std::vector< mrpt::math::TPolygon3D > &polys) |
Creation from a set of polygons. More... | |
template<class T > | |
static size_t | getIntersection (const CPolyhedronPtr &p1, const CPolyhedronPtr &p2, T &container) |
Gets the intersection of two polyhedra, either as a set or as a matrix of intersections. More... | |
static CPolyhedronPtr | CreateRandomPolyhedron (double radius) |
Creates a random polyhedron from the static methods. More... | |
static void | renderTextBitmap (const char *str, void *fontStyle) |
This method is safe for calling from within ::render() methods. More... | |
static void | renderTextBitmap (int screen_x, int screen_y, const std::string &str, float color_r=1, float color_g=1, float color_b=1, mrpt::opengl::TOpenGLFont font=mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24) |
Render a text message in the current rendering context, creating a glViewport in the way (do not call within ::render() methods) More... | |
static int | textBitmapWidth (const std::string &str, mrpt::opengl::TOpenGLFont font=mrpt::opengl::MRPT_GLUT_BITMAP_TIMES_ROMAN_24) |
Return the exact width in pixels for a given string, as will be rendered by renderTextBitmap(). More... | |
Platonic solids. | |
static CPolyhedronPtr | CreateTetrahedron (double radius) |
Creates a regular tetrahedron (see http://en.wikipedia.org/wiki/Tetrahedron). More... | |
static CPolyhedronPtr | CreateHexahedron (double radius) |
Creates a regular cube, also called hexahedron (see http://en.wikipedia.org/wiki/Hexahedron). More... | |
static CPolyhedronPtr | CreateOctahedron (double radius) |
Creates a regular octahedron (see http://en.wikipedia.org/wiki/Octahedron). More... | |
static CPolyhedronPtr | CreateDodecahedron (double radius) |
Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron). More... | |
static CPolyhedronPtr | CreateIcosahedron (double radius) |
Creates a regular icosahedron (see http://en.wikipedia.org/wiki/Icosahedron). More... | |
Archimedean solids. | |
static CPolyhedronPtr | CreateTruncatedTetrahedron (double radius) |
Creates a truncated tetrahedron, consisting of four triangular faces and for hexagonal ones (see http://en.wikipedia.org/wiki/Truncated_tetrahedron). More... | |
static CPolyhedronPtr | CreateCuboctahedron (double radius) |
Creates a cuboctahedron, consisting of six square faces and eight triangular ones (see http://en.wikipedia.org/wiki/Cuboctahedron). More... | |
static CPolyhedronPtr | CreateTruncatedHexahedron (double radius) |
Creates a truncated hexahedron, with six octogonal faces and eight triangular ones (see http://en.wikipedia.org/wiki/Truncated_hexahedron). More... | |
static CPolyhedronPtr | CreateTruncatedOctahedron (double radius) |
Creates a truncated octahedron, with eight hexagons and eight squares (see http://en.wikipedia.org/wiki/Truncated_octahedron). More... | |
static CPolyhedronPtr | CreateRhombicuboctahedron (double radius, bool type=true) |
Creates a rhombicuboctahedron, with 18 squares and 8 triangles (see http://en.wikipedia.org/wiki/Rhombicuboctahedron), calculated as an elongated square bicupola. More... | |
static CPolyhedronPtr | CreateIcosidodecahedron (double radius, bool type=true) |
Creates an icosidodecahedron, with 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Icosidodecahedron). More... | |
static CPolyhedronPtr | CreateTruncatedDodecahedron (double radius) |
Creates a truncated dodecahedron, consisting of 12 dodecagons and 20 triangles (see http://en.wikipedia.org/wiki/Truncated_dodecahedron). More... | |
static CPolyhedronPtr | CreateTruncatedIcosahedron (double radius) |
Creates a truncated icosahedron, consisting of 20 hexagons and 12 pentagons. More... | |
static CPolyhedronPtr | CreateRhombicosidodecahedron (double radius) |
Creates a rhombicosidodecahedron, consisting of 30 squares, 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Rhombicosidodecahedron). More... | |
Other Johnson solids. | |
static CPolyhedronPtr | CreatePentagonalRotunda (double radius) |
Creates a pentagonal rotunda (half an icosidodecahedron), consisting of six pentagons, ten triangles and a decagon (see http://en.wikipedia.org/wiki/Pentagonal_rotunda). More... | |
Catalan solids. | |
static CPolyhedronPtr | CreateTriakisTetrahedron (double radius) |
Creates a triakis tetrahedron, dual to the truncated tetrahedron. More... | |
static CPolyhedronPtr | CreateRhombicDodecahedron (double radius) |
Creates a rhombic dodecahedron, dual to the cuboctahedron. More... | |
static CPolyhedronPtr | CreateTriakisOctahedron (double radius) |
Creates a triakis octahedron, dual to the truncated hexahedron. More... | |
static CPolyhedronPtr | CreateTetrakisHexahedron (double radius) |
Creates a tetrakis hexahedron, dual to the truncated octahedron. More... | |
static CPolyhedronPtr | CreateDeltoidalIcositetrahedron (double radius) |
Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron. More... | |
static CPolyhedronPtr | CreateRhombicTriacontahedron (double radius) |
Creates a rhombic triacontahedron, dual to the icosidodecahedron. More... | |
static CPolyhedronPtr | CreateTriakisIcosahedron (double radius) |
Creates a triakis icosahedron, dual to the truncated dodecahedron. More... | |
static CPolyhedronPtr | CreatePentakisDodecahedron (double radius) |
Creates a pentakis dodecahedron, dual to the truncated icosahedron. More... | |
static CPolyhedronPtr | CreateDeltoidalHexecontahedron (double radius) |
Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron. More... | |
Customizable polyhedra | |
static CPolyhedronPtr | CreateCubicPrism (double x1, double x2, double y1, double y2, double z1, double z2) |
Creates a cubic prism, given the coordinates of two opposite vertices. More... | |
static CPolyhedronPtr | CreateCubicPrism (const mrpt::math::TPoint3D &p1, const mrpt::math::TPoint3D &p2) |
Creates a cubic prism, given two opposite vertices. More... | |
static CPolyhedronPtr | CreatePyramid (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height) |
Creates a custom pyramid, using a set of 2D vertices which will lie on the XY plane. More... | |
static CPolyhedronPtr | CreateDoublePyramid (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height1, double height2) |
Creates a double pyramid, using a set of 2D vertices which will lie on the XY plane. More... | |
static CPolyhedronPtr | CreateTruncatedPyramid (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height, double ratio) |
Creates a truncated pyramid, using a set of vertices which will lie on the XY plane. More... | |
static CPolyhedronPtr | CreateFrustum (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height, double ratio) |
This is a synonym for CreateTruncatedPyramid. More... | |
static CPolyhedronPtr | CreateCustomPrism (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height) |
Creates a custom prism with vertical edges, given any base which will lie on the XY plane. More... | |
static CPolyhedronPtr | CreateCustomAntiprism (const std::vector< mrpt::math::TPoint2D > &bottomBase, const std::vector< mrpt::math::TPoint2D > &topBase, double height) |
Creates a custom antiprism, using two custom bases. More... | |
static CPolyhedronPtr | CreateParallelepiped (const mrpt::math::TPoint3D &base, const mrpt::math::TPoint3D &v1, const mrpt::math::TPoint3D &v2, const mrpt::math::TPoint3D &v3) |
Creates a parallelepiped, given a base point and three vectors represented as points. More... | |
static CPolyhedronPtr | CreateBifrustum (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height1, double ratio1, double height2, double ratio2) |
Creates a bifrustum, or double truncated pyramid, given a base which will lie on the XY plane. More... | |
static CPolyhedronPtr | CreateTrapezohedron (uint32_t numBaseEdges, double baseRadius, double basesDistance) |
Creates a trapezohedron, consisting of 2*N kites, where N is the number of edges in the base. More... | |
static CPolyhedronPtr | CreateRegularAntiprism (uint32_t numBaseEdges, double baseRadius, double height) |
Creates an antiprism whose base is a regular polygon. More... | |
static CPolyhedronPtr | CreateRegularPrism (uint32_t numBaseEdges, double baseRadius, double height) |
Creates a regular prism whose base is a regular polygon and whose edges are either parallel or perpendicular to the XY plane. More... | |
static CPolyhedronPtr | CreateRegularPyramid (uint32_t numBaseEdges, double baseRadius, double height) |
Creates a regular pyramid whose base is a regular polygon. More... | |
static CPolyhedronPtr | CreateRegularDoublePyramid (uint32_t numBaseEdges, double baseRadius, double height1, double height2) |
Creates a regular double pyramid whose base is a regular polygon. More... | |
static CPolyhedronPtr | CreateArchimedeanRegularPrism (uint32_t numBaseEdges, double baseRadius) |
Creates a regular prism whose lateral area is comprised of squares, and so each face of its is a regular polygon. More... | |
static CPolyhedronPtr | CreateArchimedeanRegularAntiprism (uint32_t numBaseEdges, double baseRadius) |
Creates a regular antiprism whose lateral polygons are equilateral triangles, and so each face of its is a regular polygon. More... | |
static CPolyhedronPtr | CreateRegularTruncatedPyramid (uint32_t numBaseEdges, double baseRadius, double height, double ratio) |
Creates a regular truncated pyramid whose base is a regular polygon. More... | |
static CPolyhedronPtr | CreateRegularFrustum (uint32_t numBaseEdges, double baseRadius, double height, double ratio) |
This is a synonym for CreateRegularTruncatedPyramid. More... | |
static CPolyhedronPtr | CreateRegularBifrustum (uint32_t numBaseEdges, double baseRadius, double height1, double ratio1, double height2, double ratio2) |
Creates a bifrustum (double truncated pyramid) whose base is a regular polygon lying in the XY plane. More... | |
static CPolyhedronPtr | CreateCupola (uint32_t numBaseEdges, double edgeLength) |
Creates a cupola. More... | |
static CPolyhedronPtr | CreateCatalanTrapezohedron (uint32_t numBaseEdges, double height) |
Creates a trapezohedron whose dual is exactly an archimedean antiprism. More... | |
static CPolyhedronPtr | CreateCatalanDoublePyramid (uint32_t numBaseEdges, double height) |
Creates a double pyramid whose dual is exactly an archimedean prism. More... | |
static CPolyhedronPtr | CreateJohnsonSolidWithConstantBase (uint32_t numBaseEdges, double baseRadius, const std::string &components, size_t shifts=0) |
Creates a series of concatenated solids (most of which are prismatoids) whose base is a regular polygon with a given number of edges. More... | |
Static Public Attributes | |
static const mrpt::utils::TRuntimeClassId | classCObject |
RTTI stuff | |
static const mrpt::utils::TRuntimeClassId | classCRenderizableDisplayList |
RTTI stuff | |
static const mrpt::utils::TRuntimeClassId | classCRenderizable |
RTTI stuff | |
static const mrpt::utils::TRuntimeClassId | classCSerializable |
Protected Member Functions | |
void | writeToStreamRender (utils::CStream &out) const |
CSerializable virtual methods | |
void | writeToStream (mrpt::utils::CStream &out, int *getVersion) const |
Introduces a pure virtual method responsible for writing to a CStream. More... | |
void | readFromStream (mrpt::utils::CStream &in, int version) |
Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori. More... | |
Methods accesible or implemented by derived classes | |
EIGEN_STRONG_INLINE void | notifyChange () const |
Must be called to notify that the object has changed (so, the display list must be updated) More... | |
virtual bool | should_skip_display_list_cache () const |
Optional: If the object has some state in which creating a display list is NOT preferred over direct rendering, implement this method and return "true" in those cases. More... | |
void | readFromStreamRender (mrpt::utils::CStream &in) |
Static Protected Member Functions | |
static void | checkOpenGLError () |
Checks glGetError and throws an exception if an error situation is found. More... | |
static unsigned int | getNewTextureNumber () |
Returns the lowest next free texture name (avoid using OpenGL's own function since we may call them from different threads and seem it's not cool). More... | |
static void | releaseTextureName (unsigned int i) |
Protected Attributes | |
std::vector< mrpt::math::TPoint3D > | mVertices |
List of vertices presents in the polyhedron. More... | |
std::vector< TPolyhedronEdge > | mEdges |
List of polyhedron's edges. More... | |
std::vector< TPolyhedronFace > | mFaces |
List of polyhedron's faces. More... | |
bool | mWireframe |
This flag determines whether the polyhedron will be displayed as a solid object or as a set of edges. More... | |
double | mLineWidth |
When displaying as wireframe object, this variable stores the width of the edges. More... | |
std::vector< mrpt::math::TPolygonWithPlane > | tempPolygons |
Mutable list of actual polygons, maintained for speed. More... | |
bool | polygonsUpToDate |
Whether the set of actual polygons is up to date or not. More... | |
std::string | m_name |
bool | m_show_name |
mrpt::utils::TColor | m_color |
Color components in the range [0,255]. More... | |
mrpt::poses::CPose3D | m_pose |
6D pose wrt the parent coordinate reference. This class automatically holds the cached 3x3 rotation matrix for quick load into opengl stack. More... | |
float | m_scale_x |
float | m_scale_y |
float | m_scale_z |
Scale components to apply to the object (default=1) More... | |
bool | m_visible |
Is the object visible? (default=true) More... | |
Private Member Functions | |
bool | setNormal (TPolyhedronFace &f, bool doCheck=true) |
Calculates the normal vector to a face. More... | |
void | addEdges (const TPolyhedronFace &e) |
Adds, to the existing list of edges, each edge in a given face. More... | |
size_t | edgesInVertex (size_t vertex) const |
Returns how many edges converge in a given vertex. More... | |
size_t | facesInVertex (size_t vertex) const |
Returns how many faces converge in a given vertex. More... | |
CPolyhedron () | |
Basic empty constructor. More... | |
CPolyhedron (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces, bool doCheck=true) | |
Basic constructor with a list of vertices and another of faces, checking for correctness. More... | |
virtual | ~CPolyhedron () |
Destructor. More... | |
Static Private Member Functions | |
static std::vector< mrpt::math::TPoint2D > | generateBase (uint32_t numBaseEdges, double baseRadius) |
Generates a list of 2D vertices constituting a regular polygon. More... | |
static std::vector< mrpt::math::TPoint2D > | generateShiftedBase (uint32_t numBaseEdges, double baseRadius) |
Generates a list of 2D vertices constituting a regular polygon, with an angle shift which makes it suitable for antiprisms. More... | |
static void | generateBase (uint32_t numBaseEdges, double baseRadius, double height, std::vector< mrpt::math::TPoint3D > &vec) |
Generates a list of 3D vertices constituting a regular polygon, appending it to an existing vector. More... | |
static void | generateShiftedBase (uint32_t numBaseEdges, double baseRadius, double height, double shift, std::vector< mrpt::math::TPoint3D > &vec) |
Generates a list of 3D vertices constituting a regular polygon conveniently shifted, appending it to an existing vector. More... | |
static bool | checkConsistence (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces) |
Checks whether a set of faces is suitable for a set of vertices. More... | |
static CPolyhedronPtr | CreateNoCheck (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces) |
Creates a polyhedron without checking its correctness. More... | |
static CPolyhedronPtr | CreateEmpty () |
Creates an empty Polyhedron. More... | |
RTTI stuff | |
typedef CPolyhedronPtr | Ptr |
typedef CPolyhedronPtr | ConstPtr |
static mrpt::utils::CLASSINIT | _init_CPolyhedron |
static mrpt::utils::TRuntimeClassId | classCPolyhedron |
static const mrpt::utils::TRuntimeClassId * | classinfo |
static const mrpt::utils::TRuntimeClassId * | _GetBaseClass () |
virtual const mrpt::utils::TRuntimeClassId * | GetRuntimeClass () const |
Returns information about the class of an object in runtime. More... | |
virtual mrpt::utils::CObject * | duplicate () const |
Returns a copy of the object, indepently of its class. More... | |
static mrpt::utils::CObject * | CreateObject () |
static CPolyhedronPtr | Create () |
typedef CPolyhedronPtr mrpt::opengl::CPolyhedron::ConstPtr |
Definition at line 35 of file CPolyhedron.h.
typedef CPolyhedronPtr mrpt::opengl::CPolyhedron::Ptr |
A typedef for the associated smart pointer
Definition at line 35 of file CPolyhedron.h.
|
inlineprivate |
Basic empty constructor.
Definition at line 681 of file CPolyhedron.h.
|
inlineprivate |
Basic constructor with a list of vertices and another of faces, checking for correctness.
Definition at line 685 of file CPolyhedron.h.
|
inlineprivatevirtual |
Destructor.
Definition at line 697 of file CPolyhedron.h.
|
staticprotected |
|
private |
Adds, to the existing list of edges, each edge in a given face.
Definition at line 1410 of file CPolyhedron.cpp.
References mrpt::utils::find(), mrpt::opengl::CPolyhedron::TPolyhedronEdge::v1, mrpt::opengl::CPolyhedron::TPolyhedronEdge::v2, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
CPolyhedronPtr CPolyhedron::augment | ( | double | height | ) | const |
Augments a polyhedron to a given height.
This operation is roughly dual to the truncation: given a body P, the operation dtdP and aP yield resembling results.
Definition at line 1157 of file CPolyhedron.cpp.
References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
CPolyhedronPtr CPolyhedron::augment | ( | double | height, |
size_t | numVertices | ||
) | const |
Augments a polyhedron to a given height.
This method only affects to faces with certain number of vertices.
Definition at line 1195 of file CPolyhedron.cpp.
References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
CPolyhedronPtr CPolyhedron::augment | ( | 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 1244 of file CPolyhedron.cpp.
References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), getHeight(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
CPolyhedronPtr CPolyhedron::augment | ( | size_t | numVertices, |
bool | direction = false |
||
) | const |
Augments a polyhedron, so that the resulting triangles are equilateral; affects only faces with certain number of faces.
If the second argument is true, triangles are "cut" from the polyhedron.
std::logic_error | a non-regular face has been found. |
Definition at line 1284 of file CPolyhedron.cpp.
References mrpt::math::TPlane::coefs, mrpt::math::TPlane::evaluatePoint(), mrpt::math::TPolygon3D::getBestFittingPlane(), mrpt::math::TPolygon3D::getCenter(), getHeight(), mrpt::math::TPlane::unitarize(), and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
CPolyhedronPtr CPolyhedron::cantellate | ( | double | factor | ) | const |
Cantellates a polyhedron to a given factor.
Definition at line 1091 of file CPolyhedron.cpp.
References begin(), and searchForEdge().
|
staticprivate |
Checks whether a set of faces is suitable for a set of vertices.
Definition at line 1425 of file CPolyhedron.cpp.
|
staticprotectedinherited |
Checks glGetError and throws an exception if an error situation is found.
Definition at line 277 of file CRenderizable.cpp.
References mrpt::opengl::gl_utils::checkOpenGLError().
Referenced by mrpt::opengl::CTexturedObject::loadTextureInOpenGL(), mrpt::opengl::COpenGLViewport::render(), mrpt::opengl::CBox::render_dl(), mrpt::opengl::CSimpleLine::render_dl(), mrpt::opengl::CGridPlaneXY::render_dl(), mrpt::opengl::CGridPlaneXZ::render_dl(), mrpt::opengl::CSetOfLines::render_dl(), mrpt::opengl::CVectorField2D::render_dl(), mrpt::opengl::CVectorField3D::render_dl(), mrpt::opengl::CTexturedObject::render_post(), mrpt::opengl::CTexturedObject::render_pre(), and mrpt::opengl::CTexturedPlane::render_texturedobj().
|
inlineinherited |
Interface for the smart pointer class.
Definition at line 71 of file CRenderizableDisplayList.h.
|
static |
|
static |
Creation of a polyhedron from its vertices and faces.
logic_error | if the polyhedron definition has flaws (bad vertex indices, etc.). |
Definition at line 1543 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
static |
Creation of a polyhedron from its vertices and faces.
logic_error | if the polyhedron definition has flaws (bad vertex indices, etc.). |
Definition at line 1552 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron.
|
static |
Creation from a set of polygons.
Definition at line 370 of file CPolyhedron.cpp.
References getVerticesAndFaces().
|
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 1658 of file CPolyhedron.cpp.
|
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 1655 of file CPolyhedron.cpp.
|
static |
Creates a bifrustum, or double truncated pyramid, given a base which will lie on the XY plane.
Definition at line 531 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
static |
Creates a double pyramid whose dual is exactly an archimedean prism.
Creates an octahedron if numBaseEdges is equal to 4.
Definition at line 1676 of file CPolyhedron.cpp.
|
static |
Creates a trapezohedron whose dual is exactly an archimedean antiprism.
Creates a cube if numBaseEdges is equal to 3.
Definition at line 1673 of file CPolyhedron.cpp.
|
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 377 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
Referenced by mrpt::opengl::stock_objects::BumblebeeCamera().
|
static |
Creates a cubic prism, given two opposite vertices.
Definition at line 1634 of file CPolyhedron.cpp.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::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 1580 of file CPolyhedron.cpp.
|
static |
Creates a cupola.
std::logic_error | if the number of edges is odd or less than four. |
Definition at line 1670 of file CPolyhedron.cpp.
References 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 467 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
static |
Creates a custom prism with vertical edges, given any base which will lie on the XY plane.
Definition at line 1640 of file CPolyhedron.cpp.
Referenced by 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 1631 of file CPolyhedron.cpp.
|
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 1619 of file CPolyhedron.cpp.
|
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 1568 of file CPolyhedron.cpp.
|
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 414 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
staticprivate |
Creates an empty Polyhedron.
Definition at line 1684 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron.
|
static |
This is a synonym for CreateTruncatedPyramid.
Definition at line 1637 of file CPolyhedron.cpp.
|
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 1560 of file CPolyhedron.cpp.
|
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 1571 of file CPolyhedron.cpp.
References M_PI, and mrpt::math::square().
|
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 1592 of file CPolyhedron.cpp.
|
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 620 of file CPolyhedron.cpp.
References additionalFaces(), additionalVertices(), analyzeJohnsonPartsString(), ANTIPRISM, DOWNWARDS_CUPOLA, DOWNWARDS_PYRAMID, DOWNWARDS_ROTUNDA, INF_NO_BODY, insertCupola(), insertRotunda(), M_PI, PRISM, ROTATED_DOWNWARDS_CUPOLA, ROTATED_DOWNWARDS_ROTUNDA, ROTATED_UPWARDS_CUPOLA, ROTATED_UPWARDS_ROTUNDA, mrpt::math::square(), SUP_NO_BODY, UPWARDS_CUPOLA, UPWARDS_PYRAMID, and UPWARDS_ROTUNDA.
|
staticprivate |
Creates a polyhedron without checking its correctness.
Definition at line 1680 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron.
|
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 1565 of file CPolyhedron.cpp.
|
static |
Creates a parallelepiped, given a base point and three vectors represented as points.
Definition at line 497 of file CPolyhedron.cpp.
References 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 1604 of file CPolyhedron.cpp.
|
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 1628 of file CPolyhedron.cpp.
|
static |
Creates a custom pyramid, using a set of 2D vertices which will lie on the XY plane.
Definition at line 391 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
static |
Creates a random polyhedron from the static methods.
Definition at line 895 of file CPolyhedron.cpp.
References mrpt::random::randomGenerator.
|
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 1643 of file CPolyhedron.cpp.
|
static |
Creates a bifrustum (double truncated pyramid) whose base is a regular polygon lying in the XY plane.
Definition at line 1667 of file CPolyhedron.cpp.
|
static |
Creates a regular double pyramid whose base is a regular polygon.
Definition at line 1652 of file CPolyhedron.cpp.
|
static |
This is a synonym for CreateRegularTruncatedPyramid.
Definition at line 1664 of file CPolyhedron.cpp.
|
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 1646 of file CPolyhedron.cpp.
|
static |
Creates a regular pyramid whose base is a regular polygon.
Definition at line 1649 of file CPolyhedron.cpp.
|
static |
Creates a regular truncated pyramid whose base is a regular polygon.
Definition at line 1661 of file CPolyhedron.cpp.
|
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 1610 of file CPolyhedron.cpp.
|
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 1601 of file CPolyhedron.cpp.
|
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 1622 of file CPolyhedron.cpp.
|
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 1589 of file CPolyhedron.cpp.
References M_PI, and mrpt::math::square().
|
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 1555 of file CPolyhedron.cpp.
|
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 1616 of file CPolyhedron.cpp.
|
static |
Creates a trapezohedron, consisting of 2*N kites, where N is the number of edges in the base.
The base radius controls the polyhedron height, whilst the distance between bases affects the height. When the number of edges equals 3, the polyhedron is actually a parallelepiped, and it can even be a cube.
Definition at line 572 of file CPolyhedron.cpp.
References M_PI, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
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 1625 of file CPolyhedron.cpp.
|
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 1613 of file CPolyhedron.cpp.
|
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 1607 of file CPolyhedron.cpp.
|
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 1595 of file CPolyhedron.cpp.
|
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 1583 of file CPolyhedron.cpp.
|
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 1598 of file CPolyhedron.cpp.
|
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 1586 of file CPolyhedron.cpp.
|
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 441 of file CPolyhedron.cpp.
References mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
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 1577 of file CPolyhedron.cpp.
|
virtual |
Returns a copy of the object, indepently of its class.
Implements mrpt::utils::CObject.
|
inlineinherited |
Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).
Definition at line 162 of file CObject.h.
References mrpt::utils::CObjectPtr.
Referenced by mrpt::obs::CRawlog::addActions(), mrpt::slam::CIncrementalMapPartitioner::addMapFrame(), and mrpt::obs::CRawlog::addObservations().
|
private |
Returns how many edges converge in a given vertex.
Definition at line 1435 of file CPolyhedron.cpp.
|
inlineinherited |
Enables or disables showing the name of the object as a label when rendering.
Definition at line 69 of file CRenderizable.h.
|
private |
Returns how many faces converge in a given vertex.
Definition at line 1441 of file CPolyhedron.cpp.
References mrpt::utils::find().
|
staticprivate |
Generates a list of 2D vertices constituting a regular polygon.
Definition at line 1356 of file CPolyhedron.cpp.
References M_PI.
|
staticprivate |
Generates a list of 3D vertices constituting a regular polygon, appending it to an existing vector.
Definition at line 1377 of file CPolyhedron.cpp.
References M_PI.
|
staticprivate |
Generates a list of 2D vertices constituting a regular polygon, with an angle shift which makes it suitable for antiprisms.
Definition at line 1366 of file CPolyhedron.cpp.
References M_PI.
|
staticprivate |
Generates a list of 3D vertices constituting a regular polygon conveniently shifted, appending it to an existing vector.
Definition at line 1384 of file CPolyhedron.cpp.
References M_PI.
|
virtual |
Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent.
Implements mrpt::opengl::CRenderizable.
Definition at line 1494 of file CPolyhedron.cpp.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
void CPolyhedron::getCenter | ( | mrpt::math::TPoint3D & | center | ) | const |
Gets the center of the polyhedron.
Definition at line 881 of file CPolyhedron.cpp.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
|
inlineinherited |
Returns the object color property as a TColorf.
Definition at line 126 of file CRenderizable.h.
Referenced by mrpt::maps::COctoMap::getAsOctoMapVoxels(), and mrpt::maps::CColouredOctoMap::getAsOctoMapVoxels().
|
inlineinherited |
Returns the object color property as a TColor.
Definition at line 135 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 102 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Color components in the range [0,255].
Definition at line 107 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 101 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Color components in the range [0,255].
Definition at line 106 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 100 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Color components in the range [0,255].
Definition at line 105 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 99 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Color components in the range [0,255].
Definition at line 104 of file CRenderizable.h.
CPolyhedronPtr CPolyhedron::getDual | ( | ) | const |
Given a polyhedron, creates its dual.
std::logic_error | Can't get the dual to this polyhedron. |
Definition at line 935 of file CPolyhedron.cpp.
References mrpt::math::TPlane::coefs, faceContainsEdge(), getPlanesIntersection(), mrpt::math::square(), and val.
|
inline |
Gets a list with the polyhedron's edges.
Definition at line 484 of file CPolyhedron.h.
void CPolyhedron::getEdgesLength | ( | std::vector< double > & | lengths | ) | const |
Gets a vector with each edge's length.
Definition at line 821 of file CPolyhedron.cpp.
|
inline |
Gets a list with the polyhedron's faces.
Definition at line 490 of file CPolyhedron.h.
void CPolyhedron::getFacesArea | ( | std::vector< double > & | areas | ) | const |
Gets a vector with each face's area.
Won't work properly if the polygons are not convex.
Definition at line 827 of file CPolyhedron.cpp.
|
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 709 of file CPolyhedron.h.
References mrpt::math::intersect().
|
inline |
Gets the wireframe lines width.
Definition at line 539 of file CPolyhedron.h.
|
inlineinherited |
Returns the name of the object.
Definition at line 64 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
staticprotectedinherited |
Returns the lowest next free texture name (avoid using OpenGL's own function since we may call them from different threads and seem it's not cool).
Returns the lowest, free texture name.
Definition at line 77 of file CRenderizable.cpp.
References TOpenGLNameBooker::instance(), MAX_GL_TEXTURE_IDS, MAX_GL_TEXTURE_IDS_MASK, MRPT_END, MRPT_START, and THROW_EXCEPTION_FMT.
Referenced by mrpt::opengl::CTexturedObject::loadTextureInOpenGL().
|
inline |
Gets the amount of edges.
Definition at line 502 of file CPolyhedron.h.
|
inline |
Gets the amount of faces.
Definition at line 508 of file CPolyhedron.h.
|
inline |
Gets the amount of vertices.
Definition at line 496 of file CPolyhedron.h.
|
inherited |
Returns the 3D pose of the object as TPose3D.
Definition at line 321 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose.
|
inlineinherited |
Rotation relative to parent coordinate origin, in DEGREES.
Definition at line 93 of file CRenderizable.h.
References mrpt::mrpt::utils::RAD2DEG().
|
inlineinherited |
Rotation relative to parent coordinate origin, in radians.
Definition at line 96 of file CRenderizable.h.
|
inlineinherited |
Returns a const ref to the 3D pose of the object as mrpt::poses::CPose3D (which explicitly contains the 3x3 rotation matrix)
Definition at line 81 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Rotation relative to parent coordinate origin, in DEGREES.
Definition at line 94 of file CRenderizable.h.
References mrpt::mrpt::utils::RAD2DEG().
|
inlineinherited |
Rotation relative to parent coordinate origin, in radians.
Definition at line 97 of file CRenderizable.h.
|
inlineinherited |
Translation relative to parent coordinate origin.
Definition at line 89 of file CRenderizable.h.
|
inlineinherited |
Translation relative to parent coordinate origin.
Definition at line 90 of file CRenderizable.h.
|
inlineinherited |
Rotation relative to parent coordinate origin, in DEGREES.
Definition at line 92 of file CRenderizable.h.
References mrpt::mrpt::utils::RAD2DEG().
|
inlineinherited |
Rotation relative to parent coordinate origin, in radians.
Definition at line 95 of file CRenderizable.h.
|
inlineinherited |
Translation relative to parent coordinate origin.
Definition at line 91 of file CRenderizable.h.
|
virtual |
Returns information about the class of an object in runtime.
Reimplemented from mrpt::opengl::CRenderizableDisplayList.
|
inlineinherited |
Get the current scaling factor in one axis.
Definition at line 121 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Get the current scaling factor in one axis.
Definition at line 122 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Get the current scaling factor in one axis.
Definition at line 123 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
void CPolyhedron::getSetOfPolygons | ( | std::vector< math::TPolygon3D > & | vec | ) | const |
Gets the polyhedron as a set of polygons.
Definition at line 848 of file CPolyhedron.cpp.
void CPolyhedron::getSetOfPolygonsAbsolute | ( | std::vector< math::TPolygon3D > & | vec | ) | const |
Gets the polyhedron as a set of polygons, with the pose transformation already applied.
Definition at line 855 of file CPolyhedron.cpp.
References mrpt::poses::CPose3D::composePoint().
|
inline |
Gets a list with the polyhedron's vertices.
Definition at line 478 of file CPolyhedron.h.
double CPolyhedron::getVolume | ( | ) | const |
Gets the polyhedron volume.
Won't work properly if the polyhedron is not convex.
Definition at line 833 of file CPolyhedron.cpp.
|
inline |
Returns true if the polygon is a completely closed object.
Definition at line 566 of file CPolyhedron.h.
|
inlineinherited |
Definition at line 70 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inlineinherited |
Is the object visible?
Definition at line 66 of file CRenderizable.h.
Referenced by mrpt::opengl::gl_utils::renderSetOfObjects().
|
inline |
Returns whether the polyhedron will be rendered as a wireframe object.
Definition at line 526 of file CPolyhedron.h.
void CPolyhedron::makeConvexPolygons | ( | ) |
Recomputes polygons, if necessary, so that each one is convex.
Definition at line 865 of file CPolyhedron.cpp.
References getVerticesAndFaces(), and mrpt::math::splitInConvexComponents().
|
inlineprotectedinherited |
Must be called to notify that the object has changed (so, the display list must be updated)
Definition at line 49 of file CRenderizableDisplayList.h.
Referenced by mrpt::opengl::CGeneralizedCylinder::addVisibleSectionAtEnd(), mrpt::opengl::CGeneralizedCylinder::addVisibleSectionAtStart(), mrpt::opengl::CMeshFast::adjustGridToImageAR(), mrpt::opengl::CMesh::adjustGridToImageAR(), mrpt::opengl::CVectorField2D::adjustVectorFieldToGrid(), mrpt::opengl::CSetOfLines::appendLine(), mrpt::opengl::CSetOfLines::appendLines(), mrpt::opengl::CTexturedObject::assignImage(), mrpt::opengl::CMeshFast::assignImage(), mrpt::opengl::CMesh::assignImage(), mrpt::opengl::CTexturedObject::assignImage_fast(), mrpt::opengl::CMeshFast::assignImageAndZ(), mrpt::opengl::CMesh::assignImageAndZ(), mrpt::opengl::CSetOfLines::begin(), mrpt::opengl::CSetOfLines::clear(), mrpt::opengl::C3DSScene::clear(), mrpt::opengl::CVectorField2D::clear(), mrpt::opengl::CAssimpModel::clear(), mrpt::opengl::CVectorField3D::clear(), mrpt::opengl::CPlanarLaserScan::clear(), mrpt::opengl::COctoMapVoxels::clear(), mrpt::opengl::CSetOfTexturedTriangles::clearTriangles(), mrpt::opengl::CSetOfTriangles::clearTriangles(), mrpt::opengl::COpenGLStandardObject::disable(), mrpt::opengl::COpenGLStandardObject::enable(), mrpt::opengl::CSimpleLine::enableAntiAliasing(), mrpt::opengl::CGridPlaneXY::enableAntiAliasing(), mrpt::opengl::CGridPlaneXZ::enableAntiAliasing(), mrpt::opengl::CMesh3D::enableAntiAliasing(), mrpt::opengl::CVectorField2D::enableAntiAliasing(), mrpt::opengl::CSetOfLines::enableAntiAliasing(), mrpt::opengl::CVectorField3D::enableAntiAliasing(), mrpt::opengl::CBox::enableBoxBorder(), mrpt::opengl::CVectorField3D::enableColorFromModule(), mrpt::opengl::CMesh::enableColorFromZ(), mrpt::opengl::CMeshFast::enableColorFromZ(), mrpt::opengl::COctoMapVoxels::enableCubeTransparency(), mrpt::opengl::CColorBar::enableDepthTest(), mrpt::opengl::CEllipsoid::enableDrawSolid3D(), mrpt::opengl::C3DSScene::enableExtraAmbientLight(), mrpt::opengl::CMesh3D::enableFaceNormals(), mrpt::opengl::COctoMapVoxels::enableLights(), mrpt::opengl::CPlanarLaserScan::enableLine(), mrpt::opengl::CPlanarLaserScan::enablePoints(), mrpt::opengl::CSphere::enableRadiusIndependentOfEyeDistance(), mrpt::opengl::CMesh3D::enableShowEdges(), mrpt::opengl::CMesh3D::enableShowFaces(), mrpt::opengl::CVectorField3D::enableShowPoints(), mrpt::opengl::CMesh3D::enableShowVertices(), mrpt::opengl::CPlanarLaserScan::enableSurface(), mrpt::opengl::CAxis::enableTickMarks(), mrpt::opengl::CMesh3D::enableTransparency(), mrpt::opengl::CMesh::enableTransparency(), mrpt::opengl::CMeshFast::enableTransparency(), mrpt::opengl::CSetOfTriangles::enableTransparency(), mrpt::opengl::CAngularObservationMesh::enableTransparency(), mrpt::opengl::CMesh::enableWireFrame(), mrpt::opengl::CSetOfLines::end(), mrpt::opengl::C3DSScene::evaluateAnimation(), mrpt::opengl::COctoMapVoxels::getGridCubeRef(), mrpt::opengl::CSetOfTexturedTriangles::getTriangle(), mrpt::opengl::COctoMapVoxels::getVoxel(), mrpt::opengl::COctoMapVoxels::getVoxelRef(), mrpt::opengl::CSetOfTexturedTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangles(), mrpt::opengl::C3DSScene::loadFrom3DSFile(), mrpt::opengl::CMesh3D::loadMesh(), mrpt::opengl::CAssimpModel::loadScene(), mrpt::opengl::COctoMapVoxels::push_back_GridCube(), mrpt::opengl::COctoMapVoxels::push_back_Voxel(), mrpt::opengl::COpenGLStandardObject::readFromStream(), mrpt::opengl::CSimpleLine::readFromStream(), mrpt::opengl::CTexturedPlane::readFromStream(), mrpt::opengl::CCylinder::readFromStream(), mrpt::opengl::C3DSScene::readFromStream(), mrpt::opengl::CSetOfTriangles::readFromStream(), mrpt::opengl::CColorBar::readFromStream(), mrpt::opengl::CArrow::readFromStream(), mrpt::opengl::CAxis::readFromStream(), mrpt::opengl::CDisk::readFromStream(), mrpt::opengl::CSphere::readFromStream(), mrpt::opengl::CGridPlaneXY::readFromStream(), mrpt::opengl::CGridPlaneXZ::readFromStream(), mrpt::opengl::CSetOfLines::readFromStream(), mrpt::opengl::CBox::readFromStream(), mrpt::opengl::CVectorField2D::readFromStream(), mrpt::opengl::CMesh::readFromStream(), mrpt::opengl::CEllipsoidRangeBearing2D::readFromStream(), mrpt::opengl::CMeshFast::readFromStream(), mrpt::opengl::CAssimpModel::readFromStream(), mrpt::opengl::CEllipsoid::readFromStream(), mrpt::opengl::CText3D::readFromStream(), mrpt::opengl::CEllipsoidInverseDepth2D::readFromStream(), mrpt::opengl::CVectorField3D::readFromStream(), mrpt::opengl::CEllipsoidInverseDepth3D::readFromStream(), mrpt::opengl::CFrustum::readFromStream(), mrpt::opengl::COctoMapVoxels::readFromStream(), mrpt::opengl::CTexturedObject::readFromStreamTexturedObject(), mrpt::opengl::CSetOfTriangles::reserve(), mrpt::opengl::CSetOfLines::reserve(), mrpt::opengl::COctoMapVoxels::reserveVoxels(), mrpt::opengl::CSetOfLines::resize(), mrpt::opengl::CVectorField2D::resize(), mrpt::opengl::CVectorField3D::resize(), mrpt::opengl::COctoMapVoxels::resizeGridCubes(), mrpt::opengl::COctoMapVoxels::resizeVoxels(), mrpt::opengl::COctoMapVoxels::resizeVoxelSets(), mrpt::opengl::CEllipsoid::set2DsegmentsCount(), mrpt::opengl::CEllipsoid::set3DsegmentsCount(), mrpt::opengl::CGeneralizedCylinder::setAllSectionsInvisible(), mrpt::opengl::CGeneralizedCylinder::setAllSectionsVisible(), mrpt::opengl::CArrow::setArrowEnds(), mrpt::opengl::CArrow::setArrowYawPitchRoll(), mrpt::opengl::CGeneralizedCylinder::setAxis(), mrpt::opengl::CAxis::setAxisLimits(), mrpt::opengl::CBox::setBoxBorderColor(), mrpt::opengl::CBox::setBoxCorners(), mrpt::opengl::CGeneralizedCylinder::setClosed(), mrpt::opengl::CSetOfTriangles::setColor_u8(), mrpt::opengl::CSetOfTriangles::setColorA_u8(), mrpt::opengl::CColorBar::setColorAndValueLimits(), mrpt::opengl::CSetOfTriangles::setColorB_u8(), mrpt::opengl::CSetOfTriangles::setColorG_u8(), mrpt::opengl::CColorBar::setColormap(), mrpt::opengl::CSetOfTriangles::setColorR_u8(), mrpt::opengl::CEllipsoid::setCovMatrix(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setCovMatrixAndMean(), mrpt::opengl::CDisk::setDiskRadius(), mrpt::opengl::COpenGLStandardObject::setFlags(), mrpt::opengl::CText3D::setFont(), mrpt::opengl::CAxis::setFrequency(), mrpt::opengl::CGeneralizedCylinder::setGeneratrix(), mrpt::opengl::CVectorField2D::setGridCenterAndCellSize(), mrpt::opengl::CGridPlaneXY::setGridFrequency(), mrpt::opengl::CGridPlaneXZ::setGridFrequency(), mrpt::opengl::CMesh::setGridLimits(), mrpt::opengl::CMeshFast::setGridLimits(), mrpt::opengl::CVectorField2D::setGridLimits(), mrpt::opengl::COctoMapVoxels::setGridLinesColor(), mrpt::opengl::COctoMapVoxels::setGridLinesWidth(), mrpt::opengl::CCylinder::setHasBases(), mrpt::opengl::CArrow::setHeadRatio(), mrpt::opengl::CCylinder::setHeight(), mrpt::opengl::CFrustum::setHorzFOV(), mrpt::opengl::CFrustum::setHorzFOVAsymmetric(), mrpt::opengl::CArrow::setLargeRadius(), mrpt::opengl::CSetOfLines::setLineByIndex(), mrpt::opengl::CSimpleLine::setLineCoords(), mrpt::opengl::CSimpleLine::setLineWidth(), mrpt::opengl::CGridPlaneXY::setLineWidth(), mrpt::opengl::CGridPlaneXZ::setLineWidth(), mrpt::opengl::CAxis::setLineWidth(), mrpt::opengl::CSetOfLines::setLineWidth(), mrpt::opengl::CFrustum::setLineWidth(), mrpt::opengl::CBox::setLineWidth(), mrpt::opengl::CEllipsoid::setLineWidth(), mrpt::opengl::CVectorField2D::setLineWidth(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setLineWidth(), mrpt::opengl::CVectorField3D::setLineWidth(), mrpt::opengl::CDisk::setLoopsCount(), mrpt::opengl::CMesh::setMask(), mrpt::opengl::CVectorField3D::setMaxSpeedForColor(), mrpt::opengl::CVectorField3D::setMotionFieldColormap(), mrpt::opengl::CFrustum::setNearFarPlanes(), mrpt::opengl::COpenGLStandardObject::setNormal(), mrpt::opengl::CSphere::setNumberDivsLatitude(), mrpt::opengl::CSphere::setNumberDivsLongitude(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setNumberOfSegments(), mrpt::opengl::CFrustum::setPlaneColor(), mrpt::opengl::CTexturedPlane::setPlaneCorners(), mrpt::opengl::CGridPlaneXY::setPlaneLimits(), mrpt::opengl::CGridPlaneXZ::setPlaneLimits(), mrpt::opengl::CGridPlaneXZ::setPlaneYcoord(), mrpt::opengl::CGridPlaneXY::setPlaneZcoord(), mrpt::opengl::CVectorField2D::setPointColor(), mrpt::opengl::CVectorField3D::setPointColor(), mrpt::opengl::CVectorField3D::setPointCoordinates(), mrpt::opengl::CVectorField2D::setPointSize(), mrpt::opengl::CVectorField3D::setPointSize(), mrpt::opengl::CEllipsoid::setQuantiles(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::setQuantiles(), mrpt::opengl::CCylinder::setRadii(), mrpt::opengl::CSphere::setRadius(), mrpt::opengl::CCylinder::setRadius(), mrpt::opengl::CPlanarLaserScan::setScan(), mrpt::opengl::CDisk::setSlicesCount(), mrpt::opengl::CCylinder::setSlicesCount(), mrpt::opengl::CArrow::setSmallRadius(), mrpt::opengl::CCylinder::setStacksCount(), mrpt::opengl::CText3D::setString(), mrpt::opengl::CText3D::setTextKerning(), mrpt::opengl::CAxis::setTextScale(), mrpt::opengl::CText3D::setTextSpacing(), mrpt::opengl::CText3D::setTextStyle(), mrpt::opengl::CTexturedPlane::setTextureCornerCoords(), mrpt::opengl::CMesh::setUV(), mrpt::opengl::CVectorField2D::setVectorField(), mrpt::opengl::CVectorField3D::setVectorField(), mrpt::opengl::CVectorField2D::setVectorFieldColor(), mrpt::opengl::CVectorField3D::setVectorFieldColor(), mrpt::opengl::CFrustum::setVertFOV(), mrpt::opengl::CFrustum::setVertFOVAsymmetric(), mrpt::opengl::CSetOfLines::setVerticesPointSize(), mrpt::opengl::CGeneralizedCylinder::setVisibleSections(), mrpt::opengl::COctoMapVoxels::setVisualizationMode(), mrpt::opengl::COctoMapVoxels::setVoxelAsPointsSize(), mrpt::opengl::CBox::setWireframe(), mrpt::opengl::CAngularObservationMesh::setWireframe(), mrpt::opengl::CMeshFast::setXBounds(), mrpt::opengl::CMesh::setXBounds(), mrpt::opengl::CMeshFast::setXMax(), mrpt::opengl::CMesh::setXMax(), mrpt::opengl::CMeshFast::setXMin(), mrpt::opengl::CMesh::setXMin(), mrpt::opengl::CMeshFast::setYBounds(), mrpt::opengl::CMesh::setYBounds(), mrpt::opengl::CMeshFast::setYMax(), mrpt::opengl::CMesh::setYMax(), mrpt::opengl::CMeshFast::setYMin(), mrpt::opengl::CMesh::setYMin(), mrpt::opengl::CMesh::setZ(), mrpt::opengl::CMeshFast::setZ(), mrpt::opengl::COctoMapVoxels::showGridLines(), mrpt::opengl::COctoMapVoxels::showVoxels(), mrpt::opengl::COctoMapVoxels::showVoxelsAsPoints(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::thisclass_readFromStream(), mrpt::opengl::CMesh::updateColorsMatrix(), mrpt::opengl::CMeshFast::updateColorsMatrix(), mrpt::opengl::CMeshFast::updatePoints(), mrpt::opengl::CMesh::updatePolygons(), mrpt::opengl::CSetOfTriangles::updatePolygons(), and mrpt::opengl::CMesh::updateTriangles().
Definition at line 35 of file CPolyhedron.h.
|
inline |
Definition at line 35 of file CPolyhedron.h.
Definition at line 35 of file CPolyhedron.h.
Definition at line 35 of file CPolyhedron.h.
|
inline |
Definition at line 35 of file CPolyhedron.h.
|
inline |
Definition at line 35 of file CPolyhedron.h.
Definition at line 35 of file CPolyhedron.h.
|
inline |
Definition at line 35 of file CPolyhedron.h.
|
protectedvirtual |
Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.
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 error, see CStream::ReadBuffer |
Implements mrpt::utils::CSerializable.
Definition at line 1476 of file CPolyhedron.cpp.
References MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION, and version.
|
inlineprotectedinherited |
Definition at line 58 of file CRenderizableDisplayList.h.
References mrpt::opengl::CRenderizable::readFromStreamRender().
Referenced by mrpt::opengl::CSimpleLine::readFromStream(), mrpt::opengl::CTexturedPlane::readFromStream(), mrpt::opengl::CGridPlaneXZ::readFromStream(), mrpt::opengl::CSetOfLines::readFromStream(), mrpt::opengl::CGridPlaneXY::readFromStream(), mrpt::opengl::CVectorField2D::readFromStream(), mrpt::opengl::CBox::readFromStream(), mrpt::opengl::CText3D::readFromStream(), mrpt::opengl::CVectorField3D::readFromStream(), and mrpt::opengl::CFrustum::readFromStream().
|
staticprotectedinherited |
Definition at line 102 of file CRenderizable.cpp.
References TOpenGLNameBooker::cs, TOpenGLNameBooker::freeTextureNames, TOpenGLNameBooker::instance(), and TOpenGLNameBooker::next_free_texture.
Referenced by mrpt::opengl::CTexturedObject::unloadTexture().
|
virtualinherited |
Render the object, regenerating the display list if needed, otherwise just calling it.
Implements mrpt::opengl::CRenderizable.
Definition at line 81 of file CRenderizableDisplayList.cpp.
References TAuxDLData::getSingleton(), GL_COMPILE, GL_NO_ERROR, glCallList(), glDeleteLists(), glEndList(), glGenLists(), glGetError(), glNewList(), INVALID_DISPLAY_LIST_ID, mrpt::opengl::CRenderizableDisplayList::m_dl, mrpt::opengl::CRenderizableDisplayList::m_dl_recreate, mrpt::opengl::CRenderizableDisplayList::render_dl(), and mrpt::opengl::CRenderizableDisplayList::should_skip_display_list_cache().
|
virtual |
Render.
Implements mrpt::opengl::CRenderizableDisplayList.
Definition at line 778 of file CPolyhedron.cpp.
References mrpt::opengl::gl_utils::checkOpenGLError(), GL_BLEND, GL_LIGHTING, GL_LINES, GL_ONE_MINUS_SRC_ALPHA, GL_POLYGON, GL_SRC_ALPHA, glBegin(), glBlendFunc(), glColor4ub(), glDisable(), glEnable(), glEnd(), glLineWidth(), glNormal3f(), and glVertex3f().
This method is safe for calling from within ::render() methods.
Definition at line 351 of file CRenderizable.cpp.
References mrpt::opengl::gl_utils::renderTextBitmap().
|
staticinherited |
Render a text message in the current rendering context, creating a glViewport in the way (do not call within ::render() methods)
Definition at line 286 of file gl_utils.cpp.
References aux_mrptfont2glutfont(), GL_DEPTH_TEST, GL_MODELVIEW, GL_PROJECTION, GL_TRANSFORM_BIT, GL_VIEWPORT, GL_VIEWPORT_BIT, glColor3f(), glDisable(), glEnable(), glGetIntegerv(), glLoadIdentity(), glMatrixMode(), glPopAttrib(), glPopMatrix(), glPushAttrib(), glPushMatrix(), glRasterPos3f(), glViewport(), and MRPT_UNUSED_PARAM.
CPolyhedronPtr CPolyhedron::rotate | ( | double | angle | ) | const |
Rotates a polyhedron around the Z axis a given amount of radians.
In some cases, this operation may be necessary to view the symmetry between related objects.
Definition at line 1334 of file CPolyhedron.cpp.
CPolyhedronPtr 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 1346 of file CPolyhedron.cpp.
|
inlineinherited |
c | Changes the default object color |
Definition at line 127 of file CRenderizable.h.
|
inlineinherited |
Set the color components of this object (R,G,B,Alpha, in the range 0-1)
Definition at line 133 of file CRenderizable.h.
References R.
|
inlinevirtualinherited |
Changes the default object color.
Reimplemented from mrpt::opengl::CRenderizable.
Reimplemented in mrpt::opengl::CSetOfTriangles.
Definition at line 86 of file CRenderizableDisplayList.h.
References mrpt::opengl::CRenderizable::setColor_u8().
|
inlineinherited |
Color components in the range [0,255].
Definition at line 87 of file CRenderizableDisplayList.h.
References R, and mrpt::opengl::CRenderizable::setColor_u8().
|
inlineinherited |
Color components in the range [0,1].
Definition at line 112 of file CRenderizable.h.
|
inlinevirtualinherited |
Color components in the range [0,255].
Reimplemented from mrpt::opengl::CRenderizable.
Reimplemented in mrpt::opengl::CSetOfTriangles.
Definition at line 85 of file CRenderizableDisplayList.h.
Referenced by mrpt::nav::ClearanceDiagram::renderAs3DObject().
|
inlineinherited |
Color components in the range [0,1].
Definition at line 111 of file CRenderizable.h.
|
inlinevirtualinherited |
Color components in the range [0,255].
Reimplemented from mrpt::opengl::CRenderizable.
Reimplemented in mrpt::opengl::CSetOfTriangles.
Definition at line 84 of file CRenderizableDisplayList.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 110 of file CRenderizable.h.
|
inlinevirtualinherited |
Color components in the range [0,255].
Reimplemented from mrpt::opengl::CRenderizable.
Reimplemented in mrpt::opengl::CSetOfTriangles.
Definition at line 83 of file CRenderizableDisplayList.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 109 of file CRenderizable.h.
|
inlinevirtualinherited |
Color components in the range [0,255].
Reimplemented from mrpt::opengl::CRenderizable.
Reimplemented in mrpt::opengl::CSetOfTriangles.
Definition at line 82 of file CRenderizableDisplayList.h.
|
inline |
Sets the width used to render lines, when wireframe rendering is activated.
Definition at line 545 of file CPolyhedron.h.
|
inlineinherited |
Changes the location of the object, keeping untouched the orientation.
Definition at line 84 of file CRenderizable.h.
|
inlineinherited |
Changes the location of the object, keeping untouched the orientation.
Definition at line 87 of file CRenderizable.h.
|
inlineinherited |
Changes the name of the object.
Definition at line 63 of file CRenderizable.h.
|
private |
Calculates the normal vector to a face.
Definition at line 1397 of file CPolyhedron.cpp.
References mrpt::math::TPlane::getNormalVector(), mrpt::math::TPolygon3D::getPlane(), mrpt::opengl::CPolyhedron::TPolyhedronFace::normal, and mrpt::opengl::CPolyhedron::TPolyhedronFace::vertices.
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
Definition at line 285 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose.
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
Definition at line 290 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose.
|
inherited |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)
Definition at line 295 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose.
|
inherited |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)
Definition at line 300 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose.
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
o | Set the 3D pose from a mrpt::poses::CPose3D object |
Definition at line 306 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose, mrpt::poses::CPose3D::setFromValues(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
o | Set the 3D pose from a mrpt::poses::CPose3D object |
Definition at line 311 of file CRenderizable.cpp.
References mrpt::opengl::CRenderizable::m_pose, mrpt::poses::CPose3D::setFromValues(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
|
inlineinherited |
Scale to apply to the object, in all three axes (default=1)
Definition at line 119 of file CRenderizable.h.
Referenced by mrpt::opengl::CText3D::CText3D().
|
inlineinherited |
Scale to apply to the object in each axis (default=1)
Definition at line 120 of file CRenderizable.h.
|
inlineinherited |
Set object visibility (default=true)
Definition at line 67 of file CRenderizable.h.
|
inline |
Sets whether the polyhedron will be rendered as a wireframe object.
Definition at line 532 of file CPolyhedron.h.
|
inlineprotectedvirtualinherited |
Optional: If the object has some state in which creating a display list is NOT preferred over direct rendering, implement this method and return "true" in those cases.
Reimplemented in mrpt::opengl::CSphere.
Definition at line 56 of file CRenderizableDisplayList.h.
Referenced by mrpt::opengl::CRenderizableDisplayList::render().
|
staticinherited |
Return the exact width in pixels for a given string, as will be rendered by renderTextBitmap().
Definition at line 359 of file CRenderizable.cpp.
References mrpt::opengl::gl_utils::textBitmapWidth().
|
virtual |
Ray trace.
Reimplemented from mrpt::opengl::CRenderizable.
Definition at line 816 of file CPolyhedron.cpp.
References mrpt::math::traceRay().
CPolyhedronPtr CPolyhedron::truncate | ( | double | factor | ) | const |
Truncates a polyhedron to a given factor.
std::logic_error | Polyhedron truncation results in skew polygons and thus it's impossible to perform. |
Definition at line 991 of file CPolyhedron.cpp.
References searchForEdge(), searchForFace(), THROW_EXCEPTION, mrpt::opengl::CPolyhedron::TPolyhedronEdge::v1, and mrpt::opengl::CPolyhedron::TPolyhedronEdge::v2.
void CPolyhedron::updatePolygons | ( | ) | const |
Updates the mutable list of polygons used in rendering and ray tracing.
Definition at line 1391 of file CPolyhedron.cpp.
|
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 NULL is class does not support conversion to MATLAB. Definition at line 79 of file CSerializable.h.
|
protectedvirtual |
Introduces a pure virtual method responsible for writing to a CStream.
This can not be used directly be users, instead use "stream << object;" for writing it to a stream.
out | The output binary stream where object must be dumped. |
getVersion | If NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data. |
std::exception | On any error, see CStream::WriteBuffer |
Implements mrpt::utils::CSerializable.
Definition at line 1467 of file CPolyhedron.cpp.
References version.
|
protectedinherited |
Definition at line 112 of file CRenderizable.cpp.
References mrpt::utils::TColor::A, mrpt::utils::TColor::B, mrpt::utils::TColor::G, mrpt::opengl::CRenderizable::m_color, mrpt::opengl::CRenderizable::m_name, mrpt::opengl::CRenderizable::m_pose, mrpt::opengl::CRenderizable::m_scale_x, mrpt::opengl::CRenderizable::m_scale_y, mrpt::opengl::CRenderizable::m_scale_z, mrpt::opengl::CRenderizable::m_show_name, mrpt::opengl::CRenderizable::m_visible, mrpt::poses::CPose3D::pitch(), mrpt::utils::TColor::R, mrpt::poses::CPose3D::roll(), mrpt::utils::CStream::WriteBuffer(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y(), and mrpt::poses::CPose3D::yaw().
Referenced by mrpt::opengl::CSimpleLine::writeToStream(), mrpt::opengl::CTexturedPlane::writeToStream(), mrpt::opengl::CGridPlaneXZ::writeToStream(), mrpt::opengl::CSetOfLines::writeToStream(), mrpt::opengl::CGridPlaneXY::writeToStream(), mrpt::opengl::CVectorField2D::writeToStream(), mrpt::opengl::CBox::writeToStream(), mrpt::opengl::CText3D::writeToStream(), mrpt::opengl::CVectorField3D::writeToStream(), and mrpt::opengl::CFrustum::writeToStream().
|
staticprotected |
Definition at line 35 of file CPolyhedron.h.
|
staticinherited |
|
static |
Definition at line 35 of file CPolyhedron.h.
|
staticinherited |
Definition at line 46 of file CRenderizable.h.
|
staticinherited |
Definition at line 38 of file CRenderizableDisplayList.h.
|
staticinherited |
Definition at line 42 of file CSerializable.h.
|
static |
Definition at line 35 of file CPolyhedron.h.
|
protectedinherited |
Color components in the range [0,255].
Definition at line 54 of file CRenderizable.h.
Referenced by mrpt::opengl::CMesh3D::CMesh3D(), mrpt::opengl::CVectorField2D::CVectorField2D(), mrpt::opengl::CVectorField3D::CVectorField3D(), mrpt::opengl::CRenderizable::readFromStreamRender(), mrpt::opengl::CBox::render_dl(), mrpt::opengl::CSimpleLine::render_dl(), mrpt::opengl::CText3D::render_dl(), mrpt::opengl::CSetOfLines::render_dl(), mrpt::opengl::CVectorField2D::render_dl(), mrpt::opengl::CVectorField3D::render_dl(), mrpt::opengl::CTexturedObject::render_post(), mrpt::opengl::CTexturedObject::render_pre(), mrpt::opengl::CRenderizable::setColor_u8(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protectedinherited |
Definition at line 52 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
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 55 of file CRenderizable.h.
Referenced by mrpt::opengl::C3DSScene::getBoundingBox(), mrpt::opengl::CAssimpModel::getBoundingBox(), mrpt::opengl::CBox::getBoundingBox(), mrpt::opengl::CSimpleLine::getBoundingBox(), mrpt::opengl::CTexturedPlane::getBoundingBox(), mrpt::opengl::CGridPlaneXY::getBoundingBox(), mrpt::opengl::CGridPlaneXZ::getBoundingBox(), mrpt::opengl::CText3D::getBoundingBox(), mrpt::opengl::CFrustum::getBoundingBox(), mrpt::opengl::CMesh3D::getBoundingBox(), mrpt::opengl::CVectorField2D::getBoundingBox(), mrpt::opengl::CSetOfLines::getBoundingBox(), mrpt::opengl::CVectorField3D::getBoundingBox(), mrpt::opengl::CRenderizable::getPose(), mrpt::opengl::CRenderizable::readFromStreamRender(), mrpt::opengl::CGeneralizedEllipsoidTemplate< 3 >::render_dl(), mrpt::opengl::CRenderizable::setPose(), mrpt::opengl::CTexturedPlane::traceRay(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protectedinherited |
Definition at line 56 of file CRenderizable.h.
Referenced by mrpt::opengl::CText3D::getBoundingBox(), mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protectedinherited |
Definition at line 56 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protectedinherited |
Scale components to apply to the object (default=1)
Definition at line 56 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protectedinherited |
Definition at line 53 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protectedinherited |
Is the object visible? (default=true)
Definition at line 57 of file CRenderizable.h.
Referenced by mrpt::opengl::CRenderizable::readFromStreamRender(), and mrpt::opengl::CRenderizable::writeToStreamRender().
|
protected |
List of polyhedron's edges.
Definition at line 90 of file CPolyhedron.h.
|
protected |
List of polyhedron's faces.
Definition at line 94 of file CPolyhedron.h.
|
protected |
When displaying as wireframe object, this variable stores the width of the edges.
Definition at line 102 of file CPolyhedron.h.
|
protected |
List of vertices presents in the polyhedron.
Definition at line 86 of file CPolyhedron.h.
|
protected |
This flag determines whether the polyhedron will be displayed as a solid object or as a set of edges.
Definition at line 98 of file CPolyhedron.h.
|
mutableprotected |
Whether the set of actual polygons is up to date or not.
Definition at line 110 of file CPolyhedron.h.
|
mutableprotected |
Mutable list of actual polygons, maintained for speed.
Definition at line 106 of file CPolyhedron.h.
Page generated by Doxygen 1.8.14 for MRPT 1.5.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |