bodies::Box Class Reference

Definition of a box. More...

`#include <bodies.h>`

Inheritance diagram for bodies::Box:
[legend]

## Public Member Functions

Box ()

Box (const shapes::Shape *shape)

virtual BodyPtr cloneAt (const Eigen::Isometry3d &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 computeBoundingBox (AABB &bbox) const
Compute the axis-aligned bounding box for the body, in its current pose. Scaling and padding are accounted for. 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. Surface points are included. 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::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...

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...

If constant padding should be added to the body, this method sets the padding. Default is 0.0. More...

void setPose (const Eigen::Isometry3d &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 width2_

double width_

Protected Attributes inherited from bodies::Body
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...

## Detailed Description

Definition of a box.

Definition at line 343 of file bodies.h.

## ◆ Box() [1/2]

 bodies::Box::Box ( )
inline

Definition at line 346 of file bodies.h.

## ◆ Box() [2/2]

 bodies::Box::Box ( const shapes::Shape * shape )
inline

Definition at line 351 of file bodies.h.

## ◆ ~Box()

 virtual bodies::Box::~Box ( )
inlinevirtual

Definition at line 357 of file bodies.h.

## ◆ cloneAt()

 std::shared_ptr< bodies::Body > bodies::Box::cloneAt ( const Eigen::Isometry3d & pose, double padding, double scaling ) const
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 559 of file bodies.cpp.

## ◆ computeBoundingBox()

 void bodies::Box::computeBoundingBox ( AABB & bbox ) const
virtual

Compute the axis-aligned bounding box for the body, in its current pose. Scaling and padding are accounted for.

Implements bodies::Body.

Definition at line 614 of file bodies.cpp.

## ◆ computeBoundingCylinder()

 void bodies::Box::computeBoundingCylinder ( BoundingCylinder & cylinder ) const
virtual

Compute the bounding cylinder for the body, in its current pose. Scaling and padding are accounted for.

Implements bodies::Body.

Definition at line 583 of file bodies.cpp.

## ◆ computeBoundingSphere()

 void bodies::Box::computeBoundingSphere ( BoundingSphere & sphere ) const
virtual

Compute the bounding radius for the body, in its current pose. Scaling and padding are accounted for.

Implements bodies::Body.

Definition at line 577 of file bodies.cpp.

## ◆ computeVolume()

 double bodies::Box::computeVolume ( ) const
virtual

Compute the volume of the body. This method includes changes induced by scaling and padding.

Implements bodies::Body.

Definition at line 572 of file bodies.cpp.

## ◆ containsPoint()

 bool bodies::Box::containsPoint ( const Eigen::Vector3d & p, bool verbose = `false` ) const
virtual

Check if a point is inside the body. Surface points are included.

Implements bodies::Body.

Definition at line 505 of file bodies.cpp.

## ◆ getDimensions()

 std::vector< double > bodies::Box::getDimensions ( ) const
virtual

Get the length & width & height (x, y, z) of the box.

Implements bodies::Body.

Definition at line 528 of file bodies.cpp.

## ◆ intersectsRay()

 bool bodies::Box::intersectsRay ( const Eigen::Vector3d & origin, const Eigen::Vector3d & dir, EigenSTL::vector_Vector3d * intersections = `NULL`, unsigned int count = `0` ) const
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 621 of file bodies.cpp.

## ◆ samplePointInside()

 bool bodies::Box::samplePointInside ( random_numbers::RandomNumberGenerator & rng, unsigned int max_attempts, Eigen::Vector3d & result )
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 497 of file bodies.cpp.

## ◆ updateInternalData()

 void bodies::Box::updateInternalData ( )
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 537 of file bodies.cpp.

## ◆ useDimensions()

 void bodies::Box::useDimensions ( const shapes::Shape * shape )
protectedvirtual

Depending on the shape, this function copies the relevant data to the body.

Implements bodies::Body.

Definition at line 520 of file bodies.cpp.

## ◆ center_

 Eigen::Vector3d bodies::Box::center_
protected

Definition at line 386 of file bodies.h.

## ◆ corner1_

 Eigen::Vector3d bodies::Box::corner1_
protected

Definition at line 391 of file bodies.h.

## ◆ corner2_

 Eigen::Vector3d bodies::Box::corner2_
protected

Definition at line 392 of file bodies.h.

## ◆ height2_

 double bodies::Box::height2_
protected

Definition at line 396 of file bodies.h.

## ◆ height_

 double bodies::Box::height_
protected

Definition at line 383 of file bodies.h.

## ◆ length2_

 double bodies::Box::length2_
protected

Definition at line 394 of file bodies.h.

## ◆ length_

 double bodies::Box::length_
protected

Definition at line 381 of file bodies.h.

## ◆ normalH_

 Eigen::Vector3d bodies::Box::normalH_
protected

Definition at line 389 of file bodies.h.

## ◆ normalL_

 Eigen::Vector3d bodies::Box::normalL_
protected

Definition at line 387 of file bodies.h.

## ◆ normalW_

 Eigen::Vector3d bodies::Box::normalW_
protected

Definition at line 388 of file bodies.h.

protected

Definition at line 398 of file bodies.h.

protected

Definition at line 397 of file bodies.h.

## ◆ width2_

 double bodies::Box::width2_
protected

Definition at line 395 of file bodies.h.

## ◆ width_

 double bodies::Box::width_
protected

Definition at line 382 of file bodies.h.

The documentation for this class was generated from the following files:

geometric_shapes
Author(s): Ioan Sucan , Gil Jones
autogenerated on Wed Nov 20 2019 03:16:42