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>
Classes | |
struct | Neighbors |
struct | 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... | |
Public Member Functions | |
virtual | ~ConvexBase () |
virtual 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 | computeLocalAABB () |
Compute AABB. More... | |
NODE_TYPE | getNodeType () const |
Get node type: a convex polytope. 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 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 ConvexBase * | 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 | |
ConvexBase () | |
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... | |
ConvexBase (const ConvexBase &other) | |
Copy constructor Only the list of neighbors is copied. More... | |
void | buildSupportWarmStart () |
Build the support points warm starts. More... | |
Protected Attributes | |
std::shared_ptr< std::vector< unsigned int > > | 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... | |
Base for convex polytope.