Contact information returned by collision.
More...
#include <coal/collision_data.h>
|
| 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 &pos_, const Vec3s &normal_, Scalar depth_) |
|
| Contact (const CollisionGeometry *o1_, const CollisionGeometry *o2_, int b1_, int b2_, const Vec3s &p1, const Vec3s &p2, const Vec3s &normal_, Scalar depth_) |
|
bool | operator< (const Contact &other) const |
|
bool | operator== (const Contact &other) const |
|
bool | operator!= (const Contact &other) const |
|
Scalar | getDistanceToCollision (const CollisionRequest &request) const |
|
|
const CollisionGeometry * | o1 |
| collision object 1 More...
|
|
const CollisionGeometry * | o2 |
| collision object 2 More...
|
|
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...
|
|
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...
|
|
std::array< Vec3s, 2 > | nearest_points |
| nearest points associated to this contact. More...
|
|
Vec3s | pos |
| contact position, in world space More...
|
|
Scalar | penetration_depth |
| penetration depth More...
|
|
|
static const int | NONE = -1 |
| invalid contact primitive information More...
|
|
Contact information returned by collision.
◆ Contact() [1/4]
coal::Contact::Contact |
( |
| ) |
|
|
inline |
◆ Contact() [2/4]
◆ Contact() [3/4]
◆ Contact() [4/4]
◆ getDistanceToCollision()
◆ operator!=()
bool coal::Contact::operator!= |
( |
const Contact & |
other | ) |
const |
|
inline |
◆ operator<()
bool coal::Contact::operator< |
( |
const Contact & |
other | ) |
const |
|
inline |
◆ operator==()
bool coal::Contact::operator== |
( |
const Contact & |
other | ) |
const |
|
inline |
◆ 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
◆ 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
◆ 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
.
◆ NONE
const int coal::Contact::NONE = -1 |
|
static |
invalid contact primitive information
◆ 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().
◆ o1
◆ o2
◆ penetration_depth
Scalar coal::Contact::penetration_depth |
◆ pos
contact position, in world space
The documentation for this struct was generated from the following file: