coal
3.0.1
Coal, The Collision Detection Library. Previously known as HPP-FCL, fork of FCL -- The Flexible Collision Library
|
Base for convex polytope. More...
#include <coal/shape/geometric_shapes.h>
Public Types | |
typedef _IndexType | index_type |
typedef _IndexType | IndexType |
typedef ShapeBase | Base |
using | Neighbors = coal::ConvexBaseTplNeighbors< IndexType > |
using | SupportWarmStartPolytope = ConvexBaseTplSupportWarmStartPolytope< IndexType > |
Public Member Functions | |
virtual | ~ConvexBaseTpl () |
Base & | base () |
Cast ConvexBaseTpl to ShapeBase. This method should never be marked as virtual. More... | |
const Base & | base () const |
Const cast ConvexBaseTpl to ShapeBase. This method should never be marked as virtual. More... | |
ConvexBaseTpl (const ConvexBaseTpl &other) | |
Copy constructor. The copy constructor only shallow copies the data (it copies the shared pointers but does not deep clones the data). More... | |
ConvexBaseTpl & | operator= (const ConvexBaseTpl &other) |
Copy assignment operator. The copy assignment operator shallow copies the data, just as the copy constructor. More... | |
virtual ConvexBaseTpl * | clone () const |
Clone (deep copy). More... | |
virtual ConvexBaseTpl * | deepcopy () const |
Deep copy of the ConvexBaseTpl. This method deep copies every field of the class. More... | |
template<typename OtherIndexType > | |
ConvexBaseTpl< OtherIndexType > | cast () const |
Cast this ConvexBase vertex indices to OtherIndexType. This effectively deep copies this ConvexBaseTpl into a new one. More... | |
void | computeLocalAABB () |
Compute AABB. More... | |
NODE_TYPE | getNodeType () const |
Get node type: a convex polytope. More... | |
IndexType | neighbor (IndexType i, IndexType j) const |
Get the index of the j-th neighbor of the i-th vertex. More... | |
NODE_TYPE | getNodeType () const |
get the node type More... | |
NODE_TYPE | getNodeType () const |
get the node type More... | |
![]() | |
ShapeBase () | |
ShapeBase (const ShapeBase &other) | |
More... | |
ShapeBase & | operator= (const ShapeBase &other)=default |
virtual | ~ShapeBase () |
OBJECT_TYPE | getObjectType () const |
Get object type: a geometric shape. More... | |
void | setSweptSphereRadius (Scalar radius) |
Set radius of sphere swept around the shape. Must be >= 0. More... | |
Scalar | getSweptSphereRadius () const |
Get radius of sphere swept around the shape. This radius is always >= 0. More... | |
![]() | |
CollisionGeometry () | |
CollisionGeometry (const CollisionGeometry &other)=default | |
Copy constructor. More... | |
virtual | ~CollisionGeometry () |
bool | operator== (const CollisionGeometry &other) const |
Equality operator. More... | |
bool | operator!= (const CollisionGeometry &other) const |
Difference operator. More... | |
void * | getUserData () const |
get user data in geometry More... | |
void | setUserData (void *data) |
set user data in geometry More... | |
bool | isOccupied () const |
whether the object is completely occupied More... | |
bool | isFree () const |
whether the object is completely free More... | |
bool | isUncertain () const |
whether the object has some uncertainty More... | |
virtual Vec3s | computeCOM () const |
compute center of mass More... | |
virtual Matrix3s | computeMomentofInertia () const |
compute the inertia matrix, related to the origin More... | |
virtual Scalar | computeVolume () const |
compute the volume More... | |
virtual Matrix3s | computeMomentofInertiaRelatedToCOM () const |
compute the inertia matrix, related to the com More... | |
Static Public Member Functions | |
static ConvexBaseTpl * | 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 ConvexBaseTpl * | convexHull (const Vec3s *points, unsigned int num_points, bool keepTriangles, const char *qhullCommand=NULL) |
Public Attributes | |
std::shared_ptr< std::vector< Vec3s > > | points |
An array of the points of the polygon. More... | |
unsigned int | num_points |
std::shared_ptr< std::vector< Vec3s > > | normals |
An array of the normals of the polygon. More... | |
std::shared_ptr< std::vector< Scalar > > | offsets |
An array of the offsets to the normals of the polygon. Note: there are as many offsets as normals. More... | |
unsigned int | num_normals_and_offsets |
std::shared_ptr< std::vector< Neighbors > > | 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 | 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... | |
SupportWarmStartPolytope | support_warm_starts |
Support warm start polytopes. More... | |
![]() | |
Vec3s | aabb_center |
AABB center in local coordinate. More... | |
Scalar | aabb_radius |
AABB radius. More... | |
AABB | aabb_local |
AABB in local coordinate, used for tight AABB when only translation transform. More... | |
void * | user_data |
pointer to user defined data specific to this object More... | |
Scalar | cost_density |
collision cost for unit volume More... | |
Scalar | threshold_occupied |
threshold for occupied ( >= is occupied) More... | |
Scalar | threshold_free |
threshold for free (<= is free) More... | |
Static Public Attributes | |
static constexpr size_t | 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... | |
static constexpr size_t | num_support_warm_starts = 14 |
Number of support warm starts. More... | |
Protected Member Functions | |
ConvexBaseTpl () | |
Construct an uninitialized convex object Initialization is done with ConvexBase::initialize. More... | |
void | 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 | set (std::shared_ptr< std::vector< Vec3s >> points_, unsigned int num_points_) |
Set the points of the convex shape. More... | |
void | buildSupportWarmStart () |
Build the support points warm starts. More... | |
void | computeCenter () |
virtual bool | isEqual (const CollisionGeometry &_other) const |
equal operator with another object of derived type. More... | |
Static Protected Member Functions | |
template<typename OtherIndexType > | |
static void | deepcopy (const ConvexBaseTpl< IndexType > *source, ConvexBaseTpl< OtherIndexType > *copy) |
Deep copy of a ConvexBaseTpl. This method deep copies every field of the class. More... | |
Protected Attributes | |
std::shared_ptr< std::vector< IndexType > > | 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... | |
![]() | |
Scalar | 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... | |
Friends | |
template<typename OtherIndexType > | |
class | ConvexBaseTpl |
Base for convex polytope.
_IndexType | type of vertices indexes. |
typedef ShapeBase coal::ConvexBaseTpl< _IndexType >::Base |
typedef _IndexType coal::ConvexBaseTpl< _IndexType >::index_type |
typedef _IndexType coal::ConvexBaseTpl< _IndexType >::IndexType |
using coal::ConvexBaseTpl< _IndexType >::Neighbors = coal::ConvexBaseTplNeighbors<IndexType> |
using coal::ConvexBaseTpl< _IndexType >::SupportWarmStartPolytope = ConvexBaseTplSupportWarmStartPolytope<IndexType> |
|
inlinevirtual |
|
inline |
Copy constructor. The copy constructor only shallow copies the data (it copies the shared pointers but does not deep clones the data).
|
inlineprotected |
Construct an uninitialized convex object Initialization is done with ConvexBase::initialize.
|
inline |
Cast ConvexBaseTpl to ShapeBase. This method should never be marked as virtual.
|
inline |
Const cast ConvexBaseTpl to ShapeBase. This method should never be marked as virtual.
|
protected |
Build the support points warm starts.
|
inline |
Cast this ConvexBase vertex indices to OtherIndexType. This effectively deep copies this ConvexBaseTpl into a new one.
|
inlinevirtual |
Clone (deep copy).
Implements coal::CollisionGeometry.
Reimplemented in coal::ConvexTpl< PolygonT >.
|
protected |
|
virtual |
Compute AABB.
Implements coal::CollisionGeometry.
|
static |
|
static |
Build a convex hull based on Qhull library and store the vertices and optionally the triangles.
points,num_points | the points whose convex hull should be computed. |
keepTriangles | if true , returns a Convex<Triangle> object which contains the triangle of the shape. |
qhullCommand | the command sent to qhull.
|
COAL_HAS_QHULL
set to ON
.
|
inlinevirtual |
Deep copy of the ConvexBaseTpl. This method deep copies every field of the class.
Reimplemented in coal::ConvexTpl< PolygonT >.
|
staticprotected |
Deep copy of a ConvexBaseTpl. This method deep copies every field of the class.
|
virtual |
Get node type: a convex polytope.
Reimplemented from coal::CollisionGeometry.
|
inlinevirtual |
get the node type
Reimplemented from coal::CollisionGeometry.
|
inlinevirtual |
get the node type
Reimplemented from coal::CollisionGeometry.
|
protected |
Initialize the points of the convex shape This also initializes the ConvexBase::center.
points_ | list of 3D points /// |
num_points_ | number of 3D points |
|
inlineprotectedvirtual |
equal operator with another object of derived type.
Implements coal::CollisionGeometry.
|
inline |
Get the index of the j-th neighbor of the i-th vertex.
ConvexBaseTpl< IndexType > & coal::ConvexBaseTpl< IndexType >::operator= | ( | const ConvexBaseTpl< _IndexType > & | other | ) |
Copy assignment operator. The copy assignment operator shallow copies the data, just as the copy constructor.
|
protected |
Set the points of the convex shape.
points_ | list of 3D points /// |
num_points_ | number of 3D points |
Vec3s coal::ConvexBaseTpl< _IndexType >::center |
center of the convex polytope, this is used for collision: center is guaranteed in the internal of the polytope (as it is convex)
std::shared_ptr<std::vector<Neighbors> > coal::ConvexBaseTpl< _IndexType >::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.
|
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.
std::shared_ptr<std::vector<Vec3s> > coal::ConvexBaseTpl< _IndexType >::normals |
An array of the normals of the polygon.
unsigned int coal::ConvexBaseTpl< _IndexType >::num_normals_and_offsets |
unsigned int coal::ConvexBaseTpl< _IndexType >::num_points |
|
staticconstexpr |
Number of support warm starts.
|
staticconstexpr |
Above this threshold, the convex polytope is considered large. This influcences the way the support function is computed.
std::shared_ptr<std::vector<Scalar> > coal::ConvexBaseTpl< _IndexType >::offsets |
An array of the offsets to the normals of the polygon. Note: there are as many offsets as normals.
std::shared_ptr<std::vector<Vec3s> > coal::ConvexBaseTpl< _IndexType >::points |
An array of the points of the polygon.
SupportWarmStartPolytope coal::ConvexBaseTpl< _IndexType >::support_warm_starts |
Support warm start polytopes.