Definition of a convex mesh. Convex hull is computed for a given shape::Mesh. More...
#include <bodies.h>
Classes | |
struct | MeshData |
Public Member Functions | |
virtual BodyPtr | cloneAt (const Eigen::Affine3d &pose, double padding, double scale) const |
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... | |
virtual void | computeBoundingCylinder (BoundingCylinder &cylinder) const |
Compute the bounding cylinder for the body, in its current pose. Scaling and padding are accounted for. More... | |
virtual void | computeBoundingSphere (BoundingSphere &sphere) const |
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... | |
virtual double | computeVolume () const |
Compute the volume of the body. This method includes changes induced by scaling and padding. More... | |
virtual bool | containsPoint (const Eigen::Vector3d &p, bool verbose=false) const |
Check if a point is inside the body. More... | |
ConvexMesh () | |
ConvexMesh (const shapes::Shape *shape) | |
void | correctVertexOrderFromPlanes () |
virtual std::vector< double > | getDimensions () const |
Returns an empty vector. More... | |
const EigenSTL::vector_Vector3d & | getScaledVertices () const |
const std::vector< unsigned int > & | getTriangles () const |
const EigenSTL::vector_Vector3d & | getVertices () const |
virtual bool | intersectsRay (const Eigen::Vector3d &origin, const Eigen::Vector3d &dir, EigenSTL::vector_Vector3d *intersections=NULL, unsigned int count=0) const |
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. More... | |
virtual | ~ConvexMesh () |
Public Member Functions inherited from bodies::Body | |
Body () | |
BodyPtr | cloneAt (const Eigen::Affine3d &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::Affine3d & | 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) |
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 | setPadding (double padd) |
If constant padding should be added to the body, this method sets the padding. Default is 0.0. More... | |
void | setPose (const Eigen::Affine3d &pose) |
Set the pose of the body. Default is identity. More... | |
void | setScale (double scale) |
If the dimension of the body should be scaled, this method sets the scale. Default is 1.0. More... | |
virtual | ~Body () |
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 a point is inside a set of planes that make up a convex mesh. More... | |
virtual void | updateInternalData () |
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... | |
virtual void | useDimensions (const shapes::Shape *shape) |
Depending on the shape, this function copies the relevant data to the body. More... | |
Protected Attributes | |
Box | bounding_box_ |
Eigen::Vector3d | center_ |
Eigen::Affine3d | 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::Affine3d | 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 |
|
virtual |
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 999 of file bodies.cpp.
|
virtual |
Compute the bounding cylinder for the body, in its current pose. Scaling and padding are accounted for.
Implements bodies::Body.
Definition at line 1017 of file bodies.cpp.
|
virtual |
Compute the bounding radius for the body, in its current pose. Scaling and padding are accounted for.
Implements bodies::Body.
Definition at line 1011 of file bodies.cpp.
void bodies::ConvexMesh::computeScaledVerticesFromPlaneProjections | ( | ) |
Project the original vertex to the scaled and padded planes and average.
Definition at line 881 of file bodies.cpp.
|
virtual |
Compute the volume of the body. This method includes changes induced by scaling and padding.
Implements bodies::Body.
Definition at line 1055 of file bodies.cpp.
|
virtual |
Check if a point is inside the body.
Implements bodies::Body.
Definition at line 664 of file bodies.cpp.
void bodies::ConvexMesh::correctVertexOrderFromPlanes | ( | ) |
Definition at line 678 of file bodies.cpp.
|
protected |
(Used mainly for debugging) Count the number of vertices behind a plane
Definition at line 1041 of file bodies.cpp.
|
virtual |
const EigenSTL::vector_Vector3d & bodies::ConvexMesh::getScaledVertices | ( | ) | const |
Definition at line 994 of file bodies.cpp.
const std::vector< unsigned int > & bodies::ConvexMesh::getTriangles | ( | ) | const |
Definition at line 982 of file bodies.cpp.
const EigenSTL::vector_Vector3d & bodies::ConvexMesh::getVertices | ( | ) | const |
Definition at line 988 of file bodies.cpp.
|
virtual |
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.
Implements bodies::Body.
Definition at line 1070 of file bodies.cpp.
|
protected |
Check if a point is inside a set of planes that make up a convex mesh.
Definition at line 1027 of file bodies.cpp.
|
protectedvirtual |
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 945 of file bodies.cpp.
|
protectedvirtual |
Depending on the shape, this function copies the relevant data to the body.
Implements bodies::Body.
Definition at line 701 of file bodies.cpp.
|
protected |
|
protected |
|
private |