bodies::Sphere Class Reference

Definition of a sphere. More...

`#include <bodies.h>`

Inheritance diagram for bodies::Sphere:
[legend]

## Public Member Functions

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 axis-aligned 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 radius of the sphere. 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...

Sphere ()

Sphere (const shapes::Shape *shape)

Sphere (const BoundingSphere &sphere)

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

~Sphere () 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...

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

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_

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

Definition at line 285 of file bodies.h.

## ◆ Sphere() [1/3]

 bodies::Sphere::Sphere ( )
inline

Definition at line 288 of file bodies.h.

## ◆ Sphere() [2/3]

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

Definition at line 293 of file bodies.h.

## ◆ Sphere() [3/3]

 bodies::Sphere::Sphere ( const BoundingSphere & sphere )
inlineexplicit

Definition at line 299 of file bodies.h.

## ◆ ~Sphere()

 bodies::Sphere::~Sphere ( )
inlineoverride

Definition at line 310 of file bodies.h.

## ◆ cloneAt()

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

## ◆ computeBoundingBox()

 void bodies::Sphere::computeBoundingBox ( AABB & bbox ) const
overridevirtual

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 239 of file bodies.cpp.

## ◆ computeBoundingCylinder()

 void bodies::Sphere::computeBoundingCylinder ( BoundingCylinder & cylinder ) const
overridevirtual

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

Implements bodies::Body.

Definition at line 232 of file bodies.cpp.

## ◆ computeBoundingSphere()

 void bodies::Sphere::computeBoundingSphere ( BoundingSphere & sphere ) const
overridevirtual

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

Implements bodies::Body.

Definition at line 226 of file bodies.cpp.

## ◆ computeVolume()

 double bodies::Sphere::computeVolume ( ) const
overridevirtual

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

Implements bodies::Body.

Definition at line 221 of file bodies.cpp.

## ◆ containsPoint()

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

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

Implements bodies::Body.

Definition at line 184 of file bodies.cpp.

## ◆ getDimensions()

 std::vector< double > bodies::Sphere::getDimensions ( ) const
overridevirtual

Get the radius of the sphere.

Implements bodies::Body.

Definition at line 194 of file bodies.cpp.

## ◆ intersectsRay()

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

## ◆ samplePointInside()

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

## ◆ updateInternalData()

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

## ◆ useDimensions()

 void bodies::Sphere::useDimensions ( const shapes::Shape * shape )
overrideprotectedvirtual

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

Implements bodies::Body.

Definition at line 189 of file bodies.cpp.

## ◆ center_

 Eigen::Vector3d bodies::Sphere::center_
protected

Definition at line 338 of file bodies.h.

protected

Definition at line 340 of file bodies.h.

protected

Definition at line 335 of file bodies.h.