|
bool | checkConvergence (const Vec3f &w, const FCL_REAL &rl, FCL_REAL &alpha, const FCL_REAL &omega) |
| Convergence check used to stop GJK when shapes are not in collision. More...
|
|
bool | encloseOrigin () |
| whether the simplex enclose the origin More...
|
|
Status | evaluate (const MinkowskiDiff &shape, const Vec3f &guess, const support_func_guess_t &supportHint=support_func_guess_t::Zero()) |
| GJK algorithm, given the initial value guess. More...
|
|
bool | getClosestPoints (const MinkowskiDiff &shape, Vec3f &w0, Vec3f &w1) |
|
Vec3f | getGuessFromSimplex () const |
| get the guess from current simplex More...
|
|
size_t | getIterations () |
| Get GJK number of iterations. More...
|
|
Simplex * | getSimplex () const |
| get the underlying simplex using in GJK, can be used for cache in next iteration More...
|
|
void | getSupport (const Vec3f &d, bool dIsNormalized, SimplexV &sv, support_func_guess_t &hint) const |
| apply the support function along a direction, the result is return in sv More...
|
|
FCL_REAL | getTolerance () |
| Get GJK tolerance. More...
|
|
| GJK (unsigned int max_iterations_, FCL_REAL tolerance_) |
|
bool | hasClosestPoints () |
| Tells whether the closest points are available. More...
|
|
bool | hasPenetrationInformation (const MinkowskiDiff &shape) |
|
void | initialize () |
|
void | setDistanceEarlyBreak (const FCL_REAL &dup) |
| Distance threshold for early break. GJK stops when it proved the distance is more than this threshold. More...
|
|
|
void | appendVertex (Simplex &simplex, const Vec3f &v, bool isNormalized, support_func_guess_t &hint) |
| append one vertex to the simplex More...
|
|
bool | projectLineOrigin (const Simplex ¤t, Simplex &next) |
| Project origin (0) onto line a-b For a detailed explanation of how to efficiently project onto a simplex, check out Ericson's book, page 403: https://realtimecollisiondetection.net/ To sum up, a simplex has a voronoi region for each feature it has (vertex, edge, face). We find the voronoi region in which the origin lies and stop as soon as we find it; we then project onto it and return the result. We start by voronoi regions generated by vertices then move on to edges then faces. Checking voronoi regions is done using simple dot products. Moreover, edges voronoi checks reuse computations of vertices voronoi checks. The same goes for faces which reuse checks from edges. Finally, in addition to the voronoi procedure, checks relying on the order of construction. More...
|
|
bool | projectTetrahedraOrigin (const Simplex ¤t, Simplex &next) |
| Project origin (0) onto tetrahedron a-b-c-d See projectLineOrigin for an explanation on simplex projections. More...
|
|
bool | projectTriangleOrigin (const Simplex ¤t, Simplex &next) |
| Project origin (0) onto triangle a-b-c See projectLineOrigin for an explanation on simplex projections. More...
|
|
void | removeVertex (Simplex &simplex) |
| discard one vertex from the simplex More...
|
|
class for GJK algorithm
- Note
- The computations are performed in the frame of the first shape.
Definition at line 141 of file gjk.h.
bool hpp::fcl::details::GJK::projectLineOrigin |
( |
const Simplex & |
current, |
|
|
Simplex & |
next |
|
) |
| |
|
private |
Project origin (0) onto line a-b For a detailed explanation of how to efficiently project onto a simplex, check out Ericson's book, page 403: https://realtimecollisiondetection.net/ To sum up, a simplex has a voronoi region for each feature it has (vertex, edge, face). We find the voronoi region in which the origin lies and stop as soon as we find it; we then project onto it and return the result. We start by voronoi regions generated by vertices then move on to edges then faces. Checking voronoi regions is done using simple dot products. Moreover, edges voronoi checks reuse computations of vertices voronoi checks. The same goes for faces which reuse checks from edges. Finally, in addition to the voronoi procedure, checks relying on the order of construction.
Definition at line 974 of file src/narrowphase/gjk.cpp.