Definition of a box. More...
#include <bodies.h>
Public Member Functions  
Box ()  
Box (const shapes::Shape *shape)  
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...  
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...  
virtual std::vector< double >  getDimensions () const 
Get the length & width & height (x, y, z) of the box. More...  
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 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...  
virtual  ~Box () 
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...  
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  
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  
Eigen::Vector3d  center_ 
Eigen::Vector3d  corner1_ 
Eigen::Vector3d  corner2_ 
double  height2_ 
double  height_ 
double  length2_ 
double  length_ 
Eigen::Vector3d  normalH_ 
Eigen::Vector3d  normalL_ 
Eigen::Vector3d  normalW_ 
double  radius2_ 
double  radiusB_ 
double  width2_ 
double  width_ 
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...  

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 533 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 557 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 551 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 546 of file bodies.cpp.

virtual 
Check if a point is inside the body.
Implements bodies::Body.
Definition at line 476 of file bodies.cpp.

virtual 
Get the length & width & height (x, y, z) of the box.
Implements bodies::Body.
Definition at line 502 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 588 of file bodies.cpp.

virtual 
Sample a point that is included in the body using a given random number generator.
Sometimes multiple attempts need to be generated. The function terminates with failure (returns false) after max_attempts attempts. If the call is successful (returns true) the point is written to result
Reimplemented from bodies::Body.
Definition at line 468 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 511 of file bodies.cpp.

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