coal  3.0.1
Coal, The Collision Detection Library. Previously known as HPP-FCL, fork of FCL -- The Flexible Collision Library
Geometric shapes

Classes

class  coal::TriangleP
 Triangle stores the points instead of only indices of points. More...
 
class  coal::Box
 Center at zero point, axis aligned box. More...
 
class  coal::Sphere
 Center at zero point sphere. More...
 
class  coal::Ellipsoid
 Ellipsoid centered at point zero. More...
 
class  coal::Capsule
 Capsule It is \( { x~\in~\mathbb{R}^3, d(x, AB) \leq radius } \) where \( d(x, AB) \) is the distance between the point x and the capsule segment AB, with \( A = (0,0,-halfLength), B = (0,0,halfLength) \). More...
 
class  coal::Cone
 Cone The base of the cone is at \( z = - halfLength \) and the top is at \( z = halfLength \). More...
 
class  coal::Cylinder
 Cylinder along Z axis. The cylinder is defined at its centroid. More...
 
class  coal::ConvexBase
 Base for convex polytope. More...
 
struct  coal::ConvexBase::Neighbors
 
struct  coal::ConvexBase::SupportWarmStartPolytope
 The support warm start polytope contains certain points of this which are support points in specific directions of space. This struct is used to warm start the support function computation for large meshes (num_points > 32). More...
 
class  coal::Convex< PolygonT >
 Convex polytope. More...
 
class  coal::Halfspace
 Half Space: this is equivalent to the Plane in ODE. A Half space has a priviledged direction: the direction of the normal. The separation plane is defined as n * x = d; Points in the negative side of the separation plane (i.e. {x | n * x < d}) are inside the half space and points in the positive side of the separation plane (i.e. {x | n * x > d}) are outside the half space. Note: prefer using a Halfspace instead of a Plane if possible, it has better behavior w.r.t. collision detection algorithms. More...
 
class  coal::Plane
 Infinite plane. A plane can be viewed as two half spaces; it has no priviledged direction. Note: prefer using a Halfspace instead of a Plane if possible, it has better behavior w.r.t. collision detection algorithms. More...
 

Functions

 coal::ShapeBase::ShapeBase ()
 
 coal::ShapeBase::ShapeBase (const ShapeBase &other)
   More...
 
ShapeBasecoal::ShapeBase::operator= (const ShapeBase &other)=default
 
virtual coal::ShapeBase::~ShapeBase ()
 
OBJECT_TYPE coal::ShapeBase::getObjectType () const
 Get object type: a geometric shape. More...
 
void coal::ShapeBase::setSweptSphereRadius (Scalar radius)
 Set radius of sphere swept around the shape. Must be >= 0. More...
 
Scalar coal::ShapeBase::getSweptSphereRadius () const
 Get radius of sphere swept around the shape. This radius is always >= 0. More...
 
 coal::TriangleP::TriangleP ()
 
 coal::TriangleP::TriangleP (const Vec3s &a_, const Vec3s &b_, const Vec3s &c_)
 
 coal::TriangleP::TriangleP (const TriangleP &other)
 
virtual TrianglePcoal::TriangleP::clone () const
 Clone *this into a new TriangleP. More...
 
void coal::TriangleP::computeLocalAABB ()
 virtual function of compute AABB in local coordinate More...
 
NODE_TYPE coal::TriangleP::getNodeType () const
 get the node type More...
 
 coal::Box::Box (Scalar x, Scalar y, Scalar z)
 
 coal::Box::Box (const Vec3s &side_)
 
 coal::Box::Box (const Box &other)
 
Boxcoal::Box::operator= (const Box &other)
 
virtual Boxcoal::Box::clone () const
 Clone *this into a new Box. More...
 
 coal::Box::Box ()
 Default constructor. More...
 
void coal::Box::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Box::getNodeType () const
 Get node type: a box. More...
 
Scalar coal::Box::computeVolume () const
 compute the volume More...
 
Matrix3s coal::Box::computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
Scalar coal::Box::minInflationValue () const
 
std::pair< Box, Transform3scoal::Box::inflated (const Scalar value) const
 Inflate the box by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
 coal::Sphere::Sphere ()
 Default constructor. More...
 
 coal::Sphere::Sphere (Scalar radius_)
 
 coal::Sphere::Sphere (const Sphere &other)
 
virtual Spherecoal::Sphere::clone () const
 Clone *this into a new Sphere. More...
 
void coal::Sphere::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Sphere::getNodeType () const
 Get node type: a sphere. More...
 
Matrix3s coal::Sphere::computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
Scalar coal::Sphere::computeVolume () const
 compute the volume More...
 
Scalar coal::Sphere::minInflationValue () const
 
std::pair< Sphere, Transform3scoal::Sphere::inflated (const Scalar value) const
 Inflate the sphere by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
 coal::Ellipsoid::Ellipsoid ()
 Default constructor. More...
 
 coal::Ellipsoid::Ellipsoid (Scalar rx, Scalar ry, Scalar rz)
 
 coal::Ellipsoid::Ellipsoid (const Vec3s &radii)
 
 coal::Ellipsoid::Ellipsoid (const Ellipsoid &other)
 
virtual Ellipsoidcoal::Ellipsoid::clone () const
 Clone *this into a new Ellipsoid. More...
 
void coal::Ellipsoid::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Ellipsoid::getNodeType () const
 Get node type: an ellipsoid. More...
 
Matrix3s coal::Ellipsoid::computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
Scalar coal::Ellipsoid::computeVolume () const
 compute the volume More...
 
Scalar coal::Ellipsoid::minInflationValue () const
 
std::pair< Ellipsoid, Transform3scoal::Ellipsoid::inflated (const Scalar value) const
 Inflate the ellipsoid by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
 coal::Capsule::Capsule ()
 Default constructor. More...
 
 coal::Capsule::Capsule (Scalar radius_, Scalar lz_)
 
 coal::Capsule::Capsule (const Capsule &other)
 
virtual Capsulecoal::Capsule::clone () const
 Clone *this into a new Capsule. More...
 
void coal::Capsule::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Capsule::getNodeType () const
 Get node type: a capsule. More...
 
Scalar coal::Capsule::computeVolume () const
 compute the volume More...
 
Matrix3s coal::Capsule::computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
Scalar coal::Capsule::minInflationValue () const
 
std::pair< Capsule, Transform3scoal::Capsule::inflated (const Scalar value) const
 Inflate the capsule by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
 coal::Cone::Cone ()
 Default constructor. More...
 
 coal::Cone::Cone (Scalar radius_, Scalar lz_)
 
 coal::Cone::Cone (const Cone &other)
 
virtual Conecoal::Cone::clone () const
 Clone *this into a new Cone. More...
 
void coal::Cone::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Cone::getNodeType () const
 Get node type: a cone. More...
 
Scalar coal::Cone::computeVolume () const
 compute the volume More...
 
Matrix3s coal::Cone::computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
Vec3s coal::Cone::computeCOM () const
 compute center of mass More...
 
Scalar coal::Cone::minInflationValue () const
 
std::pair< Cone, Transform3scoal::Cone::inflated (const Scalar value) const
 Inflate the cone by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
 coal::Cylinder::Cylinder ()
 Default constructor. More...
 
 coal::Cylinder::Cylinder (Scalar radius_, Scalar lz_)
 
 coal::Cylinder::Cylinder (const Cylinder &other)
 
Cylindercoal::Cylinder::operator= (const Cylinder &other)
 
virtual Cylindercoal::Cylinder::clone () const
 Clone *this into a new Cylinder. More...
 
void coal::Cylinder::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Cylinder::getNodeType () const
 Get node type: a cylinder. More...
 
Scalar coal::Cylinder::computeVolume () const
 compute the volume More...
 
Matrix3s coal::Cylinder::computeMomentofInertia () const
 compute the inertia matrix, related to the origin More...
 
Scalar coal::Cylinder::minInflationValue () const
 
std::pair< Cylinder, Transform3scoal::Cylinder::inflated (const Scalar value) const
 Inflate the cylinder by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
static ConvexBasecoal::ConvexBase::convexHull (std::shared_ptr< std::vector< Vec3s >> &points, unsigned int num_points, bool keepTriangles, const char *qhullCommand=NULL)
 Build a convex hull based on Qhull library and store the vertices and optionally the triangles. More...
 
static ConvexBasecoal::ConvexBase::convexHull (const Vec3s *points, unsigned int num_points, bool keepTriangles, const char *qhullCommand=NULL)
 
virtual coal::ConvexBase::~ConvexBase ()
 
virtual ConvexBasecoal::ConvexBase::clone () const
 Clone (deep copy). This method is consistent with BVHModel clone method. The copy constructor is called, which duplicates the data. More...
 
void coal::ConvexBase::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::ConvexBase::getNodeType () const
 Get node type: a convex polytope. More...
 
unsigned char const & coal::ConvexBase::Neighbors::count () const
 
unsigned int & coal::ConvexBase::Neighbors::operator[] (int i)
 
unsigned int const & coal::ConvexBase::Neighbors::operator[] (int i) const
 
bool coal::ConvexBase::Neighbors::operator== (const Neighbors &other) const
 
bool coal::ConvexBase::Neighbors::operator!= (const Neighbors &other) const
 
 coal::ConvexBase::ConvexBase ()
 Construct an uninitialized convex object Initialization is done with ConvexBase::initialize. More...
 
void coal::ConvexBase::initialize (std::shared_ptr< std::vector< Vec3s >> points_, unsigned int num_points_)
 Initialize the points of the convex shape This also initializes the ConvexBase::center. More...
 
void coal::ConvexBase::set (std::shared_ptr< std::vector< Vec3s >> points_, unsigned int num_points_)
 Set the points of the convex shape. More...
 
 coal::ConvexBase::ConvexBase (const ConvexBase &other)
 Copy constructor Only the list of neighbors is copied. More...
 
void coal::ConvexBase::buildSupportWarmStart ()
 Build the support points warm starts. More...
 
 coal::Halfspace::Halfspace (const Vec3s &n_, Scalar d_)
 Construct a half space with normal direction and offset. More...
 
 coal::Halfspace::Halfspace (Scalar a, Scalar b, Scalar c, Scalar d_)
 Construct a plane with normal direction and offset. More...
 
 coal::Halfspace::Halfspace ()
 
 coal::Halfspace::Halfspace (const Halfspace &other)
 
Halfspacecoal::Halfspace::operator= (const Halfspace &other)
 operator = More...
 
virtual Halfspacecoal::Halfspace::clone () const
 Clone *this into a new Halfspace. More...
 
Scalar coal::Halfspace::signedDistance (const Vec3s &p) const
 
Scalar coal::Halfspace::distance (const Vec3s &p) const
 
void coal::Halfspace::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Halfspace::getNodeType () const
 Get node type: a half space. More...
 
Scalar coal::Halfspace::minInflationValue () const
 
std::pair< Halfspace, Transform3scoal::Halfspace::inflated (const Scalar value) const
 Inflate the halfspace by an amount given by value. This value can be positive or negative but must always >= minInflationValue(). More...
 
void coal::Halfspace::unitNormalTest ()
 Turn non-unit normal into unit. More...
 
 coal::Plane::Plane (const Vec3s &n_, Scalar d_)
 Construct a plane with normal direction and offset. More...
 
 coal::Plane::Plane (Scalar a, Scalar b, Scalar c, Scalar d_)
 Construct a plane with normal direction and offset. More...
 
 coal::Plane::Plane ()
 
 coal::Plane::Plane (const Plane &other)
 
Planecoal::Plane::operator= (const Plane &other)
 operator = More...
 
virtual Planecoal::Plane::clone () const
 Clone *this into a new Plane. More...
 
Scalar coal::Plane::signedDistance (const Vec3s &p) const
 
Scalar coal::Plane::distance (const Vec3s &p) const
 
void coal::Plane::computeLocalAABB ()
 Compute AABB. More...
 
NODE_TYPE coal::Plane::getNodeType () const
 Get node type: a plane. More...
 
void coal::Plane::unitNormalTest ()
 Turn non-unit normal into unit. More...
 

Variables

Scalar coal::ShapeBase::m_swept_sphere_radius {0}
 Radius of the sphere swept around the shape. Default value is 0. Note: this property differs from inflated method of certain derived classes (e.g. Box, Sphere, Ellipsoid, Capsule, Cone, Cylinder) in the sense that inflated returns a new shape which can be inflated but also deflated. Also, an inflated shape is not rounded. It simply has a different size. Sweeping a shape with a sphere is a different operation (a Minkowski sum), which rounds the sharp corners of a shape. The swept sphere radius is a property of the shape itself and can be manually updated between collision checks. More...
 
Vec3s coal::TriangleP::a
 
Vec3s coal::TriangleP::b
 
Vec3s coal::TriangleP::c
 
Vec3s coal::Box::halfSide
 box side half-length More...
 
Scalar coal::Sphere::radius
 Radius of the sphere. More...
 
Vec3s coal::Ellipsoid::radii
 Radii of the Ellipsoid (such that on boundary: x^2/rx^2 + y^2/ry^2. More...
 
Scalar coal::Capsule::radius
 Radius of capsule. More...
 
Scalar coal::Capsule::halfLength
 Half Length along z axis. More...
 
Scalar coal::Cone::radius
 Radius of the cone. More...
 
Scalar coal::Cone::halfLength
 Half Length along z axis. More...
 
Scalar coal::Cylinder::radius
 Radius of the cylinder. More...
 
Scalar coal::Cylinder::halfLength
 Half Length along z axis. More...
 
unsigned char coal::ConvexBase::Neighbors::count_
 
unsigned int * coal::ConvexBase::Neighbors::n_
 
static constexpr size_t coal::ConvexBase::num_vertices_large_convex_threshold = 32
 Above this threshold, the convex polytope is considered large. This influcences the way the support function is computed. More...
 
std::shared_ptr< std::vector< Vec3s > > coal::ConvexBase::points
 An array of the points of the polygon. More...
 
unsigned int coal::ConvexBase::num_points
 
std::shared_ptr< std::vector< Vec3s > > coal::ConvexBase::normals
 An array of the normals of the polygon. More...
 
std::shared_ptr< std::vector< Scalar > > coal::ConvexBase::offsets
 An array of the offsets to the normals of the polygon. Note: there are as many offsets as normals. More...
 
unsigned int coal::ConvexBase::num_normals_and_offsets
 
std::shared_ptr< std::vector< Neighbors > > coal::ConvexBase::neighbors
 Neighbors of each vertex. It is an array of size num_points. For each vertex, it contains the number of neighbors and a list of indices pointing to them. More...
 
Vec3s coal::ConvexBase::center
 center of the convex polytope, this is used for collision: center is guaranteed in the internal of the polytope (as it is convex) More...
 
std::vector< Vec3scoal::ConvexBase::SupportWarmStartPolytope::points
 Array of support points to warm start the support function computation. More...
 
std::vector< int > coal::ConvexBase::SupportWarmStartPolytope::indices
 Indices of the support points warm starts. These are the indices of the real convex, not the indices of points in the warm start polytope. More...
 
static constexpr size_t coal::ConvexBase::num_support_warm_starts = 14
 Number of support warm starts. More...
 
SupportWarmStartPolytope coal::ConvexBase::support_warm_starts
 Support warm start polytopes. More...
 
std::shared_ptr< std::vector< unsigned int > > coal::ConvexBase::nneighbors_
 Array of indices of the neighbors of each vertex. Since we don't know a priori the number of neighbors of each vertex, we store the indices of the neighbors in a single array. The neighbors attribute, an array of Neighbors, is used to point each vertex to the right indices in the nneighbors_ array. More...
 
Vec3s coal::Halfspace::n
 Plane normal. More...
 
Scalar coal::Halfspace::d
 Plane offset. More...
 
Vec3s coal::Plane::n
 Plane normal. More...
 
Scalar coal::Plane::d
 Plane offset. More...
 

Detailed Description

Classes of different types of geometric shapes.

Function Documentation

◆ Box() [1/4]

coal::Box::Box ( )
inline

Default constructor.

◆ Box() [2/4]

coal::Box::Box ( const Box other)
inline

◆ Box() [3/4]

coal::Box::Box ( const Vec3s side_)
inline

◆ Box() [4/4]

coal::Box::Box ( Scalar  x,
Scalar  y,
Scalar  z 
)
inline

◆ buildSupportWarmStart()

void coal::ConvexBase::buildSupportWarmStart ( )
protected

Build the support points warm starts.

◆ Capsule() [1/3]

coal::Capsule::Capsule ( )
inline

Default constructor.

◆ Capsule() [2/3]

coal::Capsule::Capsule ( const Capsule other)
inline

◆ Capsule() [3/3]

coal::Capsule::Capsule ( Scalar  radius_,
Scalar  lz_ 
)
inline

◆ clone() [1/10]

virtual TriangleP* coal::TriangleP::clone ( ) const
inlinevirtual

Clone *this into a new TriangleP.

Implements coal::CollisionGeometry.

◆ clone() [2/10]

virtual Box* coal::Box::clone ( ) const
inlinevirtual

Clone *this into a new Box.

Implements coal::CollisionGeometry.

◆ clone() [3/10]

virtual Sphere* coal::Sphere::clone ( ) const
inlinevirtual

Clone *this into a new Sphere.

Implements coal::CollisionGeometry.

◆ clone() [4/10]

virtual Ellipsoid* coal::Ellipsoid::clone ( ) const
inlinevirtual

Clone *this into a new Ellipsoid.

Implements coal::CollisionGeometry.

◆ clone() [5/10]

virtual Capsule* coal::Capsule::clone ( ) const
inlinevirtual

Clone *this into a new Capsule.

Implements coal::CollisionGeometry.

◆ clone() [6/10]

virtual Cone* coal::Cone::clone ( ) const
inlinevirtual

Clone *this into a new Cone.

Implements coal::CollisionGeometry.

◆ clone() [7/10]

virtual Cylinder* coal::Cylinder::clone ( ) const
inlinevirtual

Clone *this into a new Cylinder.

Implements coal::CollisionGeometry.

◆ clone() [8/10]

virtual ConvexBase* coal::ConvexBase::clone ( ) const
inlinevirtual

Clone (deep copy). This method is consistent with BVHModel clone method. The copy constructor is called, which duplicates the data.

Implements coal::CollisionGeometry.

Reimplemented in coal::Convex< PolygonT >.

◆ clone() [9/10]

virtual Halfspace* coal::Halfspace::clone ( ) const
inlinevirtual

Clone *this into a new Halfspace.

Implements coal::CollisionGeometry.

◆ clone() [10/10]

virtual Plane* coal::Plane::clone ( ) const
inlinevirtual

Clone *this into a new Plane.

Implements coal::CollisionGeometry.

◆ computeCOM()

Vec3s coal::Cone::computeCOM ( ) const
inlinevirtual

compute center of mass

Reimplemented from coal::CollisionGeometry.

◆ computeLocalAABB() [1/10]

void coal::TriangleP::computeLocalAABB ( )
virtual

virtual function of compute AABB in local coordinate

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [2/10]

void coal::Box::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [3/10]

void coal::Sphere::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [4/10]

void coal::Ellipsoid::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [5/10]

void coal::Capsule::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [6/10]

void coal::Cone::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [7/10]

void coal::Cylinder::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [8/10]

void coal::ConvexBase::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [9/10]

void coal::Halfspace::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeLocalAABB() [10/10]

void coal::Plane::computeLocalAABB ( )
virtual

Compute AABB.

Implements coal::CollisionGeometry.

◆ computeMomentofInertia() [1/6]

Matrix3s coal::Box::computeMomentofInertia ( ) const
inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from coal::CollisionGeometry.

◆ computeMomentofInertia() [2/6]

Matrix3s coal::Sphere::computeMomentofInertia ( ) const
inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from coal::CollisionGeometry.

◆ computeMomentofInertia() [3/6]

Matrix3s coal::Ellipsoid::computeMomentofInertia ( ) const
inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from coal::CollisionGeometry.

◆ computeMomentofInertia() [4/6]

Matrix3s coal::Capsule::computeMomentofInertia ( ) const
inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from coal::CollisionGeometry.

◆ computeMomentofInertia() [5/6]

Matrix3s coal::Cone::computeMomentofInertia ( ) const
inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from coal::CollisionGeometry.

◆ computeMomentofInertia() [6/6]

Matrix3s coal::Cylinder::computeMomentofInertia ( ) const
inlinevirtual

compute the inertia matrix, related to the origin

Reimplemented from coal::CollisionGeometry.

◆ computeVolume() [1/6]

Scalar coal::Box::computeVolume ( ) const
inlinevirtual

compute the volume

Reimplemented from coal::CollisionGeometry.

◆ computeVolume() [2/6]

Scalar coal::Sphere::computeVolume ( ) const
inlinevirtual

compute the volume

Reimplemented from coal::CollisionGeometry.

◆ computeVolume() [3/6]

Scalar coal::Ellipsoid::computeVolume ( ) const
inlinevirtual

compute the volume

Reimplemented from coal::CollisionGeometry.

◆ computeVolume() [4/6]

Scalar coal::Capsule::computeVolume ( ) const
inlinevirtual

compute the volume

Reimplemented from coal::CollisionGeometry.

◆ computeVolume() [5/6]

Scalar coal::Cone::computeVolume ( ) const
inlinevirtual

compute the volume

Reimplemented from coal::CollisionGeometry.

◆ computeVolume() [6/6]

Scalar coal::Cylinder::computeVolume ( ) const
inlinevirtual

compute the volume

Reimplemented from coal::CollisionGeometry.

◆ Cone() [1/3]

coal::Cone::Cone ( )
inline

Default constructor.

◆ Cone() [2/3]

coal::Cone::Cone ( const Cone other)
inline

◆ Cone() [3/3]

coal::Cone::Cone ( Scalar  radius_,
Scalar  lz_ 
)
inline

◆ ConvexBase() [1/2]

coal::ConvexBase::ConvexBase ( )
inlineprotected

Construct an uninitialized convex object Initialization is done with ConvexBase::initialize.

◆ ConvexBase() [2/2]

coal::ConvexBase::ConvexBase ( const ConvexBase other)
protected

Copy constructor Only the list of neighbors is copied.

◆ convexHull() [1/2]

static ConvexBase* coal::ConvexBase::convexHull ( const Vec3s points,
unsigned int  num_points,
bool  keepTriangles,
const char *  qhullCommand = NULL 
)
static

◆ convexHull() [2/2]

static ConvexBase* coal::ConvexBase::convexHull ( std::shared_ptr< std::vector< Vec3s >> &  points,
unsigned int  num_points,
bool  keepTriangles,
const char *  qhullCommand = NULL 
)
static

Build a convex hull based on Qhull library and store the vertices and optionally the triangles.

Parameters
points,num_pointsthe points whose convex hull should be computed.
keepTrianglesif true, returns a Convex<Triangle> object which contains the triangle of the shape.
qhullCommandthe command sent to qhull.
  • if keepTriangles is true, this parameter should include "Qt". If NULL, "Qt" is passed to Qhull.
  • if keepTriangles is false, an empty string is passed to Qhull.
Note
Coal must have been compiled with option COAL_HAS_QHULL set to ON.

◆ count()

unsigned char const& coal::ConvexBase::Neighbors::count ( ) const
inline

◆ Cylinder() [1/3]

coal::Cylinder::Cylinder ( )
inline

Default constructor.

◆ Cylinder() [2/3]

coal::Cylinder::Cylinder ( const Cylinder other)
inline

◆ Cylinder() [3/3]

coal::Cylinder::Cylinder ( Scalar  radius_,
Scalar  lz_ 
)
inline

◆ distance() [1/2]

Scalar coal::Halfspace::distance ( const Vec3s p) const
inline

◆ distance() [2/2]

Scalar coal::Plane::distance ( const Vec3s p) const
inline

◆ Ellipsoid() [1/4]

coal::Ellipsoid::Ellipsoid ( )
inline

Default constructor.

◆ Ellipsoid() [2/4]

coal::Ellipsoid::Ellipsoid ( const Ellipsoid other)
inline

◆ Ellipsoid() [3/4]

coal::Ellipsoid::Ellipsoid ( const Vec3s radii)
inlineexplicit

◆ Ellipsoid() [4/4]

coal::Ellipsoid::Ellipsoid ( Scalar  rx,
Scalar  ry,
Scalar  rz 
)
inline

◆ getNodeType() [1/10]

NODE_TYPE coal::TriangleP::getNodeType ( ) const
inlinevirtual

get the node type

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [2/10]

NODE_TYPE coal::Box::getNodeType ( ) const
inlinevirtual

Get node type: a box.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [3/10]

NODE_TYPE coal::Sphere::getNodeType ( ) const
inlinevirtual

Get node type: a sphere.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [4/10]

NODE_TYPE coal::Ellipsoid::getNodeType ( ) const
inlinevirtual

Get node type: an ellipsoid.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [5/10]

NODE_TYPE coal::Capsule::getNodeType ( ) const
inlinevirtual

Get node type: a capsule.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [6/10]

NODE_TYPE coal::Cone::getNodeType ( ) const
inlinevirtual

Get node type: a cone.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [7/10]

NODE_TYPE coal::Cylinder::getNodeType ( ) const
inlinevirtual

Get node type: a cylinder.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [8/10]

NODE_TYPE coal::ConvexBase::getNodeType ( ) const
inlinevirtual

Get node type: a convex polytope.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [9/10]

NODE_TYPE coal::Halfspace::getNodeType ( ) const
inlinevirtual

Get node type: a half space.

Reimplemented from coal::CollisionGeometry.

◆ getNodeType() [10/10]

NODE_TYPE coal::Plane::getNodeType ( ) const
inlinevirtual

Get node type: a plane.

Reimplemented from coal::CollisionGeometry.

◆ getObjectType()

OBJECT_TYPE coal::ShapeBase::getObjectType ( ) const
inlinevirtual

Get object type: a geometric shape.

Reimplemented from coal::CollisionGeometry.

◆ getSweptSphereRadius()

Scalar coal::ShapeBase::getSweptSphereRadius ( ) const
inline

Get radius of sphere swept around the shape. This radius is always >= 0.

◆ Halfspace() [1/4]

coal::Halfspace::Halfspace ( )
inline

◆ Halfspace() [2/4]

coal::Halfspace::Halfspace ( const Halfspace other)
inline

◆ Halfspace() [3/4]

coal::Halfspace::Halfspace ( const Vec3s n_,
Scalar  d_ 
)
inline

Construct a half space with normal direction and offset.

◆ Halfspace() [4/4]

coal::Halfspace::Halfspace ( Scalar  a,
Scalar  b,
Scalar  c,
Scalar  d_ 
)
inline

Construct a plane with normal direction and offset.

◆ inflated() [1/7]

std::pair<Box, Transform3s> coal::Box::inflated ( const Scalar  value) const
inline

Inflate the box by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated box and the related transform to account for the change of shape frame

◆ inflated() [2/7]

std::pair<Sphere, Transform3s> coal::Sphere::inflated ( const Scalar  value) const
inline

Inflate the sphere by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated sphere and the related transform to account for the change of shape frame

◆ inflated() [3/7]

std::pair<Ellipsoid, Transform3s> coal::Ellipsoid::inflated ( const Scalar  value) const
inline

Inflate the ellipsoid by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated ellipsoid and the related transform to account for the change of shape frame

◆ inflated() [4/7]

std::pair<Capsule, Transform3s> coal::Capsule::inflated ( const Scalar  value) const
inline

Inflate the capsule by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated capsule and the related transform to account for the change of shape frame

◆ inflated() [5/7]

std::pair<Cone, Transform3s> coal::Cone::inflated ( const Scalar  value) const
inline

Inflate the cone by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated cone and the related transform to account for the change of shape frame

◆ inflated() [6/7]

std::pair<Cylinder, Transform3s> coal::Cylinder::inflated ( const Scalar  value) const
inline

Inflate the cylinder by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated cylinder and the related transform to account for the change of shape frame

◆ inflated() [7/7]

std::pair<Halfspace, Transform3s> coal::Halfspace::inflated ( const Scalar  value) const
inline

Inflate the halfspace by an amount given by value. This value can be positive or negative but must always >= minInflationValue().

Parameters
[in]valueof the shape inflation.
Returns
a new inflated halfspace and the related transform to account for the change of shape frame

◆ initialize()

void coal::ConvexBase::initialize ( std::shared_ptr< std::vector< Vec3s >>  points_,
unsigned int  num_points_ 
)
protected

Initialize the points of the convex shape This also initializes the ConvexBase::center.

Parameters
ownStorageweither the ConvexBase owns the data.
points_list of 3D points ///
num_points_number of 3D points

◆ minInflationValue() [1/7]

Scalar coal::Box::minInflationValue ( ) const
inline

◆ minInflationValue() [2/7]

Scalar coal::Sphere::minInflationValue ( ) const
inline

◆ minInflationValue() [3/7]

Scalar coal::Ellipsoid::minInflationValue ( ) const
inline

◆ minInflationValue() [4/7]

Scalar coal::Capsule::minInflationValue ( ) const
inline

◆ minInflationValue() [5/7]

Scalar coal::Cone::minInflationValue ( ) const
inline

◆ minInflationValue() [6/7]

Scalar coal::Cylinder::minInflationValue ( ) const
inline

◆ minInflationValue() [7/7]

Scalar coal::Halfspace::minInflationValue ( ) const
inline

◆ operator!=()

bool coal::ConvexBase::Neighbors::operator!= ( const Neighbors other) const
inline

◆ operator=() [1/5]

Box& coal::Box::operator= ( const Box other)
inline

◆ operator=() [2/5]

Cylinder& coal::Cylinder::operator= ( const Cylinder other)
inline

◆ operator=() [3/5]

Halfspace& coal::Halfspace::operator= ( const Halfspace other)
inline

operator =

◆ operator=() [4/5]

Plane& coal::Plane::operator= ( const Plane other)
inline

operator =

◆ operator=() [5/5]

ShapeBase& coal::ShapeBase::operator= ( const ShapeBase other)
default

◆ operator==()

bool coal::ConvexBase::Neighbors::operator== ( const Neighbors other) const
inline

◆ operator[]() [1/2]

unsigned int& coal::ConvexBase::Neighbors::operator[] ( int  i)
inline

◆ operator[]() [2/2]

unsigned int const& coal::ConvexBase::Neighbors::operator[] ( int  i) const
inline

◆ Plane() [1/4]

coal::Plane::Plane ( )
inline

◆ Plane() [2/4]

coal::Plane::Plane ( const Plane other)
inline

◆ Plane() [3/4]

coal::Plane::Plane ( const Vec3s n_,
Scalar  d_ 
)
inline

Construct a plane with normal direction and offset.

◆ Plane() [4/4]

coal::Plane::Plane ( Scalar  a,
Scalar  b,
Scalar  c,
Scalar  d_ 
)
inline

Construct a plane with normal direction and offset.

◆ set()

void coal::ConvexBase::set ( std::shared_ptr< std::vector< Vec3s >>  points_,
unsigned int  num_points_ 
)
protected

Set the points of the convex shape.

Parameters
ownStorageweither the ConvexBase owns the data.
points_list of 3D points ///
num_points_number of 3D points

◆ setSweptSphereRadius()

void coal::ShapeBase::setSweptSphereRadius ( Scalar  radius)
inline

Set radius of sphere swept around the shape. Must be >= 0.

◆ ShapeBase() [1/2]

coal::ShapeBase::ShapeBase ( )
inline

◆ ShapeBase() [2/2]

coal::ShapeBase::ShapeBase ( const ShapeBase other)
inline

 

Copy constructor

◆ signedDistance() [1/2]

Scalar coal::Halfspace::signedDistance ( const Vec3s p) const
inline

◆ signedDistance() [2/2]

Scalar coal::Plane::signedDistance ( const Vec3s p) const
inline

◆ Sphere() [1/3]

coal::Sphere::Sphere ( )
inline

Default constructor.

◆ Sphere() [2/3]

coal::Sphere::Sphere ( const Sphere other)
inline

◆ Sphere() [3/3]

coal::Sphere::Sphere ( Scalar  radius_)
inlineexplicit

◆ TriangleP() [1/3]

coal::TriangleP::TriangleP ( )
inline

◆ TriangleP() [2/3]

coal::TriangleP::TriangleP ( const TriangleP other)
inline

◆ TriangleP() [3/3]

coal::TriangleP::TriangleP ( const Vec3s a_,
const Vec3s b_,
const Vec3s c_ 
)
inline

◆ unitNormalTest() [1/2]

void coal::Halfspace::unitNormalTest ( )
protected

Turn non-unit normal into unit.

◆ unitNormalTest() [2/2]

void coal::Plane::unitNormalTest ( )
protected

Turn non-unit normal into unit.

◆ ~ConvexBase()

virtual coal::ConvexBase::~ConvexBase ( )
virtual

◆ ~ShapeBase()

virtual coal::ShapeBase::~ShapeBase ( )
inlinevirtual

Variable Documentation

◆ a

Vec3s coal::TriangleP::a

◆ b

Vec3s coal::TriangleP::b

◆ c

Vec3s coal::TriangleP::c

◆ center

Vec3s coal::ConvexBase::center

center of the convex polytope, this is used for collision: center is guaranteed in the internal of the polytope (as it is convex)

◆ count_

unsigned char coal::ConvexBase::Neighbors::count_

◆ d [1/2]

Scalar coal::Halfspace::d

Plane offset.

◆ d [2/2]

Scalar coal::Plane::d

Plane offset.

◆ halfLength [1/3]

Scalar coal::Capsule::halfLength

Half Length along z axis.

◆ halfLength [2/3]

Scalar coal::Cone::halfLength

Half Length along z axis.

◆ halfLength [3/3]

Scalar coal::Cylinder::halfLength

Half Length along z axis.

◆ halfSide

Vec3s coal::Box::halfSide

box side half-length

◆ indices

std::vector<int> coal::ConvexBase::SupportWarmStartPolytope::indices

Indices of the support points warm starts. These are the indices of the real convex, not the indices of points in the warm start polytope.

◆ m_swept_sphere_radius

Scalar coal::ShapeBase::m_swept_sphere_radius {0}
protected

Radius of the sphere swept around the shape. Default value is 0. Note: this property differs from inflated method of certain derived classes (e.g. Box, Sphere, Ellipsoid, Capsule, Cone, Cylinder) in the sense that inflated returns a new shape which can be inflated but also deflated. Also, an inflated shape is not rounded. It simply has a different size. Sweeping a shape with a sphere is a different operation (a Minkowski sum), which rounds the sharp corners of a shape. The swept sphere radius is a property of the shape itself and can be manually updated between collision checks.

◆ n [1/2]

Vec3s coal::Halfspace::n

Plane normal.

◆ n [2/2]

Vec3s coal::Plane::n

Plane normal.

◆ n_

unsigned int* coal::ConvexBase::Neighbors::n_

◆ neighbors

std::shared_ptr<std::vector<Neighbors> > coal::ConvexBase::neighbors

Neighbors of each vertex. It is an array of size num_points. For each vertex, it contains the number of neighbors and a list of indices pointing to them.

◆ nneighbors_

std::shared_ptr<std::vector<unsigned int> > coal::ConvexBase::nneighbors_
protected

Array of indices of the neighbors of each vertex. Since we don't know a priori the number of neighbors of each vertex, we store the indices of the neighbors in a single array. The neighbors attribute, an array of Neighbors, is used to point each vertex to the right indices in the nneighbors_ array.

◆ normals

std::shared_ptr<std::vector<Vec3s> > coal::ConvexBase::normals

An array of the normals of the polygon.

◆ num_normals_and_offsets

unsigned int coal::ConvexBase::num_normals_and_offsets

◆ num_points

unsigned int coal::ConvexBase::num_points

◆ num_support_warm_starts

constexpr size_t coal::ConvexBase::num_support_warm_starts = 14
staticconstexpr

Number of support warm starts.

◆ num_vertices_large_convex_threshold

constexpr size_t coal::ConvexBase::num_vertices_large_convex_threshold = 32
staticconstexpr

Above this threshold, the convex polytope is considered large. This influcences the way the support function is computed.

◆ offsets

std::shared_ptr<std::vector<Scalar> > coal::ConvexBase::offsets

An array of the offsets to the normals of the polygon. Note: there are as many offsets as normals.

◆ points [1/2]

std::shared_ptr<std::vector<Vec3s> > coal::ConvexBase::points

An array of the points of the polygon.

◆ points [2/2]

std::vector<Vec3s> coal::ConvexBase::SupportWarmStartPolytope::points

Array of support points to warm start the support function computation.

◆ radii

Vec3s coal::Ellipsoid::radii

Radii of the Ellipsoid (such that on boundary: x^2/rx^2 + y^2/ry^2.

  • z^2/rz^2 = 1)

◆ radius [1/4]

Scalar coal::Sphere::radius

Radius of the sphere.

◆ radius [2/4]

Scalar coal::Capsule::radius

Radius of capsule.

◆ radius [3/4]

Scalar coal::Cone::radius

Radius of the cone.

◆ radius [4/4]

Scalar coal::Cylinder::radius

Radius of the cylinder.

◆ support_warm_starts

SupportWarmStartPolytope coal::ConvexBase::support_warm_starts

Support warm start polytopes.