class for GJK algorithm  
 More...
#include <hpp/fcl/narrowphase/gjk.h>
 | 
|   | GJK (unsigned int max_iterations_, FCL_REAL tolerance_) | 
|   | 
| void  | initialize () | 
|   | 
| 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...
  | 
|   | 
| 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...
  | 
|   | 
| bool  | encloseOrigin () | 
|   | whether the simplex enclose the origin  More...
  | 
|   | 
| Simplex *  | getSimplex () const | 
|   | get the underlying simplex using in GJK, can be used for cache in next iteration  More...
  | 
|   | 
| bool  | hasClosestPoints () | 
|   | Tells whether the closest points are available.  More...
  | 
|   | 
| bool  | hasPenetrationInformation (const MinkowskiDiff &shape) | 
|   | 
| bool  | getClosestPoints (const MinkowskiDiff &shape, Vec3f &w0, Vec3f &w1) | 
|   | 
| Vec3f  | getGuessFromSimplex () const | 
|   | get the guess from current simplex  More...
  | 
|   | 
| void  | setDistanceEarlyBreak (const FCL_REAL &dup) | 
|   | Distance threshold for early break. GJK stops when it proved the distance is more than this threshold.  More...
  | 
|   | 
| 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...
  | 
|   | 
| size_t  | getIterations () | 
|   | Get GJK number of iterations.  More...
  | 
|   | 
| FCL_REAL  | getTolerance () | 
|   | Get GJK tolerance.  More...
  | 
|   | 
class for GJK algorithm 
- Note
 - The computations are performed in the frame of the first shape. 
 
 
◆ vertex_id_t
◆ Status
Status of the GJK algorithm: Valid: GJK converged and the shapes are not in collision. Inside: GJK converged and the shapes are in collision. Failed: GJK did not converge. 
| Enumerator | 
|---|
| Valid  |  | 
| Inside  |  | 
| Failed  |  | 
| EarlyStopped  |  | 
 
 
◆ GJK()
  
  
      
        
          | hpp::fcl::details::GJK::GJK  | 
          ( | 
          unsigned int  | 
          max_iterations_,  | 
         
        
           | 
           | 
          FCL_REAL  | 
          tolerance_  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
- Parameters
 - 
  
    | max_iterations_ | number of iteration before GJK returns failure.  | 
    | tolerance_ | precision of the algorithm. | 
  
   
The tolerance argument is useful for continuous shapes and for polyhedron with some vertices closer than this threshold.
Suggested values are 100 iterations and a tolerance of 1e-6. 
 
 
◆ checkConvergence()
Convergence check used to stop GJK when shapes are not in collision. 
 
 
◆ encloseOrigin()
      
        
          | bool hpp::fcl::details::GJK::encloseOrigin  | 
          ( | 
           | ) | 
           | 
        
      
 
whether the simplex enclose the origin 
 
 
◆ evaluate()
GJK algorithm, given the initial value guess. 
 
 
◆ getClosestPoints()
Get the closest points on each object. 
- Returns
 - true on success 
 
 
 
◆ getGuessFromSimplex()
      
        
          | Vec3f hpp::fcl::details::GJK::getGuessFromSimplex  | 
          ( | 
           | ) | 
           const | 
        
      
 
get the guess from current simplex 
 
 
◆ getIterations()
  
  
      
        
          | size_t hpp::fcl::details::GJK::getIterations  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Get GJK number of iterations. 
 
 
◆ getSimplex()
  
  
      
        
          | Simplex* hpp::fcl::details::GJK::getSimplex  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inline   | 
  
 
get the underlying simplex using in GJK, can be used for cache in next iteration 
 
 
◆ getSupport()
apply the support function along a direction, the result is return in sv 
 
 
◆ getTolerance()
  
  
      
        
          | FCL_REAL hpp::fcl::details::GJK::getTolerance  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
◆ hasClosestPoints()
  
  
      
        
          | bool hpp::fcl::details::GJK::hasClosestPoints  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Tells whether the closest points are available. 
 
 
◆ hasPenetrationInformation()
  
  
      
        
          | bool hpp::fcl::details::GJK::hasPenetrationInformation  | 
          ( | 
          const MinkowskiDiff &  | 
          shape | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Tells whether the penetration information.
In such case, most indepth points and penetration depth can be retrieved from GJK. Calling EPA has an undefined behaviour. 
 
 
◆ initialize()
      
        
          | void hpp::fcl::details::GJK::initialize  | 
          ( | 
           | ) | 
           | 
        
      
 
 
◆ setDistanceEarlyBreak()
  
  
      
        
          | void hpp::fcl::details::GJK::setDistanceEarlyBreak  | 
          ( | 
          const FCL_REAL &  | 
          dup | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
Distance threshold for early break. GJK stops when it proved the distance is more than this threshold. 
- Note
 - The closest points will be erroneous in this case. If you want the closest points, set this to infinity (the default). 
 
 
 
◆ convergence_criterion
◆ convergence_criterion_type
◆ distance
      
        
          | FCL_REAL hpp::fcl::details::GJK::distance | 
        
      
 
The distance computed by GJK. The possible values are
- \( d = - R - 1 \) when a collision is detected and GJK cannot compute penetration informations.
 
- \( - R \le d \le 0 \) when a collision is detected and GJK can compute penetration informations.
 
- \( 0 < d \le d_{ub} \) when there is no collision and GJK can compute the closest points.
 
- \( d_{ub} < d \) when there is no collision and GJK cannot compute the closest points.
 
where \( d \) is the GJK::distance, \( R \) is the sum of the shape MinkowskiDiff::inflation and \( d_{ub} \) is the GJK::distance_upper_bound. 
 
 
◆ gjk_variant
◆ ray
      
        
          | Vec3f hpp::fcl::details::GJK::ray | 
        
      
 
 
◆ shape
◆ simplices
      
        
          | Simplex hpp::fcl::details::GJK::simplices[2] | 
        
      
 
 
◆ support_hint
The documentation for this struct was generated from the following file:
- include/hpp/fcl/narrowphase/gjk.h