Base for convex polytope. More...
#include <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 * | 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... | |
virtual | ~ConvexBase () |
Public Member Functions inherited from coal::ShapeBase | |
OBJECT_TYPE | getObjectType () const |
Get object type: a geometric shape. More... | |
CoalScalar | getSweptSphereRadius () const |
Get radius of sphere swept around the shape. This radius is always >= 0. More... | |
ShapeBase & | operator= (const ShapeBase &other)=default |
void | setSweptSphereRadius (CoalScalar radius) |
Set radius of sphere swept around the shape. Must be >= 0. More... | |
ShapeBase () | |
ShapeBase (const ShapeBase &other) | |
More... | |
virtual | ~ShapeBase () |
Public Member Functions inherited from coal::CollisionGeometry | |
CollisionGeometry () | |
CollisionGeometry (const CollisionGeometry &other)=default | |
Copy constructor. More... | |
virtual Vec3s | computeCOM () const |
compute center of mass More... | |
virtual Matrix3s | computeMomentofInertia () const |
compute the inertia matrix, related to the origin More... | |
virtual Matrix3s | computeMomentofInertiaRelatedToCOM () const |
compute the inertia matrix, related to the com More... | |
virtual CoalScalar | computeVolume () const |
compute the volume More... | |
void * | getUserData () const |
get user data in geometry More... | |
bool | isFree () const |
whether the object is completely free More... | |
bool | isOccupied () const |
whether the object is completely occupied More... | |
bool | isUncertain () const |
whether the object has some uncertainty More... | |
bool | operator!= (const CollisionGeometry &other) const |
Difference operator. More... | |
bool | operator== (const CollisionGeometry &other) const |
Equality operator. More... | |
void | setUserData (void *data) |
set user data in geometry More... | |
virtual | ~CollisionGeometry () |
Static Public Member Functions | |
static COAL_DEPRECATED ConvexBase * | convexHull (const Vec3s *points, unsigned int num_points, bool keepTriangles, const char *qhullCommand=NULL) |
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... | |
Public Attributes | |
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... | |
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... | |
std::shared_ptr< std::vector< Vec3s > > | normals |
An array of the normals of the polygon. More... | |
unsigned int | num_normals_and_offsets |
unsigned int | num_points |
std::shared_ptr< std::vector< double > > | offsets |
An array of the offsets to the normals of the polygon. Note: there are as many offsets as normals. More... | |
std::shared_ptr< std::vector< Vec3s > > | points |
An array of the points of the polygon. More... | |
SupportWarmStartPolytope | support_warm_starts |
Support warm start polytopes. More... | |
Public Attributes inherited from coal::CollisionGeometry | |
Vec3s | aabb_center |
AABB center in local coordinate. More... | |
AABB | aabb_local |
AABB in local coordinate, used for tight AABB when only translation transform. More... | |
CoalScalar | aabb_radius |
AABB radius. More... | |
CoalScalar | cost_density |
collision cost for unit volume More... | |
CoalScalar | threshold_free |
threshold for free (<= is free) More... | |
CoalScalar | threshold_occupied |
threshold for occupied ( >= is occupied) More... | |
void * | user_data |
pointer to user defined data specific to this object More... | |
Static Public Attributes | |
static constexpr size_t | num_support_warm_starts = 14 |
Number of support warm starts. More... | |
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... | |
Protected Member Functions | |
void | buildSupportWarmStart () |
Build the support points warm starts. More... | |
ConvexBase () | |
Construct an uninitialized convex object Initialization is done with ConvexBase::initialize. More... | |
ConvexBase (const ConvexBase &other) | |
Copy constructor Only the list of neighbors is copied. 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... | |
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... | |
Protected Attributes inherited from coal::ShapeBase | |
CoalScalar | 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... | |
Private Member Functions | |
void | computeCenter () |
virtual bool | isEqual (const CollisionGeometry &_other) const |
equal operator with another object of derived type. More... | |
Base for convex polytope.
Definition at line 645 of file coal/shape/geometric_shapes.h.