Definition of a convex mesh. Convex hull is computed for a given shape::Mesh. More...
#include <bodies.h>
Classes  
struct  MeshData 
Public Member Functions  
BodyPtr  cloneAt (const Eigen::Isometry3d &pose, double padding, double scale) const override 
Get a clone of this body, but one that is located at the pose pose and has possibly different passing and scaling: padding and scaling. This function is useful to implement thread safety, when bodies need to be moved around. More...  
void  computeBoundingBox (AABB &bbox) const override 
Compute the axisaligned bounding box for the body, in its current pose. Scaling and padding are accounted for. More...  
void  computeBoundingCylinder (BoundingCylinder &cylinder) const override 
Compute the bounding cylinder for the body, in its current pose. Scaling and padding are accounted for. More...  
void  computeBoundingSphere (BoundingSphere &sphere) const override 
Compute the bounding radius for the body, in its current pose. Scaling and padding are accounted for. More...  
void  computeScaledVerticesFromPlaneProjections () 
Project the original vertex to the scaled and padded planes and average. More...  
double  computeVolume () const override 
Compute the volume of the body. This method includes changes induced by scaling and padding. More...  
bool  containsPoint (const Eigen::Vector3d &p, bool verbose=false) const override 
Check if a point is inside the body. Surface points are included. More...  
ConvexMesh ()  
ConvexMesh (const shapes::Shape *shape)  
void  correctVertexOrderFromPlanes () 
std::vector< double >  getDimensions () const override 
Returns an empty vector. More...  
const EigenSTL::vector_Vector4d &  getPlanes () const 
Get the planes that define the convex shape. More...  
std::vector< double >  getScaledDimensions () const override 
Returns an empty vector. More...  
const EigenSTL::vector_Vector3d &  getScaledVertices () const 
const std::vector< unsigned int > &  getTriangles () const 
const EigenSTL::vector_Vector3d &  getVertices () const 
bool  intersectsRay (const Eigen::Vector3d &origin, const Eigen::Vector3d &dir, EigenSTL::vector_Vector3d *intersections=nullptr, unsigned int count=0) const override 
Check if a ray intersects the body, and find the set of intersections, in order, along the ray. A maximum number of intersections can be specified as well. If that number is 0, all intersections are returned. Passing dir as a unit vector will result in faster computation. More...  
void  updateInternalData () override 
This function is called every time a change to the body is made, so that intermediate values stored for efficiency reasons are kept up to date. More...  
~ConvexMesh () override=default  
Public Member Functions inherited from bodies::Body  
Body ()  
BodyPtr  cloneAt (const Eigen::Isometry3d &pose) const 
Get a clone of this body, but one that is located at the pose pose. More...  
bool  containsPoint (double x, double y, double z, bool verbose=false) const 
Check if a point is inside the body. More...  
double  getPadding () const 
Retrieve the current padding. More...  
const Eigen::Isometry3d &  getPose () const 
Retrieve the pose of the body. More...  
double  getScale () const 
Retrieve the current scale. More...  
shapes::ShapeType  getType () const 
Get the type of shape this body represents. More...  
virtual bool  samplePointInside (random_numbers::RandomNumberGenerator &rng, unsigned int max_attempts, Eigen::Vector3d &result) const 
Sample a point that is included in the body using a given random number generator. More...  
void  setDimensions (const shapes::Shape *shape) 
Set the dimensions of the body (from corresponding shape) More...  
void  setDimensionsDirty (const shapes::Shape *shape) 
Set the dimensions of the body (from corresponding shape). More...  
void  setPadding (double padd) 
If constant padding should be added to the body, this method sets the padding. Default is 0.0. More...  
void  setPaddingDirty (double padd) 
If the dimension of the body should be padded, this method sets the pading. More...  
void  setPose (const Eigen::Isometry3d &pose) 
Set the pose of the body. Default is identity. More...  
void  setPoseDirty (const Eigen::Isometry3d &pose) 
Set the pose of the body. More...  
void  setScale (double scale) 
If the dimension of the body should be scaled, this method sets the scale. Default is 1.0. More...  
void  setScaleDirty (double scale) 
If the dimension of the body should be scaled, this method sets the scale. More...  
virtual  ~Body ()=default 
Protected Member Functions  
unsigned int  countVerticesBehindPlane (const Eigen::Vector4f &planeNormal) const 
(Used mainly for debugging) Count the number of vertices behind a plane More...  
bool  isPointInsidePlanes (const Eigen::Vector3d &point) const 
Check if the point is inside all halfspaces this mesh consists of (mesh_data_>planes_). More...  
void  useDimensions (const shapes::Shape *shape) override 
Depending on the shape, this function copies the relevant data to the body. More...  
Protected Attributes  
Box  bounding_box_ 
Eigen::Vector3d  center_ 
Eigen::Isometry3d  i_pose_ 
std::shared_ptr< MeshData >  mesh_data_ 
double  radiusB_ 
double  radiusBSqr_ 
EigenSTL::vector_Vector3d *  scaled_vertices_ 
Protected Attributes inherited from bodies::Body  
double  padding_ 
The scale that was set for this body. More...  
Eigen::Isometry3d  pose_ 
The location of the body (position and orientation) More...  
double  scale_ 
The scale that was set for this body. More...  
shapes::ShapeType  type_ 
The type of shape this body was constructed from. More...  
Private Attributes  
std::unique_ptr< EigenSTL::vector_Vector3d >  scaled_vertices_storage_ 
Definition of a convex mesh. Convex hull is computed for a given shape::Mesh.

inline 

overridedefault 

overridevirtual 
Get a clone of this body, but one that is located at the pose pose and has possibly different passing and scaling: padding and scaling. This function is useful to implement thread safety, when bodies need to be moved around.
Implements bodies::Body.
Definition at line 1128 of file bodies.cpp.

overridevirtual 
Compute the axisaligned bounding box for the body, in its current pose. Scaling and padding are accounted for.
Implements bodies::Body.
Definition at line 1157 of file bodies.cpp.

overridevirtual 
Compute the bounding cylinder for the body, in its current pose. Scaling and padding are accounted for.
Implements bodies::Body.
Definition at line 1146 of file bodies.cpp.

overridevirtual 
Compute the bounding radius for the body, in its current pose. Scaling and padding are accounted for.
Implements bodies::Body.
Definition at line 1140 of file bodies.cpp.
void bodies::ConvexMesh::computeScaledVerticesFromPlaneProjections  (  ) 
Project the original vertex to the scaled and padded planes and average.
Definition at line 1002 of file bodies.cpp.

overridevirtual 
Compute the volume of the body. This method includes changes induced by scaling and padding.
Implements bodies::Body.
Definition at line 1198 of file bodies.cpp.

overridevirtual 
Check if a point is inside the body. Surface points are included.
Implements bodies::Body.
Definition at line 775 of file bodies.cpp.
void bodies::ConvexMesh::correctVertexOrderFromPlanes  (  ) 
Definition at line 789 of file bodies.cpp.

protected 
(Used mainly for debugging) Count the number of vertices behind a plane
Definition at line 1184 of file bodies.cpp.

overridevirtual 
const EigenSTL::vector_Vector4d & bodies::ConvexMesh::getPlanes  (  )  const 
Get the planes that define the convex shape.
Definition at line 1122 of file bodies.cpp.

overridevirtual 
const EigenSTL::vector_Vector3d & bodies::ConvexMesh::getScaledVertices  (  )  const 
Definition at line 1117 of file bodies.cpp.
const std::vector< unsigned int > & bodies::ConvexMesh::getTriangles  (  )  const 
Definition at line 1105 of file bodies.cpp.
const EigenSTL::vector_Vector3d & bodies::ConvexMesh::getVertices  (  )  const 
Definition at line 1111 of file bodies.cpp.

overridevirtual 
Check if a ray intersects the body, and find the set of intersections, in order, along the ray. A maximum number of intersections can be specified as well. If that number is 0, all intersections are returned. Passing dir as a unit vector will result in faster computation.
Implements bodies::Body.
Definition at line 1213 of file bodies.cpp.

protected 
Check if the point is inside all halfspaces this mesh consists of (mesh_data_>planes_).
Definition at line 1164 of file bodies.cpp.

overridevirtual 
This function is called every time a change to the body is made, so that intermediate values stored for efficiency reasons are kept up to date.
Implements bodies::Body.
Definition at line 1066 of file bodies.cpp.

overrideprotectedvirtual 
Depending on the shape, this function copies the relevant data to the body.
Implements bodies::Body.
Definition at line 812 of file bodies.cpp.

protected 

protected 

private 