collision detector based on SSV(Sphere Swept Volume) More...
#include <SSVTreeCollider.h>
Public Member Functions | |
bool | Collide (BVTCache &cache, double tolerance, const Matrix4x4 *world0=null, const Matrix4x4 *world1=null) |
detect collision between links. | |
bool | Distance (BVTCache &cache, float &minD, Point &point0, Point &point1, const Matrix4x4 *world0=null, const Matrix4x4 *world1=null) |
compute the minimum distance and the closest points | |
SSVTreeCollider () | |
constructor | |
~SSVTreeCollider () | |
destructor | |
Protected Member Functions | |
float | PrimDist (udword id0, udword id1, Point &point0, Point &point1) |
compute distance between primitives(triangles) | |
float | SsvSsvDist (const AABBCollisionNode *b0, const AABBCollisionNode *b1) |
compute distance between SSV(Swept Sphere Volume)s | |
Private Member Functions | |
bool | _Collide (const AABBCollisionNode *b0, const AABBCollisionNode *b1, double tolerance) |
void | _Distance (const AABBCollisionNode *b0, const AABBCollisionNode *b1, float &minD, Point &point0, Point &point1) |
bool | Collide (const AABBCollisionTree *tree0, const AABBCollisionTree *tree1, const Matrix4x4 *world0, const Matrix4x4 *world1, Pair *cache, double tolerance) |
void | Distance (const AABBCollisionTree *tree0, const AABBCollisionTree *tree1, const Matrix4x4 *world0, const Matrix4x4 *world1, Pair *cache, float &minD, Point &point0, Point &point1) |
float | LssLssDist (float r0, const Point &point0, const Point &point1, float r1, const Point &point2, const Point &point3) |
compute distance between LSS(Line Swept Sphere)s | |
float | LssPssDist (float r0, const Point &point0, const Point &point1, float r1, const Point ¢er0) |
compute distance between PSS(Point Swept Sphere) and LSS(Line Swept Sphere) | |
float | PssLssDist (float r0, const Point ¢er0, float r1, const Point &point0, const Point &point1) |
compute distance between PSS(Point Swept Sphere) and LSS(Line Swept Sphere) | |
float | PssPssDist (float r0, const Point ¢er0, float r1, const Point ¢er1) |
compute distance between PSS(Point Swept Sphere) |
collision detector based on SSV(Sphere Swept Volume)
Definition at line 12 of file SSVTreeCollider.h.
constructor
Definition at line 7 of file SSVTreeCollider.cpp.
SSVTreeCollider::~SSVTreeCollider | ( | ) | [inline] |
destructor
Definition at line 22 of file SSVTreeCollider.h.
bool SSVTreeCollider::_Collide | ( | const AABBCollisionNode * | b0, |
const AABBCollisionNode * | b1, | ||
double | tolerance | ||
) | [private] |
Definition at line 205 of file SSVTreeCollider.cpp.
void SSVTreeCollider::_Distance | ( | const AABBCollisionNode * | b0, |
const AABBCollisionNode * | b1, | ||
float & | minD, | ||
Point & | point0, | ||
Point & | point1 | ||
) | [private] |
Definition at line 166 of file SSVTreeCollider.cpp.
bool SSVTreeCollider::Collide | ( | BVTCache & | cache, |
double | tolerance, | ||
const Matrix4x4 * | world0 = null , |
||
const Matrix4x4 * | world1 = null |
||
) |
detect collision between links.
cache | |
tolerance | If distance between links is smaller than this value, it is regarded as collision |
world0 | transformation of the first link |
world1 | transformation of the second link |
Definition at line 72 of file SSVTreeCollider.cpp.
bool SSVTreeCollider::Collide | ( | const AABBCollisionTree * | tree0, |
const AABBCollisionTree * | tree1, | ||
const Matrix4x4 * | world0, | ||
const Matrix4x4 * | world1, | ||
Pair * | cache, | ||
double | tolerance | ||
) | [private] |
Definition at line 89 of file SSVTreeCollider.cpp.
bool SSVTreeCollider::Distance | ( | BVTCache & | cache, |
float & | minD, | ||
Point & | point0, | ||
Point & | point1, | ||
const Matrix4x4 * | world0 = null , |
||
const Matrix4x4 * | world1 = null |
||
) |
compute the minimum distance and the closest points
cache | |
minD | the minimum distance |
point0 | the closest point on the first link |
point1 | the closest point on the second link |
world0 | transformation of the first link |
world1 | transformation of the second link |
Definition at line 11 of file SSVTreeCollider.cpp.
void SSVTreeCollider::Distance | ( | const AABBCollisionTree * | tree0, |
const AABBCollisionTree * | tree1, | ||
const Matrix4x4 * | world0, | ||
const Matrix4x4 * | world1, | ||
Pair * | cache, | ||
float & | minD, | ||
Point & | point0, | ||
Point & | point1 | ||
) | [private] |
Definition at line 30 of file SSVTreeCollider.cpp.
float SSVTreeCollider::LssLssDist | ( | float | r0, |
const Point & | point0, | ||
const Point & | point1, | ||
float | r1, | ||
const Point & | point2, | ||
const Point & | point3 | ||
) | [private] |
compute distance between LSS(Line Swept Sphere)s
r0 | radius of the first LSS |
point0 | one of end points of the first line segment |
point1 | the other end points of the first line segment |
r1 | radius of the second LSS |
point2 | one of end points of the second line segment |
point3 | the other end points of the second line segment |
Definition at line 157 of file SSVTreeCollider.cpp.
float SSVTreeCollider::LssPssDist | ( | float | r0, |
const Point & | point0, | ||
const Point & | point1, | ||
float | r1, | ||
const Point & | center0 | ||
) | [private] |
compute distance between PSS(Point Swept Sphere) and LSS(Line Swept Sphere)
r0 | radius of the PSS |
point0 | one of end points of the line segment |
point1 | the other end points of the line segment |
r1 | radius of the LSS |
center0 | center of the PSS |
Definition at line 148 of file SSVTreeCollider.cpp.
float SSVTreeCollider::PrimDist | ( | udword | id0, |
udword | id1, | ||
Point & | point0, | ||
Point & | point1 | ||
) | [protected] |
compute distance between primitives(triangles)
id0 | index of the first primitive |
id1 | index of the second primitive |
point0 | the closest point on the first primitive |
point1 | the closest point on the second primitive |
Definition at line 242 of file SSVTreeCollider.cpp.
float SSVTreeCollider::PssLssDist | ( | float | r0, |
const Point & | center0, | ||
float | r1, | ||
const Point & | point0, | ||
const Point & | point1 | ||
) | [private] |
compute distance between PSS(Point Swept Sphere) and LSS(Line Swept Sphere)
r0 | radius of the PSS |
center0 | center of the PSS |
r1 | radius of the LSS |
point0 | one of end points of the line segment |
point1 | the other end points of the line segment |
Definition at line 140 of file SSVTreeCollider.cpp.
float SSVTreeCollider::PssPssDist | ( | float | r0, |
const Point & | center0, | ||
float | r1, | ||
const Point & | center1 | ||
) | [private] |
compute distance between PSS(Point Swept Sphere)
r0 | radius of the first sphere |
center0 | center of the first sphere |
r1 | radius of the first sphere |
center1 | center of the first sphere |
Definition at line 133 of file SSVTreeCollider.cpp.
float SSVTreeCollider::SsvSsvDist | ( | const AABBCollisionNode * | b0, |
const AABBCollisionNode * | b1 | ||
) | [protected] |
compute distance between SSV(Swept Sphere Volume)s
b0 | collision node from the left tree |
b1 | collision node from the right tree |
return | distance |
Definition at line 110 of file SSVTreeCollider.cpp.