chrono::collision Namespace Reference

Description

Namespace for collision detection.

Namespaces

 bt_utils
 Utilities for Bullet-based collision detection.
 
 ch_utils
 Utilities for Chrono multicore collision detection.
 
 utils
 Collision detection utility functions.
 

Classes

class  cbtArcArcCollisionAlgorithm
 Custom override of the default Bullet algorithm for 2Darc-2Darc collision. More...
 
class  cbtArcSegmentCollisionAlgorithm
 Custom override of the default Bullet algorithm for 2Dsegment-2Darc collision. More...
 
class  cbtCapsuleBoxCollisionAlgorithm
 Custom override of the default Bullet algorithm for capsule-box collision. More...
 
class  cbtCEtriangleShapeCollisionAlgorithm
 Custom override of the default Bullet algorithm for triangle-triangle collision. More...
 
class  cbtCylshellBoxCollisionAlgorithm
 Custom override of the default Bullet algorithm for cylshell-box collision. More...
 
class  cbtSphereCylinderCollisionAlgorithm
 Custom override of the default Bullet algorithm for sphere-cylinder collision. More...
 
class  ChBroadphase
 Class for performing broad-phase collision detection. More...
 
class  ChCollisionData
 Global data for the custom Chrono multicore collision system. More...
 
class  ChCollisionInfo
 Class defining basic geometric information for collision pairs. More...
 
class  ChCollisionModel
 Class defining the geometric model for collision detection. More...
 
class  ChCollisionModelBullet
 Class defining the Bullet geometric model for collision detection. More...
 
class  ChCollisionModelChrono
 Geometric model for the custom multicore Chrono collision system. More...
 
class  ChCollisionModelDistributed
 This class adds the ability to track the axis-aligned bounding box for the entire model so that an entire body can be classified by which sub-domains it intersects. More...
 
class  ChCollisionPair
 Class for storing information about a collision point. More...
 
class  ChCollisionShape
 Class defining a collision shape. More...
 
class  ChCollisionShapeBullet
 Collision shape for Bullet collision detection system. More...
 
class  ChCollisionShapeChrono
 Collision shape for the custom multicore Chrono collision system. More...
 
class  ChCollisionSystem
 Base class for generic collision engine. More...
 
class  ChCollisionSystemBullet
 Collision engine based on the Bullet library. More...
 
class  ChCollisionSystemBulletMulticore
 Collision engine based on the 'Bullet' library. More...
 
class  ChCollisionSystemChrono
 Chrono custom multicore collision system. More...
 
class  ChCollisionSystemChronoMulticore
 Chrono custom multicore collision system. More...
 
class  ChCollisionSystemDistributed
 This class scaffolds on ChCollisionSystemChronoMulticore in order to manage collision data for the system during MPI exchanges. More...
 
class  ChConvexDecomposition
 Base interface class for convex decomposition. More...
 
class  ChConvexDecompositionHACD
 Class for wrapping the HACD convex decomposition code by Khaled Mamou. More...
 
class  ChConvexDecompositionHACDv2
 Class for wrapping the HACD convex decomposition code revisited by John Ratcliff. More...
 
class  ChNarrowphase
 Class for performing narrowphase collision detection. More...
 
class  ChRayTest
 Class for performing ray intersection tests. More...
 
class  ConvexBase
 Base class for convex contact shapes. More...
 
class  ConvexShape
 Convex contact shape. More...
 
class  ConvexShapeCustom
 Custom contact shape. More...
 
class  ConvexShapeSphere
 Sphere contact shape. More...
 
class  ConvexShapeTetrahedron
 Tetrahedron contact shape. More...
 
class  ConvexShapeTriangle
 Triangle contact shape. More...
 
struct  shape_container
 Structure of arrays containing rigid collision shape information. More...
 
struct  state_container
 Structure of arrays containing state data. More...
 

Typedefs

typedef thrust::pair< real3, real3bbox
 
typedef int shape_type
 Readibility type definition.
 

Enumerations

enum  ChCollisionSystemType { ChCollisionSystemType::BULLET, ChCollisionSystemType::CHRONO, ChCollisionSystemType::OTHER }
 Collision engine type. More...
 

Functions

int addContactPoint (const cbtVector3 &pc, int iface, const cbtVector3 &hdims, const cbtTransform &X_box, cbtManifoldResult *resultOut)
 
int addContactPoint (const cbtVector3 &p, const cbtVector3 &c, const cbtVector3 &a, const cbtScalar h, const cbtScalar r, const cbtTransform &X_box, cbtManifoldResult *resultOut)
 
void TransformToCOG (ChBody *body, const ChVector<> &pos, const ChMatrix33<> &rot, ChFrame<> &frame)
 
void DrawHemisphere (ChCollisionSystem::VisualizationCallback *vis, const ChCoordsys<> &csys, double radius, const ChColor &color)
 
void DrawSphere (ChCollisionSystem::VisualizationCallback *vis, const ChCoordsys<> &csys, double radius, const ChColor &color)
 
void DrawBox (ChCollisionSystem::VisualizationCallback *vis, const ChCoordsys<> &csys, const ChVector<> &hdim, const ChColor &color)
 
void DrawCylinder (ChCollisionSystem::VisualizationCallback *vis, const ChCoordsys<> &csys, double radius, double hlen, const ChColor &color)
 
void DrawCone (ChCollisionSystem::VisualizationCallback *vis, const ChCoordsys<> &csys, double radius, double hlen, const ChColor &color)
 
void DrawCapsule (ChCollisionSystem::VisualizationCallback *vis, const ChCoordsys<> &csys, double radius, double hlen, const ChColor &color)
 
int GetIndex (ChVector< double > vertex, std::vector< ChVector< double > > &vertexOUT, double tol)
 
void FuseMesh (std::vector< ChVector< double > > &vertexIN, std::vector< ChVector< int > > &triangleIN, std::vector< ChVector< double > > &vertexOUT, std::vector< ChVector< int > > &triangleOUT, double tol=0.0)
 
int GridCoord (real x, real inv_bin_edge, real minimum)
 
int GridHash (int x, int y, int z, const vec3 &bins_per_axis)
 
real3 GetCenter (const ConvexBase *Shape)
 
void FindCenter (const ConvexBase *shapeA, const ConvexBase *shapeB, simplex &portal)
 
void MPRSupport (const ConvexBase *shapeA, const ConvexBase *shapeB, const real3 &n, const real &envelope, support &s)
 
void ExpandPortal (simplex &portal)
 
real3 PortalDir (const simplex &portal)
 
void FindPos (const simplex &portal, real3 &point)
 
int portalEncapsulesOrigin (const simplex &portal, const real3 &n)
 
int portalCanEncapsuleOrigin (const simplex &portal, const real3 &n)
 
int portalReachTolerance (const simplex &portal, const real3 &n)
 
real Vec3Dist2 (const real3 a, const real3 b)
 
real Vec3PointSegmentDist2 (const real3 &P, const real3 &x0, const real3 &b, real3 &witness)
 
real Vec3PointSegmentDist2 (const real3 &P, const real3 &x0, const real3 &b)
 
real Vec3PointTriDist2 (const real3 &P, const real3 &x0, const real3 &B, const real3 &C, real3 &witness)
 
real Vec3PointTriDist2 (const real3 &P, const real3 &V0, const real3 &V1, const real3 &V2)
 
void FindPenetration (const ConvexBase *shapeA, const ConvexBase *shapeB, const real &envelope, simplex &portal, real &depth, real3 &n, real3 &point)
 
void FindPenetrationTouch (const ConvexBase *shapeA, const ConvexBase *shapeB, simplex &portal, real &depth, real3 &n, real3 &point)
 
void FindPenetrationSegment (const ConvexBase *shapeA, const ConvexBase *shapeB, simplex &portal, real &depth, real3 &n, real3 &point)
 
bool FindPortal (const ConvexBase *shapeA, const ConvexBase *shapeB, const real &envelope, simplex &portal, real3 &n)
 
int DiscoverPortal (const ConvexBase *shapeA, const ConvexBase *shapeB, const real &envelope, simplex &portal)
 
int RefinePortal (const ConvexBase *shapeA, const ConvexBase *shapeB, const real &envelope, simplex &portal)
 
bool MPRContact (const ConvexBase *shapeA, const ConvexBase *shapeB, const real &envelope, real3 &returnNormal, real3 &point, real &depth)
 
void MPRGetPoints (const ConvexBase *shapeA, const ConvexBase *shapeB, const real &envelope, real3 &N, real3 p0, real3 &p1, real3 &p2)
 
bool sphere_sphere (const real3 &pos1, const real &radius1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
bool capsule_sphere (const real3 &pos1, const quaternion &rot1, const real &radius1, const real &hlen1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
bool cylinder_sphere (const real3 &pos1, const quaternion &rot1, const real &radius1, const real &hlen1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
bool roundedcyl_sphere (const real3 &pos1, const quaternion &rot1, const real &radius1, const real &hlen1, const real &srad1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
bool box_sphere (const real3 &pos1, const quaternion &rot1, const real3 &hdims1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
bool roundedbox_sphere (const real3 &pos1, const quaternion &rot1, const real3 &hdims1, const real &srad1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
bool triangle_sphere (const real3 &A1, const real3 &B1, const real3 &C1, const real3 &pos2, const real &radius2, const real &separation, real3 &norm, real &depth, real3 &pt1, real3 &pt2, real &eff_radius)
 
int capsule_capsule (const real3 &pos1, const quaternion &rot1, const real &radius1, const real &hlen1, const real3 &pos2, const quaternion &rot2, const real &radius2, const real &hlen2, const real &separation, real3 *norm, real *depth, real3 *pt1, real3 *pt2, real *eff_radius)
 
int box_capsule (const real3 &pos1, const quaternion &rot1, const real3 &hdims1, const real3 &pos2, const quaternion &rot2, const real &radius2, const real &hlen2, const real &separation, real3 *norm, real *depth, real3 *pt1, real3 *pt2, real *eff_radius)
 
int box_cylshell (const real3 &pos1, const quaternion &rot1, const real3 &hdims, const real3 &pos2, const quaternion &rot2, const real &radius, const real &hlen, const real &separation, real3 *norm, real *depth, real3 *pt1, real3 *pt2, real *eff_radius)
 
int box_box (const real3 &posT, const quaternion &rotT, const real3 &hdimsT, const real3 &posO, const quaternion &rotO, const real3 &hdimsO, const real &separation, real3 *norm, real *depth, real3 *ptT, real3 *ptO, real *eff_radius)
 
int triangle_box (const real3 &pos1, const quaternion &rot1, const real3 &hdims1, const real3 *v2, const real &separation, real3 *norm, real *depth, real3 *pt1, real3 *pt2, real *eff_radius)
 
bool sphere_ray (const real3 &pos, const real &radius, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool aabb_ray (const real3 &hdims, const real3 &start, const real3 &end, real &t, real3 &loc, real3 &normal)
 
bool box_ray (const real3 &pos, const quaternion &rot, const real3 &hdims, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool cylsurf_ray (const real &radius, const real &hlen, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool hemisphere_ray (int cap, const real &radius, const real &hlen, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool disk_ray (int cap, const real &radius, const real &hlen, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool capsule_ray (const real3 &pos, const quaternion &rot, const real &radius, const real &hlen, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool cylinder_ray (const real3 &pos, const quaternion &rot, const real &radius, const real &hlen, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 
bool triangle_ray (const real3 &A, const real3 &B, const real3 &C, const real3 &start, const real3 &end, real3 &normal, real &mindist2)
 

Variables

auto inverted
 

Variable Documentation

◆ inverted

auto chrono::collision::inverted
Initial value:
=
thrust::make_tuple(real3(+C_REAL_MAX, +C_REAL_MAX, +C_REAL_MAX), real3(-C_REAL_MAX, -C_REAL_MAX, -C_REAL_MAX), 0)