Definition of a cylinder. More...
#include <bodies.h>
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...  
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...  
Cylinder ()  
Cylinder (const shapes::Shape *shape)  
virtual std::vector< double >  getDimensions () const 
Get the radius & length of the cylinder. 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  ~Cylinder () 
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_ 
double  d1_ 
double  d2_ 
double  length2_ 
double  length_ 
Eigen::Vector3d  normalB1_ 
Eigen::Vector3d  normalB2_ 
Eigen::Vector3d  normalH_ 
double  radius2_ 
double  radius_ 
double  radiusB_ 
double  radiusBSqr_ 
double  radiusU_ 
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 333 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 356 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 350 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 345 of file bodies.cpp.

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

virtual 
Get the radius & length of the cylinder.
Implements bodies::Body.
Definition at line 290 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 363 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 317 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 298 of file bodies.cpp.

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