Bullet Collision Detection & Physics Library: btConvexHullShape Class Reference

Bullet Collision Detection & Physics Library

Public Member Functions | Protected Attributes | List of all members
btConvexHullShape Class Reference

The btConvexHullShape implements an implicit convex hull of an array of vertices. More...

`#include <btConvexHullShape.h>`

Inheritance diagram for btConvexHullShape:
[legend]
Collaboration diagram for btConvexHullShape:
[legend]

## Public Member Functions
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btConvexHullShape (const btScalar *points=0, int numPoints=0, int stride=sizeof(btVector3))
| this constructor optionally takes in a pointer to points. More...
void | addPoint (const btVector3 &point, bool recalculateLocalAabb=true)
btVector3 * | getUnscaledPoints ()
const btVector3 * | getUnscaledPoints () const
const btVector3 * | getPoints () const
| getPoints is obsolete, please use getUnscaledPoints More...
void | optimizeConvexHull ()
btVector3 | getScaledPoint (int i) const
int | getNumPoints () const
virtual btVector3 | localGetSupportingVertex (const btVector3 &vec) const
virtual btVector3 | localGetSupportingVertexWithoutMargin (const btVector3 &vec) const
virtual void | batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
virtual void | project (const btTransform &trans, const btVector3 &dir, btScalar &minProj, btScalar &maxProj, btVector3 &witnesPtMin, btVector3 &witnesPtMax) const
virtual const char * | getName () const
virtual int | getNumVertices () const
virtual int | getNumEdges () const
virtual void | getEdge (int i, btVector3 &pa, btVector3 &pb) const
virtual void | getVertex (int i, btVector3 &vtx) const
virtual int | getNumPlanes () const
virtual void | getPlane (btVector3 &planeNormal, btVector3 &planeSupport, int i) const
virtual bool | isInside (const btVector3 &pt, btScalar tolerance) const
virtual void | setLocalScaling (const btVector3 &scaling)
| in case we receive negative scaling More...
virtual int | calculateSerializeBufferSize () const
virtual const char * | serialize (void *dataBuffer, btSerializer *serializer) const
| fills the dataBuffer and returns the struct name (and 0 on failure) More...
Public Member Functions inherited from btPolyhedralConvexAabbCachingShape
void | getNonvirtualAabb (const btTransform &trans, btVector3 &aabbMin, btVector3 &aabbMax, btScalar margin) const
virtual void | setLocalScaling (const btVector3 &scaling)
virtual void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
| getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version More...
void | recalcLocalAabb ()
Public Member Functions inherited from btPolyhedralConvexShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btPolyhedralConvexShape ()
virtual | ~btPolyhedralConvexShape ()
virtual bool | initializePolyhedralFeatures (int shiftVerticesByMargin=0)
| optional method mainly used to generate multiple contact points by clipping polyhedral features (faces/edges) experimental/work-in-progress More...
virtual void | setPolyhedralFeatures (btConvexPolyhedron &polyhedron)
const btConvexPolyhedron * | getConvexPolyhedron () const
virtual btVector3 | localGetSupportingVertexWithoutMargin (const btVector3 &vec) const
virtual void | batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const
virtual void | calculateLocalInertia (btScalar mass, btVector3 &inertia) const
virtual int | getNumVertices () const =0
virtual int | getNumEdges () const =0
virtual void | getEdge (int i, btVector3 &pa, btVector3 &pb) const =0
virtual void | getVertex (int i, btVector3 &vtx) const =0
virtual int | getNumPlanes () const =0
virtual void | getPlane (btVector3 &planeNormal, btVector3 &planeSupport, int i) const =0
virtual bool | isInside (const btVector3 &pt, btScalar tolerance) const =0
Public Member Functions inherited from btConvexInternalShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
virtual | ~btConvexInternalShape ()
virtual btVector3 | localGetSupportingVertex (const btVector3 &vec) const
const btVector3 & | getImplicitShapeDimensions () const
void | setImplicitShapeDimensions (const btVector3 &dimensions)
| warning: use setImplicitShapeDimensions with care changing a collision shape while the body is in the world is not recommended, it is best to remove the body from the world, then make the change, and re-add it alternatively flush the contact points, see documentation for 'cleanProxyFromPairs' More...
void | setSafeMargin (btScalar minDimension, btScalar defaultMarginMultiplier=0.1f)
void | setSafeMargin (const btVector3 &halfExtents, btScalar defaultMarginMultiplier=0.1f)
void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
| getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version More...
virtual void | getAabbSlow (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
virtual void | setLocalScaling (const btVector3 &scaling)
virtual const btVector3 & | getLocalScaling () const
const btVector3 & | getLocalScalingNV () const
virtual void | setMargin (btScalar margin)
virtual btScalar | getMargin () const
btScalar | getMarginNV () const
virtual int | getNumPreferredPenetrationDirections () const
virtual void | getPreferredPenetrationDirection (int index, btVector3 &penetrationVector) const
virtual int | calculateSerializeBufferSize () const
virtual const char * | serialize (void *dataBuffer, btSerializer *serializer) const
| fills the dataBuffer and returns the struct name (and 0 on failure) More...
Public Member Functions inherited from btConvexShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btConvexShape ()
| not supported on IBM SDK, until we fix the alignment of btVector3 More...
virtual | ~btConvexShape ()
virtual btVector3 | localGetSupportingVertex (const btVector3 &vec) const =0
virtual btVector3 | localGetSupportingVertexWithoutMargin (const btVector3 &vec) const =0
btVector3 | localGetSupportVertexWithoutMarginNonVirtual (const btVector3 &vec) const
btVector3 | localGetSupportVertexNonVirtual (const btVector3 &vec) const
btScalar | getMarginNonVirtual () const
void | getAabbNonVirtual (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
virtual void | project (const btTransform &trans, const btVector3 &dir, btScalar &minProj, btScalar &maxProj, btVector3 &witnesPtMin, btVector3 &witnesPtMax) const
virtual void | batchedUnitVectorGetSupportingVertexWithoutMargin (const btVector3 *vectors, btVector3 *supportVerticesOut, int numVectors) const =0
void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
| getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version More...
virtual void | getAabbSlow (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
virtual void | setLocalScaling (const btVector3 &scaling)=0
virtual const btVector3 & | getLocalScaling () const =0
virtual void | setMargin (btScalar margin)=0
virtual btScalar | getMargin () const =0
virtual int | getNumPreferredPenetrationDirections () const =0
virtual void | getPreferredPenetrationDirection (int index, btVector3 &penetrationVector) const =0
Public Member Functions inherited from btCollisionShape
| BT_DECLARE_ALIGNED_ALLOCATOR ()
| btCollisionShape ()
virtual | ~btCollisionShape ()
virtual void | getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
| getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t. More...
virtual void | getBoundingSphere (btVector3 &center, btScalar &radius) const
virtual btScalar | getAngularMotionDisc () const
| getAngularMotionDisc returns the maximum radius needed for Conservative Advancement to handle time-of-impact with rotations. More...
virtual btScalar | getContactBreakingThreshold (btScalar defaultContactThresholdFactor) const
void | calculateTemporalAabb (const btTransform &curTrans, const btVector3 &linvel, const btVector3 &angvel, btScalar timeStep, btVector3 &temporalAabbMin, btVector3 &temporalAabbMax) const
| calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep) result is conservative More...
bool | isPolyhedral () const
bool | isConvex2d () const
bool | isConvex () const
bool | isNonMoving () const
bool | isConcave () const
bool | isCompound () const
bool | isSoftBody () const
bool | isInfinite () const
| isInfinite is used to catch simulation error (aabb check) More...
virtual void | setLocalScaling (const btVector3 &scaling)=0
virtual const btVector3 & | getLocalScaling () const =0
virtual void | calculateLocalInertia (btScalar mass, btVector3 &inertia) const =0
virtual const char * | getName () const =0
int | getShapeType () const
virtual btVector3 | getAnisotropicRollingFrictionDirection () const
| the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See Bullet/Demos/RollingFrictionDemo for an example More...
virtual void | setMargin (btScalar margin)=0
virtual btScalar | getMargin () const =0
void | setUserPointer (void *userPtr)
| optional user data pointer More...
void * | getUserPointer () const
void | setUserIndex (int index)
int | getUserIndex () const
void | setUserIndex2 (int index)
int | getUserIndex2 () const
virtual int | calculateSerializeBufferSize () const
virtual const char * | serialize (void *dataBuffer, btSerializer *serializer) const
| fills the dataBuffer and returns the struct name (and 0 on failure) More...
virtual void | serializeSingleShape (btSerializer *serializer) const

## Protected Attributes
btAlignedObjectArray< btVector3 > | m_unscaledPoints
Protected Attributes inherited from btPolyhedralConvexShape
btConvexPolyhedron * | m_polyhedron
Protected Attributes inherited from btConvexInternalShape
btVector3 | m_localScaling
btVector3 | m_implicitShapeDimensions
btScalar | m_collisionMargin
btScalar | m_padding
Protected Attributes inherited from btCollisionShape
int | m_shapeType
void * | m_userPointer
int | m_userIndex
int | m_userIndex2

## Additional Inherited Members
Protected Member Functions inherited from btPolyhedralConvexAabbCachingShape
void | setCachedLocalAabb (const btVector3 &aabbMin, const btVector3 &aabbMax)
void | getCachedLocalAabb (btVector3 &aabbMin, btVector3 &aabbMax) const
| btPolyhedralConvexAabbCachingShape ()
Protected Member Functions inherited from btConvexInternalShape
| btConvexInternalShape ()

## Detailed Description

The btConvexHullShape implements an implicit convex hull of an array of vertices.

Bullet provides a general and fast collision detector for convex shapes based on GJK and EPA using localGetSupportingVertex.

Definition at line 25 of file btConvexHullShape.h.

## Constructor & Destructor Documentation

## ◆ btConvexHullShape()

btConvexHullShape::btConvexHullShape | ( | const btScalar * | points = `0`,
|  | int | numPoints = `0`,
|  | int | stride = `sizeof(btVector3)`
| ) |  |

this constructor optionally takes in a pointer to points.

Each point is assumed to be 3 consecutive btScalar (x,y,z), the striding defines the number of bytes between each point, in memory. It is easier to not pass any points in the constructor, and just add one point at a time, using addPoint. btConvexHullShape make an internal copy of the points.

Definition at line 28 of file btConvexHullShape.cpp.

## Member Function Documentation

## ◆ addPoint()

void btConvexHullShape::addPoint | ( | const btVector3 & | point,
|  | bool | recalculateLocalAabb = `true`
| ) |  |

Definition at line 51 of file btConvexHullShape.cpp.

## ◆ batchedUnitVectorGetSupportingVertexWithoutMargin()

void btConvexHullShape::batchedUnitVectorGetSupportingVertexWithoutMargin | ( | const btVector3 * | vectors,
|  | btVector3 * | supportVerticesOut,
|  | int | numVectors
| ) |  | const
| virtual

Reimplemented from btPolyhedralConvexShape.

Definition at line 74 of file btConvexHullShape.cpp.

## ◆ BT_DECLARE_ALIGNED_ALLOCATOR()

btConvexHullShape::BT_DECLARE_ALIGNED_ALLOCATOR | ( |  | ) |

## ◆ calculateSerializeBufferSize()

int btConvexHullShape::calculateSerializeBufferSize | ( |  | ) | const
| inlinevirtual

Reimplemented from btConvexInternalShape.

Definition at line 112 of file btConvexHullShape.h.

## ◆ getEdge()

void btConvexHullShape::getEdge | ( | int | i,
|  | btVector3 & | pa,
|  | btVector3 & | pb
| ) |  | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 140 of file btConvexHullShape.cpp.

## ◆ getName()

virtual const char * btConvexHullShape::getName | ( |  | ) | const
| inlinevirtual

Implements btCollisionShape.

Definition at line 76 of file btConvexHullShape.h.

## ◆ getNumEdges()

int btConvexHullShape::getNumEdges | ( |  | ) | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 135 of file btConvexHullShape.cpp.

## ◆ getNumPlanes()

int btConvexHullShape::getNumPlanes | ( |  | ) | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 153 of file btConvexHullShape.cpp.

## ◆ getNumPoints()

int btConvexHullShape::getNumPoints | ( |  | ) | const
| inline

Definition at line 64 of file btConvexHullShape.h.

## ◆ getNumVertices()

int btConvexHullShape::getNumVertices | ( |  | ) | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 130 of file btConvexHullShape.cpp.

## ◆ getPlane()

void btConvexHullShape::getPlane | ( | btVector3 & | planeNormal,
|  | btVector3 & | planeSupport,
|  | int | i
| ) |  | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 158 of file btConvexHullShape.cpp.

## ◆ getPoints()

const btVector3 * btConvexHullShape::getPoints | ( |  | ) | const
| inline

getPoints is obsolete, please use getUnscaledPoints

Definition at line 52 of file btConvexHullShape.h.

## ◆ getScaledPoint()

btVector3 btConvexHullShape::getScaledPoint | ( | int | i | ) | const
| inline

Definition at line 59 of file btConvexHullShape.h.

## ◆ getUnscaledPoints() [1/2]

btVector3 * btConvexHullShape::getUnscaledPoints | ( |  | ) |
| inline

Definition at line 41 of file btConvexHullShape.h.

## ◆ getUnscaledPoints() [2/2]

const btVector3 * btConvexHullShape::getUnscaledPoints | ( |  | ) | const
| inline

Definition at line 46 of file btConvexHullShape.h.

## ◆ getVertex()

void btConvexHullShape::getVertex | ( | int | i,
|  | btVector3 & | vtx
| ) |  | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 148 of file btConvexHullShape.cpp.

## ◆ isInside()

bool btConvexHullShape::isInside | ( | const btVector3 & | pt,
|  | btScalar | tolerance
| ) |  | const
| virtual

Implements btPolyhedralConvexShape.

Definition at line 164 of file btConvexHullShape.cpp.

## ◆ localGetSupportingVertex()

btVector3 btConvexHullShape::localGetSupportingVertex | ( | const btVector3 & | vec | ) | const
| virtual

Reimplemented from btConvexInternalShape.

Definition at line 99 of file btConvexHullShape.cpp.

## ◆ localGetSupportingVertexWithoutMargin()

btVector3 btConvexHullShape::localGetSupportingVertexWithoutMargin | ( | const btVector3 & | vec | ) | const
| virtual

Reimplemented from btPolyhedralConvexShape.

Definition at line 58 of file btConvexHullShape.cpp.

## ◆ optimizeConvexHull()

void btConvexHullShape::optimizeConvexHull | ( |  | ) |

Definition at line 116 of file btConvexHullShape.cpp.

## ◆ project()

void btConvexHullShape::project | ( | const btTransform & | trans,
|  | const btVector3 & | dir,
|  | btScalar & | minProj,
|  | btScalar & | maxProj,
|  | btVector3 & | witnesPtMin,
|  | btVector3 & | witnesPtMax
| ) |  | const
| virtual

Reimplemented from btConvexShape.

Definition at line 207 of file btConvexHullShape.cpp.

## ◆ serialize()

const char * btConvexHullShape::serialize | ( | void * | dataBuffer,
|  | btSerializer * | serializer
| ) |  | const
| virtual

fills the dataBuffer and returns the struct name (and 0 on failure)

Reimplemented from btConvexInternalShape.

Definition at line 171 of file btConvexHullShape.cpp.

## ◆ setLocalScaling()

void btConvexHullShape::setLocalScaling | ( | const btVector3 & | scaling | ) |
| virtual

in case we receive negative scaling

Reimplemented from btPolyhedralConvexAabbCachingShape.

Definition at line 45 of file btConvexHullShape.cpp.

## Member Data Documentation

## ◆ m_unscaledPoints

btAlignedObjectArray<btVector3> btConvexHullShape::m_unscaledPoints
| protected

Definition at line 29 of file btConvexHullShape.h.

The documentation for this class was generated from the following files:

- btConvexHullShape.h
- btConvexHullShape.cpp