chrono::collision::ChModelSphereSetBody Class Reference

Description

Class for the collision model to be used in ChIndexedParticles shapes, that are collections of point-like nodes (each with 3 DOFs) using features of the Bullet library.

#include <ChCModelSphereSetBody.h>

Inheritance diagram for chrono::collision::ChModelSphereSetBody:
Collaboration diagram for chrono::collision::ChModelSphereSetBody:

Public Member Functions

ChBodyGetBody () const
 Gets the pointer to the client owner rigid body.
 
void SetBody (ChBody *mbo)
 Sets the pointer to the client owner rigid body.
 
virtual void SyncPosition ()
 Sets the position and orientation of the collision model as the current position of the corresponding ChBody.
 
virtual ChPhysicsItemGetPhysicsItem ()
 Gets the pointer to the client owner ChPhysicsItem.
 
- Public Member Functions inherited from chrono::collision::ChModelSphereSet
virtual int ClearModel ()
 Deletes all inserted geometries. More...
 
virtual int BuildModel ()
 Builds the BV hierarchy. More...
 
virtual bool AddSphere (double radius, ChVector<> *pos=0)
 Add a sphere shape to this model, for collision purposes.
 
virtual bool AddCompoundBody (int numSpheres, std::vector< ChVector< float > > *posLocal, std::vector< float > *rads)
 
virtual bool AddEllipsoid (double rx, double ry, double rz, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 Add an ellipsoid shape to this model, for collision purposes.
 
virtual bool AddBox (double hx, double hy, double hz, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 Add a box shape to this model, for collision purposes.
 
virtual bool AddCylinder (double rx, double rz, double hy, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 Add a cylinder to this model (default axis on Y direction), for collision purposes.
 
virtual bool AddConvexHull (std::vector< ChVector< double > > &pointlist, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 Add a convex hull to this model. More...
 
virtual bool AddTriangleMesh (const geometry::ChTriangleMesh &trimesh, bool is_static, bool is_convex, ChVector<> *pos=0, ChMatrix33<> *rot=0, double sphereswept_thickness=0.0)
 Add a triangle mesh to this model, passing a triangle mesh (do not delete the triangle mesh until the collision model, because depending on the implementation of inherited ChCollisionModel classes, maybe the triangle is referenced via a striding interface or just copied) Note: if possible, in sake of high performance, avoid triangle meshes and prefer simplified representations as compounds of convex shapes of boxes/spheres/etc. More...
 
virtual bool AddTriangleMeshConcave (const geometry::ChTriangleMesh &trimesh, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 CUSTOM for this class only: add a concave triangle mesh that will be managed by GImpact mesh-mesh algorithm. More...
 
virtual bool AddTriangleMeshConcaveDecomposed (ChConvexDecomposition &mydecomposition, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 CUSTOM for this class only: add a concave triangle mesh that will be decomposed into a compound of convex shapes. More...
 
virtual bool AddBarrel (double Y_low, double Y_high, double R_vert, double R_hor, double R_offset, ChVector<> *pos=0, ChMatrix33<> *rot=0)
 Add a barrel-like shape to this model (main axis on Y direction), for collision purposes. More...
 
virtual bool AddCopyOfAnotherModel (ChCollisionModel *another)
 Add all shapes already contained in another model. More...
 
virtual void SetFamily (int mfamily)
 By default, all collision objects belong to family n.0, but you can set family in range 0..15. More...
 
virtual int GetFamily ()
 
virtual void SetFamilyMaskNoCollisionWithFamily (int mfamily)
 By default, family mask is all turned on, so all families can collide with this object, but you can turn on-off some bytes of this mask so that some families do not collide. More...
 
virtual void SetFamilyMaskDoCollisionWithFamily (int mfamily)
 
virtual bool GetFamilyMaskDoesCollisionWithFamily (int mfamily)
 Tells if the family mask of this collision object allows for the collision with another collision object belonging to a given family. More...
 
virtual void GetAABB (ChVector<> &bbmin, ChVector<> &bbmax) const
 Returns the axis aligned bounding box (AABB) of the collision model, i.e. More...
 
virtual void StreamIN (ChStreamInBinary &mstream)
 Method to allow deserializing a persistent binary archive (ex: a file) into transient data. More...
 
virtual void StreamOUT (ChStreamOutBinary &mstream)
 Method to allow serializing transient data into a persistent binary archive (ex: a file). More...
 
void GetGlobalSpherePos (thrust::host_vector< ChVector< float > > &globalPos)
 Gets the global positions of the spheres.
 
void GetSphereRad (thrust::host_vector< float > &rad)
 Gets the global positions of the spheres.
 
uint getNSpheres ()
 
- Public Member Functions inherited from chrono::collision::ChCollisionModel
virtual bool AddSphere (double radius, const ChVector<> &pos=ChVector<>())=0
 Add a sphere shape to this model, for collision purposes. More...
 
virtual bool AddEllipsoid (double rx, double ry, double rz, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add an ellipsoid shape to this model, for collision purposes. More...
 
virtual bool AddBox (double hx, double hy, double hz, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a box shape to this model, for collision purposes. More...
 
virtual bool AddCylinder (double rx, double rz, double hy, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a cylinder to this model (default axis on Y direction), for collision purposes.
 
virtual bool AddCone (double rx, double rz, double hy, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a cone to this model (default axis on Y direction), for collision purposes.
 
virtual bool AddCapsule (double radius, double hlen, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a capsule to this model (default axis in Y direction), for collision purposes. More...
 
virtual bool AddRoundedBox (double hx, double hy, double hz, double sphere_r, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a rounded box shape to this model, for collision purposes.
 
virtual bool AddRoundedCylinder (double rx, double rz, double hy, double sphere_r, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a rounded cylinder to this model (default axis on Y direction), for collision purposes.
 
virtual bool AddRoundedCone (double rx, double rz, double hy, double sphere_r, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a rounded cone to this model (default axis on Y direction), for collision purposes.
 
virtual bool AddConvexHull (std::vector< ChVector< double > > &pointlist, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a convex hull to this model. More...
 
virtual bool AddTriangleMesh (const geometry::ChTriangleMesh &trimesh, bool is_static, bool is_convex, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1), double sphereswept_thickness=0.0)=0
 Add a triangle mesh to this model, passing a triangle mesh (do not delete the triangle mesh until the collision model, because depending on the implementation of inherited ChCollisionModel classes, maybe the triangle is referenced via a striding interface or just copied) Note: if possible, in sake of high performance, avoid triangle meshes and prefer simplified representations as compounds of convex shapes of boxes/spheres/etc. More...
 
virtual bool AddBarrel (double Y_low, double Y_high, double R_vert, double R_hor, double R_offset, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))=0
 Add a barrel-like shape to this model (main axis on Y direction), for collision purposes. More...
 
virtual bool Add2Dpath (geometry::ChLinePath &mpath, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1), const double thickness=0.001)
 Add a 2D closed line, defined on the XY plane passing by pos and aligned as rot, that defines a 2D collision shape that will collide with another 2D line of the same type if aligned on the same plane. More...
 
virtual bool AddPoint (double radius=0, const ChVector<> &pos=ChVector<>())
 Add a point-like sphere, that will collide with other geometries, but won't ever create contacts between them. More...
 
virtual bool AddConvexHullsFromFile (ChStreamInAscii &mstream, const ChVector<> &pos=ChVector<>(), const ChMatrix33<> &rot=ChMatrix33<>(1))
 Add a cluster of convex hulls by a '.chulls' file description. More...
 
ChContactableGetContactable ()
 Gets the pointer to the contactable object.
 
virtual void SetContactable (ChContactable *mc)
 Sets the pointer to the contactable object. More...
 
virtual short int GetFamilyGroup () const
 Return the collision family group of this model. More...
 
virtual void SetFamilyGroup (short int group)
 Set the collision family group of this model. More...
 
virtual short int GetFamilyMask () const
 Return the collision mask for this model. More...
 
virtual void SetFamilyMask (short int mask)
 Set the collision mask for this model. More...
 
virtual void SetSafeMargin (double amargin)
 Sets the suggested collision 'inward safe margin' for the shapes to be added from now on, using the AddBox, AddCylinder etc (where, if this margin is too high for some thin or small shapes, it may be clamped). More...
 
virtual float GetSafeMargin ()
 Returns the inward safe margin (see SetSafeMargin() )
 
virtual void SetEnvelope (double amargin)
 Sets the suggested collision outward 'envelope' (used from shapes added, from now on, to this collision model). More...
 
virtual float GetEnvelope ()
 Returns the outward safe margin (see SetEnvelope() )
 
virtual void ArchiveOUT (ChArchiveOut &marchive)
 
virtual void ArchiveIN (ChArchiveIn &marchive)
 Method to allow de serialization of transient data from archives.
 

Additional Inherited Members

- Static Public Member Functions inherited from chrono::collision::ChCollisionModel
static void SetDefaultSuggestedEnvelope (double menv)
 Using this function BEFORE you start creating collision shapes, it will make all following collision shapes to take this collision envelope (safe outward layer) as default. More...
 
static void SetDefaultSuggestedMargin (double mmargin)
 Using this function BEFORE you start creating collision shapes, it will make all following collision shapes to take this collision margin (inward penetration layer) as default. More...
 
static double GetDefaultSuggestedEnvelope ()
 
static double GetDefaultSuggestedMargin ()
 
- Protected Member Functions inherited from chrono::collision::ChCollisionModel
virtual float GetSuggestedFullMargin ()
 
- Protected Attributes inherited from chrono::collision::ChModelSphereSet
uint nSpheres
 
thrust::host_vector< ChVector< float > > sphPosLocal
 
thrust::host_vector< ChVector< float > > sphPosGlobal
 
thrust::host_vector< float > sphRad
 
ChVector< float > myBBminLocal
 
ChVector< float > myBBmaxLocal
 
ChVector< float > myBBminGlobal
 
ChVector< float > myBBmaxGlobal
 
int colFam
 
int noCollWith
 
- Protected Attributes inherited from chrono::collision::ChCollisionModel
float model_envelope
 
float model_safe_margin
 
ChContactablemcontactable
 
short int family_group
 
short int family_mask