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 | 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. | |
void | render_dl () const MRPT_OVERRIDE |
Render. | |
bool | traceRay (const mrpt::poses::CPose3D &o, double &dist) const MRPT_OVERRIDE |
Ray trace. | |
void | getVertices (std::vector< mrpt::math::TPoint3D > &vertices) const |
Gets a list with the polyhedron's vertices. | |
void | getEdges (std::vector< TPolyhedronEdge > &edges) const |
Gets a list with the polyhedron's edges. | |
void | getFaces (std::vector< TPolyhedronFace > &faces) const |
Gets a list with the polyhedron's faces. | |
uint32_t | getNumberOfVertices () const |
Gets the amount of vertices. | |
uint32_t | getNumberOfEdges () const |
Gets the amount of edges. | |
uint32_t | getNumberOfFaces () const |
Gets the amount of faces. | |
void | getEdgesLength (std::vector< double > &lengths) const |
Gets a vector with each edge's length. | |
void | getFacesArea (std::vector< double > &areas) const |
Gets a vector with each face's area. | |
double | getVolume () const |
Gets the polyhedron volume. | |
bool | isWireframe () const |
Returns whether the polyhedron will be rendered as a wireframe object. | |
void | setWireframe (bool enabled=true) |
Sets whether the polyhedron will be rendered as a wireframe object. | |
double | getLineWidth () const |
Gets the wireframe lines width. | |
void | setLineWidth (double lineWidth) |
Sets the width used to render lines, when wireframe rendering is activated. | |
void | getSetOfPolygons (std::vector< math::TPolygon3D > &vec) const |
Gets the polyhedron as a set of polygons. | |
void | getSetOfPolygonsAbsolute (std::vector< math::TPolygon3D > &vec) const |
Gets the polyhedron as a set of polygons, with the pose transformation already applied. | |
bool | isClosed () const |
Returns true if the polygon is a completely closed object. | |
void | makeConvexPolygons () |
Recomputes polygons, if necessary, so that each one is convex. | |
void | getCenter (mrpt::math::TPoint3D ¢er) const |
Gets the center of the polyhedron. | |
void | updatePolygons () const |
Updates the mutable list of polygons used in rendering and ray tracing. | |
CRenderizableDisplayList * | clone () const |
Interface for the stlplus smart pointer class. | |
void | render () const MRPT_OVERRIDE |
Render the object, regenerating the display list if needed, otherwise just calling it. | |
Polyhedron special operations. | |
CPolyhedronPtr | getDual () const |
Given a polyhedron, creates its dual. | |
CPolyhedronPtr | truncate (double factor) const |
Truncates a polyhedron to a given factor. | |
CPolyhedronPtr | cantellate (double factor) const |
Cantellates a polyhedron to a given factor. | |
CPolyhedronPtr | augment (double height) const |
Augments a polyhedron to a given height. | |
CPolyhedronPtr | augment (double height, size_t numVertices) const |
Augments a polyhedron to a given height. | |
CPolyhedronPtr | augment (bool direction=false) const |
Augments a polyhedron, so that the resulting triangles are equilateral. | |
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. | |
CPolyhedronPtr | rotate (double angle) const |
Rotates a polyhedron around the Z axis a given amount of radians. | |
CPolyhedronPtr | scale (double factor) const |
Scales a polyhedron to a given factor. | |
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]. | |
CRenderizable & | setColorG_u8 (const uint8_t g) MRPT_OVERRIDE |
Color components in the range [0,255]. | |
CRenderizable & | setColorB_u8 (const uint8_t b) MRPT_OVERRIDE |
Color components in the range [0,255]. | |
CRenderizable & | setColorA_u8 (const uint8_t a) MRPT_OVERRIDE |
Color components in the range [0,255]. | |
CRenderizable & | setColor_u8 (const mrpt::utils::TColor &c) MRPT_OVERRIDE |
Changes the default object color. | |
Changes the appearance of the object to render | |
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-1) | |
void | setName (const std::string &n) |
Changes the name of the object. | |
const std::string & | getName () const |
Returns the name of the object. | |
bool | isVisible () const |
Is the object visible? | |
void | setVisibility (bool visible=true) |
Set object visibility (default=true) | |
void | enableShowName (bool showName=true) |
Enables or disables showing the name of the object as a label when rendering. | |
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) | |
CRenderizable & | setPose (const mrpt::math::TPose3D &o) |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this) | |
CRenderizable & | setPose (const mrpt::poses::CPoint3D &o) |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) | |
CRenderizable & | setPose (const mrpt::poses::CPoint2D &o) |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this) | |
mrpt::math::TPose3D | getPose () const |
Returns the 3D pose of the object as TPose3D. | |
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) | |
CRenderizable & | setLocation (double x, double y, double z) |
Changes the location of the object, keeping untouched the orientation. | |
CRenderizable & | setLocation (const mrpt::math::TPoint3D &p) |
Changes the location of the object, keeping untouched the orientation. | |
double | getPoseX () const |
Translation relative to parent coordinate origin. | |
double | getPoseY () const |
Translation relative to parent coordinate origin. | |
double | getPoseZ () const |
Translation relative to parent coordinate origin. | |
double | getPoseYaw () const |
Rotation relative to parent coordinate origin, in DEGREES. | |
double | getPosePitch () const |
Rotation relative to parent coordinate origin, in DEGREES. | |
double | getPoseRoll () const |
Rotation relative to parent coordinate origin, in DEGREES. | |
double | getPoseYawRad () const |
Rotation relative to parent coordinate origin, in radians. | |
double | getPosePitchRad () const |
Rotation relative to parent coordinate origin, in radians. | |
double | getPoseRollRad () const |
Rotation relative to parent coordinate origin, in radians. | |
double | getColorR () const |
Color components in the range [0,1]. | |
double | getColorG () const |
Color components in the range [0,1]. | |
double | getColorB () const |
Color components in the range [0,1]. | |
double | getColorA () const |
Color components in the range [0,1]. | |
uint8_t | getColorR_u8 () const |
Color components in the range [0,255]. | |
uint8_t | getColorG_u8 () const |
Color components in the range [0,255]. | |
uint8_t | getColorB_u8 () const |
Color components in the range [0,255]. | |
uint8_t | getColorA_u8 () const |
Color components in the range [0,255]. | |
CRenderizable & | setColorR (const double r) |
Color components in the range [0,1]. | |
CRenderizable & | setColorG (const double g) |
Color components in the range [0,1]. | |
CRenderizable & | setColorB (const double b) |
Color components in the range [0,1]. | |
CRenderizable & | setColorA (const double a) |
Color components in the range [0,1]. | |
CRenderizable & | setScale (float s) |
Scale to apply to the object, in all three axes (default=1) | |
CRenderizable & | setScale (float sx, float sy, float sz) |
Scale to apply to the object in each axis (default=1) | |
float | getScaleX () const |
Get the current scaling factor in one axis. | |
float | getScaleY () const |
Get the current scaling factor in one axis. | |
float | getScaleZ () const |
Get the current scaling factor in one axis. | |
mrpt::utils::TColorf | getColor () const |
Returns the object color property as a TColorf. | |
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) | |
const mrpt::utils::TColor & | getColor_u8 () const |
Returns the object color property as a TColor. | |
Static Public Member Functions | |
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. | |
static CPolyhedronPtr | Create (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces) |
Creation of a polyhedron from its vertices and faces. | |
static CPolyhedronPtr | Create (const std::vector< mrpt::math::TPolygon3D > &polys) |
Creation from a set of polygons. | |
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. | |
static CPolyhedronPtr | CreateRandomPolyhedron (double radius) |
Creates a random polyhedron from the static methods. | |
static void | renderTextBitmap (const char *str, void *fontStyle) |
This method is safe for calling from within render() methods. | |
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) | |
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(). | |
Platonic solids. | |
static CPolyhedronPtr | CreateTetrahedron (double radius) |
Creates a regular tetrahedron (see http://en.wikipedia.org/wiki/Tetrahedron). | |
static CPolyhedronPtr | CreateHexahedron (double radius) |
Creates a regular cube, also called hexahedron (see http://en.wikipedia.org/wiki/Hexahedron). | |
static CPolyhedronPtr | CreateOctahedron (double radius) |
Creates a regular octahedron (see http://en.wikipedia.org/wiki/Octahedron). | |
static CPolyhedronPtr | CreateDodecahedron (double radius) |
Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron). | |
static CPolyhedronPtr | CreateIcosahedron (double radius) |
Creates a regular icosahedron (see http://en.wikipedia.org/wiki/Icosahedron). | |
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). | |
static CPolyhedronPtr | CreateCuboctahedron (double radius) |
Creates a cuboctahedron, consisting of six square faces and eight triangular ones (see http://en.wikipedia.org/wiki/Cuboctahedron). | |
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). | |
static CPolyhedronPtr | CreateTruncatedOctahedron (double radius) |
Creates a truncated octahedron, with eight hexagons and eight squares (see http://en.wikipedia.org/wiki/Truncated_octahedron). | |
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. | |
static CPolyhedronPtr | CreateIcosidodecahedron (double radius, bool type=true) |
Creates an icosidodecahedron, with 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Icosidodecahedron). | |
static CPolyhedronPtr | CreateTruncatedDodecahedron (double radius) |
Creates a truncated dodecahedron, consisting of 12 dodecagons and 20 triangles (see http://en.wikipedia.org/wiki/Truncated_dodecahedron). | |
static CPolyhedronPtr | CreateTruncatedIcosahedron (double radius) |
Creates a truncated icosahedron, consisting of 20 hexagons and 12 pentagons. | |
static CPolyhedronPtr | CreateRhombicosidodecahedron (double radius) |
Creates a rhombicosidodecahedron, consisting of 30 squares, 12 pentagons and 20 triangles (see http://en.wikipedia.org/wiki/Rhombicosidodecahedron). | |
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). | |
Catalan solids. | |
static CPolyhedronPtr | CreateTriakisTetrahedron (double radius) |
Creates a triakis tetrahedron, dual to the truncated tetrahedron. | |
static CPolyhedronPtr | CreateRhombicDodecahedron (double radius) |
Creates a rhombic dodecahedron, dual to the cuboctahedron. | |
static CPolyhedronPtr | CreateTriakisOctahedron (double radius) |
Creates a triakis octahedron, dual to the truncated hexahedron. | |
static CPolyhedronPtr | CreateTetrakisHexahedron (double radius) |
Creates a tetrakis hexahedron, dual to the truncated octahedron. | |
static CPolyhedronPtr | CreateDeltoidalIcositetrahedron (double radius) |
Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron. | |
static CPolyhedronPtr | CreateRhombicTriacontahedron (double radius) |
Creates a rhombic triacontahedron, dual to the icosidodecahedron. | |
static CPolyhedronPtr | CreateTriakisIcosahedron (double radius) |
Creates a triakis icosahedron, dual to the truncated dodecahedron. | |
static CPolyhedronPtr | CreatePentakisDodecahedron (double radius) |
Creates a pentakis dodecahedron, dual to the truncated icosahedron. | |
static CPolyhedronPtr | CreateDeltoidalHexecontahedron (double radius) |
Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron. | |
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. | |
static CPolyhedronPtr | CreateCubicPrism (const mrpt::math::TPoint3D &p1, const mrpt::math::TPoint3D &p2) |
Creates a cubic prism, given two opposite vertices. | |
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. | |
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. | |
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. | |
static CPolyhedronPtr | CreateFrustum (const std::vector< mrpt::math::TPoint2D > &baseVertices, double height, double ratio) |
This is a synonym for CreateTruncatedPyramid. | |
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. | |
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. | |
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. | |
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. | |
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. | |
static CPolyhedronPtr | CreateRegularAntiprism (uint32_t numBaseEdges, double baseRadius, double height) |
Creates an antiprism whose base is a regular polygon. | |
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. | |
static CPolyhedronPtr | CreateRegularPyramid (uint32_t numBaseEdges, double baseRadius, double height) |
Creates a regular pyramid whose base is a regular polygon. | |
static CPolyhedronPtr | CreateRegularDoublePyramid (uint32_t numBaseEdges, double baseRadius, double height1, double height2) |
Creates a regular double pyramid whose base is a regular polygon. | |
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. | |
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. | |
static CPolyhedronPtr | CreateRegularTruncatedPyramid (uint32_t numBaseEdges, double baseRadius, double height, double ratio) |
Creates a regular truncated pyramid whose base is a regular polygon. | |
static CPolyhedronPtr | CreateRegularFrustum (uint32_t numBaseEdges, double baseRadius, double height, double ratio) |
This is a synonym for CreateRegularTruncatedPyramid. | |
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. | |
static CPolyhedronPtr | CreateCupola (uint32_t numBaseEdges, double edgeLength) |
Creates a cupola. | |
static CPolyhedronPtr | CreateCatalanTrapezohedron (uint32_t numBaseEdges, double height) |
Creates a trapezohedron whose dual is exactly an archimedean antiprism. | |
static CPolyhedronPtr | CreateCatalanDoublePyramid (uint32_t numBaseEdges, double height) |
Creates a double pyramid whose dual is exactly an archimedean prism. | |
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. | |
Static Public Attributes | |
RTTI stuff <br> | |
static const mrpt::utils::TRuntimeClassId | classCRenderizableDisplayList |
RTTI stuff <br> | |
static const mrpt::utils::TRuntimeClassId | classCRenderizable |
Protected Member Functions | |
void | writeToStreamRender (utils::CStream &out) const |
CSerializable virtual methods | |
void | writeToStream (mrpt::utils::CStream &out, int *getVersion) const MRPT_OVERRIDE |
void | readFromStream (mrpt::utils::CStream &in, int version) MRPT_OVERRIDE |
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) | |
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. | |
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. | |
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). | |
static void | releaseTextureName (unsigned int i) |
Protected Attributes | |
std::vector< mrpt::math::TPoint3D > | mVertices |
List of vertices presents in the polyhedron. | |
std::vector< TPolyhedronEdge > | mEdges |
List of polyhedron's edges. | |
std::vector< TPolyhedronFace > | mFaces |
List of polyhedron's faces. | |
bool | mWireframe |
This flag determines whether the polyhedron will be displayed as a solid object or as a set of edges. | |
double | mLineWidth |
When displaying as wireframe object, this variable stores the width of the edges. | |
std::vector< mrpt::math::TPolygonWithPlane > | tempPolygons |
Mutable list of actual polygons, maintained for speed. | |
bool | polygonsUpToDate |
Whether the set of actual polygons is up to date or not. | |
std::string | m_name |
bool | m_show_name |
mrpt::utils::TColor | m_color |
Color components in the range [0,255]. | |
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. | |
float | m_scale_x |
float | m_scale_y |
float | m_scale_z |
Scale components to apply to the object (default=1) | |
bool | m_visible |
Is the object visible? (default=true) | |
Private Member Functions | |
bool | setNormal (TPolyhedronFace &f, bool doCheck=true) |
Calculates the normal vector to a face. | |
void | addEdges (const TPolyhedronFace &e) |
Adds, to the existing list of edges, each edge in a given face. | |
size_t | edgesInVertex (size_t vertex) const |
Returns how many edges converge in a given vertex. | |
size_t | facesInVertex (size_t vertex) const |
Returns how many faces converge in a given vertex. | |
CPolyhedron () | |
Basic empty constructor. | |
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. | |
virtual | ~CPolyhedron () |
Destructor. | |
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. | |
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. | |
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. | |
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. | |
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. | |
static CPolyhedronPtr | CreateNoCheck (const std::vector< mrpt::math::TPoint3D > &vertices, const std::vector< TPolyhedronFace > &faces) |
Creates a polyhedron without checking its correctness. | |
static CPolyhedronPtr | CreateEmpty () |
Creates an empty Polyhedron. | |
Private Attributes | |
unsigned int | m_dl |
Display list ID, for derived classes that want to use it (it's automatically deleted and freed on destruction of this base class). | |
bool | m_dl_recreate |
If using display lists, this is true when the list must be updated (the object changes, it's the first rendering, etc...). | |
RTTI stuff <br> | |
typedef CPolyhedronPtr | SmartPtr |
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 MRPT_OVERRIDE |
virtual mrpt::utils::CObject * | duplicate () const MRPT_OVERRIDE |
static mrpt::utils::CObject * | CreateObject () |
static CPolyhedronPtr | Create () |
A typedef for the associated smart pointer
Definition at line 35 of file CPolyhedron.h.
|
inlineprivate |
Basic empty constructor.
Definition at line 687 of file CPolyhedron.h.
|
inlineprivate |
Basic constructor with a list of vertices and another of faces, checking for correctness.
Definition at line 691 of file CPolyhedron.h.
|
inlineprivatevirtual |
Destructor.
Definition at line 703 of file CPolyhedron.h.
|
staticprotected |
|
private |
Adds, to the existing list of edges, each edge in a given face.
CPolyhedronPtr mrpt::opengl::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. |
CPolyhedronPtr mrpt::opengl::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.
CPolyhedronPtr mrpt::opengl::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.
CPolyhedronPtr mrpt::opengl::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. |
CPolyhedronPtr mrpt::opengl::CPolyhedron::cantellate | ( | double | factor | ) | const |
|
staticprivate |
Checks whether a set of faces is suitable for a set of vertices.
|
staticprotectedinherited |
Checks glGetError and throws an exception if an error situation is found.
|
inlineinherited |
Interface for the stlplus 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.). |
|
static |
Creation of a polyhedron from its vertices and faces.
logic_error | if the polyhedron definition has flaws (bad vertex indices, etc.). |
|
static |
Creation from a set of polygons.
|
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.
|
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.
|
static |
Creates a bifrustum, or double truncated pyramid, given a base which will lie on the XY plane.
|
static |
Creates a double pyramid whose dual is exactly an archimedean prism.
Creates an octahedron if numBaseEdges is equal to 4.
|
static |
Creates a trapezohedron whose dual is exactly an archimedean antiprism.
Creates a cube if numBaseEdges is equal to 3.
|
static |
Creates a cubic prism, given two opposite vertices.
|
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.
|
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:
|
static |
Creates a cupola.
std::logic_error | if the number of edges is odd or less than four. |
|
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.
|
static |
Creates a custom prism with vertical edges, given any base which will lie on the XY plane.
|
static |
Creates a deltoidal hexecontahedron, dual to the rhombicosidodecahedron.
This body consists of 60 kites (see http://en.wikipedia.org/wiki/Deltoidal_hexecontahedron).
|
static |
Creates a deltoidal icositetrahedron, dual to the rhombicuboctahedron.
This body consists of 24 kites (see http://en.wikipedia.org/wiki/Deltoidal_icositetrahedron).
|
static |
Creates a regular dodecahedron (see http://en.wikipedia.org/wiki/Dodecahedron).
The dodecahedron is created as the dual to an icosahedron.
|
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.
|
staticprivate |
Creates an empty Polyhedron.
|
static |
This is a synonym for 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:
|
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.
|
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.
|
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 |
|
staticprivate |
Creates a polyhedron without checking its correctness.
|
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:
|
static |
Creates a parallelepiped, given a base point and three vectors represented as points.
|
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).
|
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).
|
static |
Creates a custom pyramid, using a set of 2D vertices which will lie on the XY plane.
|
static |
Creates a random polyhedron from the static methods.
|
static |
Creates an antiprism whose base is a regular polygon.
The upper base is rotated
|
static |
Creates a bifrustum (double truncated pyramid) whose base is a regular polygon lying in the XY plane.
|
static |
Creates a regular double pyramid whose base is a regular polygon.
|
static |
This is a synonym for CreateRegularTruncatedPyramid.
|
static |
Creates a regular prism whose base is a regular polygon and whose edges are either parallel or perpendicular to the XY plane.
|
static |
Creates a regular pyramid whose base is a regular polygon.
|
static |
Creates a regular truncated pyramid whose base is a regular polygon.
|
static |
Creates a rhombic dodecahedron, dual to the cuboctahedron.
This body consists of 12 rhombi (see http://en.wikipedia.org/wiki/Rhombic_dodecahedron).
|
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.
|
static |
Creates a rhombic triacontahedron, dual to the icosidodecahedron.
This body consists of 30 rhombi (see http://en.wikipedia.org/wiki/Rhombic_triacontahedron).
|
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.
|
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.
|
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).
|
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.
|
static |
Creates a triakis icosahedron, dual to the truncated dodecahedron.
This body consists of 60 isosceles triangles http://en.wikipedia.org/wiki/Triakis_icosahedron).
|
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).
|
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).
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
virtual |
|
private |
Returns how many edges converge in a given vertex.
|
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.
|
staticprivate |
Generates a list of 2D vertices constituting a regular polygon.
|
staticprivate |
Generates a list of 3D vertices constituting a regular polygon, appending it to an existing vector.
|
staticprivate |
Generates a list of 2D vertices constituting a regular polygon, with an angle shift which makes it suitable for antiprisms.
|
staticprivate |
Generates a list of 3D vertices constituting a regular polygon conveniently shifted, appending it to an existing vector.
|
virtual |
Evaluates the bounding box of this object (including possible children) in the coordinate frame of the object parent.
Implements mrpt::opengl::CRenderizable.
void mrpt::opengl::CPolyhedron::getCenter | ( | mrpt::math::TPoint3D & | center | ) | const |
Gets the center of the polyhedron.
|
inlineinherited |
Returns the object color property as a TColorf.
Definition at line 124 of file CRenderizable.h.
|
inlineinherited |
Returns the object color property as a TColor.
Definition at line 133 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 100 of file CRenderizable.h.
|
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.
|
inlineinherited |
Color components in the range [0,255].
Definition at line 104 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 98 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,255].
Definition at line 103 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 97 of file CRenderizable.h.
|
inlineinherited |
Color components in the range [0,255].
Definition at line 102 of file CRenderizable.h.
CPolyhedronPtr mrpt::opengl::CPolyhedron::getDual | ( | ) | const |
Given a polyhedron, creates its dual.
std::logic_error | Can't get the dual to this polyhedron. |
|
inline |
Gets a list with the polyhedron's edges.
Definition at line 489 of file CPolyhedron.h.
void mrpt::opengl::CPolyhedron::getEdgesLength | ( | std::vector< double > & | lengths | ) | const |
Gets a vector with each edge's length.
|
inline |
Gets a list with the polyhedron's faces.
Definition at line 495 of file CPolyhedron.h.
void mrpt::opengl::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.
|
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 544 of file CPolyhedron.h.
|
inlineinherited |
Returns the name of the object.
Definition at line 64 of file CRenderizable.h.
|
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).
|
inline |
Gets the amount of edges.
Definition at line 507 of file CPolyhedron.h.
|
inline |
Gets the amount of faces.
Definition at line 513 of file CPolyhedron.h.
|
inline |
Gets the amount of vertices.
Definition at line 501 of file CPolyhedron.h.
|
inherited |
Returns the 3D pose of the object as TPose3D.
|
inlineinherited |
Rotation relative to parent coordinate origin, in DEGREES.
Definition at line 91 of file CRenderizable.h.
References mrpt::utils::RAD2DEG().
|
inlineinherited |
Rotation relative to parent coordinate origin, in radians.
Definition at line 94 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 79 of file CRenderizable.h.
|
inlineinherited |
Rotation relative to parent coordinate origin, in DEGREES.
Definition at line 92 of file CRenderizable.h.
References 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 87 of file CRenderizable.h.
|
inlineinherited |
Translation relative to parent coordinate origin.
Definition at line 88 of file CRenderizable.h.
|
inlineinherited |
Rotation relative to parent coordinate origin, in DEGREES.
Definition at line 90 of file CRenderizable.h.
References mrpt::utils::RAD2DEG().
|
inlineinherited |
Rotation relative to parent coordinate origin, in radians.
Definition at line 93 of file CRenderizable.h.
|
inlineinherited |
Translation relative to parent coordinate origin.
Definition at line 89 of file CRenderizable.h.
|
virtual |
Reimplemented from mrpt::opengl::CRenderizableDisplayList.
|
inlineinherited |
Get the current scaling factor in one axis.
Definition at line 119 of file CRenderizable.h.
|
inlineinherited |
Get the current scaling factor in one axis.
Definition at line 120 of file CRenderizable.h.
|
inlineinherited |
Get the current scaling factor in one axis.
Definition at line 121 of file CRenderizable.h.
void mrpt::opengl::CPolyhedron::getSetOfPolygons | ( | std::vector< math::TPolygon3D > & | vec | ) | const |
Gets the polyhedron as a set of polygons.
void mrpt::opengl::CPolyhedron::getSetOfPolygonsAbsolute | ( | std::vector< math::TPolygon3D > & | vec | ) | const |
Gets the polyhedron as a set of polygons, with the pose transformation already applied.
|
inline |
Gets a list with the polyhedron's vertices.
Definition at line 483 of file CPolyhedron.h.
double mrpt::opengl::CPolyhedron::getVolume | ( | ) | const |
Gets the polyhedron volume.
Won't work properly if the polyhedron is not convex.
|
inline |
Returns true if the polygon is a completely closed object.
Definition at line 571 of file CPolyhedron.h.
|
inlineinherited |
Definition at line 70 of file CRenderizable.h.
|
inlineinherited |
|
inline |
Returns whether the polyhedron will be rendered as a wireframe object.
Definition at line 531 of file CPolyhedron.h.
void mrpt::opengl::CPolyhedron::makeConvexPolygons | ( | ) |
Recomputes polygons, if necessary, so that each one is convex.
|
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::CMesh::adjustGridToImageAR(), mrpt::opengl::CMeshFast::adjustGridToImageAR(), mrpt::opengl::CSetOfLines::appendLine(), mrpt::opengl::CSetOfLines::appendLines(), mrpt::opengl::CSetOfLines::begin(), mrpt::opengl::CSetOfLines::clear(), mrpt::opengl::CVectorField2D::clear(), mrpt::opengl::CVectorField3D::clear(), mrpt::opengl::CSetOfTexturedTriangles::clearTriangles(), mrpt::opengl::CSetOfTriangles::clearTriangles(), mrpt::opengl::COpenGLStandardObject::enable(), mrpt::opengl::CGridPlaneXY::enableAntiAliasing(), mrpt::opengl::CGridPlaneXZ::enableAntiAliasing(), mrpt::opengl::CSetOfLines::enableAntiAliasing(), mrpt::opengl::CSimpleLine::enableAntiAliasing(), mrpt::opengl::CVectorField2D::enableAntiAliasing(), mrpt::opengl::CVectorField3D::enableAntiAliasing(), mrpt::opengl::CMesh3D::enableAntiAliasing(), mrpt::opengl::CBox::enableBoxBorder(), mrpt::opengl::CVectorField3D::enableColorFromModule(), mrpt::opengl::CMesh::enableColorFromZ(), mrpt::opengl::CMeshFast::enableColorFromZ(), mrpt::opengl::COctoMapVoxels::enableCubeTransparency(), 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::CAngularObservationMesh::enableTransparency(), mrpt::opengl::CMesh::enableTransparency(), mrpt::opengl::CMesh3D::enableTransparency(), mrpt::opengl::CMeshFast::enableTransparency(), mrpt::opengl::CSetOfTriangles::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::CSetOfTexturedTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangle(), mrpt::opengl::CSetOfTriangles::insertTriangles(), mrpt::opengl::COctoMapVoxels::push_back_GridCube(), mrpt::opengl::COctoMapVoxels::push_back_Voxel(), mrpt::opengl::CSetOfLines::reserve(), mrpt::opengl::CSetOfTriangles::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::CGeneralizedCylinder::setClosed(), mrpt::opengl::CGeneralizedEllipsoidTemplate< DIM >::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::CVectorField2D::setGridLimits(), mrpt::opengl::CMesh::setGridLimits(), mrpt::opengl::CMeshFast::setGridLimits(), mrpt::opengl::COctoMapVoxels::setGridLinesColor(), mrpt::opengl::COctoMapVoxels::setGridLinesWidth(), mrpt::opengl::CCylinder::setHasBases(), mrpt::opengl::CArrow::setHeadRatio(), mrpt::opengl::CCylinder::setHeight(), mrpt::opengl::CArrow::setLargeRadius(), mrpt::opengl::CSetOfLines::setLineByIndex(), mrpt::opengl::CSimpleLine::setLineCoords(), mrpt::opengl::CVectorField2D::setLineWidth(), mrpt::opengl::CVectorField3D::setLineWidth(), setLineWidth(), mrpt::opengl::CAxis::setLineWidth(), mrpt::opengl::CEllipsoid::setLineWidth(), mrpt::opengl::CGeneralizedEllipsoidTemplate< DIM >::setLineWidth(), mrpt::opengl::CGridPlaneXY::setLineWidth(), mrpt::opengl::CGridPlaneXZ::setLineWidth(), mrpt::opengl::CSetOfLines::setLineWidth(), mrpt::opengl::CSimpleLine::setLineWidth(), mrpt::opengl::CBox::setLineWidth(), mrpt::opengl::CFrustum::setLineWidth(), mrpt::opengl::CDisk::setLoopsCount(), mrpt::opengl::CVectorField3D::setMaxSpeedForColor(), mrpt::opengl::CVectorField3D::setMotionFieldColormap(), mrpt::opengl::COpenGLStandardObject::setNormal(), mrpt::opengl::CSphere::setNumberDivsLatitude(), mrpt::opengl::CSphere::setNumberDivsLongitude(), mrpt::opengl::CGeneralizedEllipsoidTemplate< DIM >::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< DIM >::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::CText3D::setTextSpacing(), mrpt::opengl::CText3D::setTextStyle(), mrpt::opengl::CTexturedPlane::setTextureCornerCoords(), mrpt::opengl::CVectorField2D::setVectorField(), mrpt::opengl::CVectorField3D::setVectorField(), mrpt::opengl::CVectorField2D::setVectorFieldColor(), mrpt::opengl::CVectorField3D::setVectorFieldColor(), mrpt::opengl::CGeneralizedCylinder::setVisibleSections(), mrpt::opengl::COctoMapVoxels::setVisualizationMode(), mrpt::opengl::COctoMapVoxels::setVoxelAsPointsSize(), mrpt::opengl::CAngularObservationMesh::setWireframe(), setWireframe(), mrpt::opengl::CBox::setWireframe(), mrpt::opengl::CMesh::setXBounds(), mrpt::opengl::CMeshFast::setXBounds(), mrpt::opengl::CMesh::setXMax(), mrpt::opengl::CMeshFast::setXMax(), mrpt::opengl::CMesh::setXMin(), mrpt::opengl::CMeshFast::setXMin(), mrpt::opengl::CMesh::setYBounds(), mrpt::opengl::CMeshFast::setYBounds(), mrpt::opengl::CMesh::setYMax(), mrpt::opengl::CMeshFast::setYMax(), mrpt::opengl::CMesh::setYMin(), mrpt::opengl::CMeshFast::setYMin(), mrpt::opengl::COctoMapVoxels::showGridLines(), mrpt::opengl::COctoMapVoxels::showVoxels(), mrpt::opengl::COctoMapVoxels::showVoxelsAsPoints(), and mrpt::opengl::CGeneralizedEllipsoidTemplate< DIM >::thisclass_readFromStream().
|
protected |
|
inlineprotectedinherited |
Definition at line 58 of file CRenderizableDisplayList.h.
References mrpt::opengl::CRenderizable::readFromStreamRender().
|
staticprotectedinherited |
|
virtualinherited |
Render the object, regenerating the display list if needed, otherwise just calling it.
Implements mrpt::opengl::CRenderizable.
|
virtual |
|
staticinherited |
This method is safe for calling from within render() methods.
|
staticinherited |
Render a text message in the current rendering context, creating a glViewport in the way (do not call within render() methods)
CPolyhedronPtr mrpt::opengl::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.
CPolyhedronPtr mrpt::opengl::CPolyhedron::scale | ( | double | factor | ) | const |
Scales a polyhedron to a given factor.
std::logic_error | factor is not a strictly positive number. |
|
inlineinherited |
c | Changes the default object color |
Definition at line 125 of file CRenderizable.h.
References mrpt::utils::TColorf::A, mrpt::utils::TColorf::B, mrpt::utils::TColorf::G, and mrpt::utils::TColorf::R.
|
inlineinherited |
Set the color components of this object (R,G,B,Alpha, in the range 0-1)
Definition at line 131 of file CRenderizable.h.
|
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 |
Set the color components of this object (R,G,B,Alpha, in the range 0-1)
Definition at line 138 of file CRenderizable.h.
References mrpt::opengl::CRenderizable::setColor_u8().
Referenced by mrpt::opengl::CRenderizable::setColor_u8().
|
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 85 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 84 of file CRenderizableDisplayList.h.
|
inlineinherited |
Color components in the range [0,1].
Definition at line 108 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 107 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 550 of file CPolyhedron.h.
References mrpt::opengl::CRenderizableDisplayList::notifyChange().
|
inlineinherited |
Changes the location of the object, keeping untouched the orientation.
Definition at line 85 of file CRenderizable.h.
References mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
|
inlineinherited |
Changes the location of the object, keeping untouched the orientation.
Definition at line 82 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.
|
inherited |
Set the 3D pose from a mrpt::math::TPose3D object (return a ref to this)
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
|
inherited |
Set the 3D pose from a mrpt::poses::CPose3D object (return a ref to this)
|
inlineinherited |
Scale to apply to the object, in all three axes (default=1)
Definition at line 117 of file CRenderizable.h.
|
inlineinherited |
Scale to apply to the object in each axis (default=1)
Definition at line 118 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 537 of file CPolyhedron.h.
References mrpt::opengl::CRenderizableDisplayList::notifyChange().
|
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.
|
staticinherited |
Return the exact width in pixels for a given string, as will be rendered by renderTextBitmap().
|
virtual |
CPolyhedronPtr mrpt::opengl::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. |
void mrpt::opengl::CPolyhedron::updatePolygons | ( | ) | const |
Updates the mutable list of polygons used in rendering and ray tracing.
|
protected |
|
protectedinherited |
|
staticprotected |
Definition at line 35 of file CPolyhedron.h.
|
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.
|
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.
|
mutableprivateinherited |
Display list ID, for derived classes that want to use it (it's automatically deleted and freed on destruction of this base class).
Definition at line 41 of file CRenderizableDisplayList.h.
|
mutableprivateinherited |
If using display lists, this is true when the list must be updated (the object changes, it's the first rendering, etc...).
Definition at line 42 of file CRenderizableDisplayList.h.
|
protectedinherited |
Definition at line 52 of file CRenderizable.h.
|
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::CGeneralizedEllipsoidTemplate< DIM >::render_dl().
|
protectedinherited |
Definition at line 56 of file CRenderizable.h.
|
protectedinherited |
Definition at line 56 of file CRenderizable.h.
|
protectedinherited |
Scale components to apply to the object (default=1)
Definition at line 56 of file CRenderizable.h.
|
protectedinherited |
Definition at line 53 of file CRenderizable.h.
|
protectedinherited |
Is the object visible? (default=true)
Definition at line 57 of file CRenderizable.h.
|
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.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 20:12:58 UTC 2023 |