Public Member Functions | Public Attributes | Static Public Attributes | List of all members
coal::Contact Struct Reference

Contact information returned by collision. More...

#include <collision_data.h>

Public Member Functions

 Contact ()
 Default constructor. More...
 
 Contact (const CollisionGeometry *o1_, const CollisionGeometry *o2_, int b1_, int b2_)
 
 Contact (const CollisionGeometry *o1_, const CollisionGeometry *o2_, int b1_, int b2_, const Vec3s &p1, const Vec3s &p2, const Vec3s &normal_, CoalScalar depth_)
 
 Contact (const CollisionGeometry *o1_, const CollisionGeometry *o2_, int b1_, int b2_, const Vec3s &pos_, const Vec3s &normal_, CoalScalar depth_)
 
CoalScalar getDistanceToCollision (const CollisionRequest &request) const
 
bool operator!= (const Contact &other) const
 
bool operator< (const Contact &other) const
 
bool operator== (const Contact &other) const
 

Public Attributes

int b1
 contact primitive in object 1 if object 1 is mesh or point cloud, it is the triangle or point id if object 1 is geometry shape, it is NONE (-1), if object 1 is octree, it is the id of the cell More...
 
int b2
 contact primitive in object 2 if object 2 is mesh or point cloud, it is the triangle or point id if object 2 is geometry shape, it is NONE (-1), if object 2 is octree, it is the id of the cell More...
 
std::array< Vec3s, 2 > nearest_points
 nearest points associated to this contact. More...
 
Vec3s normal
 contact normal, pointing from o1 to o2. The normal defined as the normalized separation vector: normal = (p2 - p1) / dist(o1, o2), where p1 = nearest_points[0] belongs to o1 and p2 = nearest_points[1] belongs to o2 and dist(o1, o2) is the signed distance between o1 and o2. The normal always points from o1 to o2. More...
 
const CollisionGeometryo1
 collision object 1 More...
 
const CollisionGeometryo2
 collision object 2 More...
 
CoalScalar penetration_depth
 penetration depth More...
 
Vec3s pos
 contact position, in world space More...
 

Static Public Attributes

static const int NONE = -1
 invalid contact primitive information More...
 

Detailed Description

Contact information returned by collision.

Definition at line 58 of file coal/collision_data.h.

Constructor & Destructor Documentation

◆ Contact() [1/4]

coal::Contact::Contact ( )
inline

Default constructor.

Definition at line 111 of file coal/collision_data.h.

◆ Contact() [2/4]

coal::Contact::Contact ( const CollisionGeometry o1_,
const CollisionGeometry o2_,
int  b1_,
int  b2_ 
)
inline

Definition at line 117 of file coal/collision_data.h.

◆ Contact() [3/4]

coal::Contact::Contact ( const CollisionGeometry o1_,
const CollisionGeometry o2_,
int  b1_,
int  b2_,
const Vec3s pos_,
const Vec3s normal_,
CoalScalar  depth_ 
)
inline

Definition at line 125 of file coal/collision_data.h.

◆ Contact() [4/4]

coal::Contact::Contact ( const CollisionGeometry o1_,
const CollisionGeometry o2_,
int  b1_,
int  b2_,
const Vec3s p1,
const Vec3s p2,
const Vec3s normal_,
CoalScalar  depth_ 
)
inline

Definition at line 137 of file coal/collision_data.h.

Member Function Documentation

◆ getDistanceToCollision()

CoalScalar coal::Contact::getDistanceToCollision ( const CollisionRequest request) const
inline

Definition at line 384 of file coal/collision_data.h.

◆ operator!=()

bool coal::Contact::operator!= ( const Contact other) const
inline

Definition at line 162 of file coal/collision_data.h.

◆ operator<()

bool coal::Contact::operator< ( const Contact other) const
inline

Definition at line 149 of file coal/collision_data.h.

◆ operator==()

bool coal::Contact::operator== ( const Contact other) const
inline

Definition at line 154 of file coal/collision_data.h.

Member Data Documentation

◆ b1

int coal::Contact::b1

contact primitive in object 1 if object 1 is mesh or point cloud, it is the triangle or point id if object 1 is geometry shape, it is NONE (-1), if object 1 is octree, it is the id of the cell

Definition at line 69 of file coal/collision_data.h.

◆ b2

int coal::Contact::b2

contact primitive in object 2 if object 2 is mesh or point cloud, it is the triangle or point id if object 2 is geometry shape, it is NONE (-1), if object 2 is octree, it is the id of the cell

Definition at line 75 of file coal/collision_data.h.

◆ nearest_points

std::array<Vec3s, 2> coal::Contact::nearest_points

nearest points associated to this contact.

Note
Also referred as "witness points" in other collision libraries. The points p1 = nearest_points[0] and p2 = nearest_points[1] verify the property that dist(o1, o2) * (p1 - p2) is the separation vector between o1 and o2, with dist(o1, o2) being the signed distance separating o1 from o2. See DistanceResult::normal for the definition of the separation vector. If o1 and o2 have multiple contacts, the nearest_points are associated with the contact which has the greatest penetration depth. TODO (louis): rename nearest_points to witness_points.

Definition at line 99 of file coal/collision_data.h.

◆ NONE

const int coal::Contact::NONE = -1
static

invalid contact primitive information

Definition at line 108 of file coal/collision_data.h.

◆ normal

Vec3s coal::Contact::normal

contact normal, pointing from o1 to o2. The normal defined as the normalized separation vector: normal = (p2 - p1) / dist(o1, o2), where p1 = nearest_points[0] belongs to o1 and p2 = nearest_points[1] belongs to o2 and dist(o1, o2) is the signed distance between o1 and o2. The normal always points from o1 to o2.

Note
The separation vector is the smallest vector such that if o1 is translated by it, o1 and o2 are in touching contact (they share at least one contact point but have a zero intersection volume). If the shapes overlap, dist(o1, o2) = -((p2-p1).norm()). Otherwise, dist(o1, o2) = (p2-p1).norm().

Definition at line 88 of file coal/collision_data.h.

◆ o1

const CollisionGeometry* coal::Contact::o1

collision object 1

Definition at line 60 of file coal/collision_data.h.

◆ o2

const CollisionGeometry* coal::Contact::o2

collision object 2

Definition at line 63 of file coal/collision_data.h.

◆ penetration_depth

CoalScalar coal::Contact::penetration_depth

penetration depth

Definition at line 105 of file coal/collision_data.h.

◆ pos

Vec3s coal::Contact::pos

contact position, in world space

Definition at line 102 of file coal/collision_data.h.


The documentation for this struct was generated from the following file:


hpp-fcl
Author(s):
autogenerated on Sat Nov 23 2024 03:45:00