Definition of a box. More...
#include <bodies.h>
Public Member Functions  
Box ()  
Box (const shapes::Shape *shape)  
Box (const AABB &aabb)  
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...  
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...  
std::vector< double >  getDimensions () const override 
Get the length & width & height (x, y, z) of the box. More...  
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...  
bool  samplePointInside (random_numbers::RandomNumberGenerator &rng, unsigned int max_attempts, Eigen::Vector3d &result) const override 
Sample a point that is included in the body using a given random number generator. 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...  
~Box () override  
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...  
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 () 
Protected Member Functions  
void  useDimensions (const shapes::Shape *shape) override 
Depending on the shape, this function copies the relevant data to the body. More...  
Protected Attributes  
Eigen::Vector3d  center_ 
Eigen::Vector3d  corner1_ 
The translated, but not rotated min corner. More...  
Eigen::Vector3d  corner2_ 
The translated, but not rotated max corner. More...  
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::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...  

inline 

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 626 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 681 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 650 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 644 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 639 of file bodies.cpp.

overridevirtual 
Check if a point is inside the body. Surface points are included.
Implements bodies::Body.
Definition at line 572 of file bodies.cpp.

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

overridevirtual 
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 564 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 595 of file bodies.cpp.

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

protected 

protected 