hpp-fcl  2.4.1
HPP fork of FCL -- The Flexible Collision Library
hpp::fcl::GJKSolver Struct Reference

collision and distance solver based on GJK algorithm implemented in fcl (rewritten the code from the GJK in bullet) More...

#include <hpp/fcl/narrowphase/narrowphase.h>

Public Types

typedef Eigen::Array< FCL_REAL, 1, 2 > Array2d
 

Public Member Functions

template<typename S1 , typename S2 >
void initialize_gjk (details::GJK &gjk, const details::MinkowskiDiff &shape, const S1 &s1, const S2 &s2, Vec3f &guess, support_func_guess_t &support_hint) const
 initialize GJK More...
 
template<typename S1 , typename S2 >
bool shapeIntersect (const S1 &s1, const Transform3f &tf1, const S2 &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 intersection checking between two shapes More...
 
template<typename S >
bool shapeTriangleInteraction (const S &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 intersection checking between one shape and a triangle with transformation More...
 
template<typename S1 , typename S2 >
bool shapeDistance (const S1 &s1, const Transform3f &tf1, const S2 &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 distance computation between two shapes More...
 
 GJKSolver ()
 Default constructor for GJK algorithm. More...
 
 GJKSolver (const DistanceRequest &request)
 Constructor from a DistanceRequest. More...
 
void set (const DistanceRequest &request)
 setter from a DistanceRequest More...
 
 GJKSolver (const CollisionRequest &request)
 Constructor from a CollisionRequest. More...
 
void set (const CollisionRequest &request)
 setter from a CollisionRequest More...
 
 GJKSolver (const GJKSolver &other)=default
 Copy constructor. More...
 
bool operator== (const GJKSolver &other) const
 
bool operator!= (const GJKSolver &other) const
 
template<>
bool shapeTriangleInteraction (const Sphere &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeTriangleInteraction (const Halfspace &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeTriangleInteraction (const Plane &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Cylinder &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Cone &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Cone &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Cylinder &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Cone &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Cone &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeDistance (const Capsule &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeDistance (const Box &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
HPP_FCL_DLLAPI bool shapeDistance (const Cylinder &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeDistance (const Capsule &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
template<>
bool shapeDistance (const TriangleP &s1, const Transform3f &tf1, const TriangleP &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 
Shape intersection specializations
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Sphere - Sphere collision. More...
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Sphere - Capsule collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Capsule - Sphere collision. More...
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Sphere - Halfspace collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Sphere collision. More...
 
template<>
bool shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Sphere - Plane collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Sphere collision. More...
 
template<>
bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 
template<>
bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Box - Halfspace collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Box collision. More...
 
template<>
bool shapeIntersect (const Box &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Box - Plane collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Box collision. More...
 
template<>
bool shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Capsule - Halfspace collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Capsule collision. More...
 
template<>
bool shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Capsule - Plane collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Capsule collision. More...
 
template<>
bool shapeIntersect (const Cylinder &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Cylinder - Halfspace collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Cylinder collision. More...
 
template<>
bool shapeIntersect (const Cylinder &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Cylinder - Plane collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Cylinder collision. More...
 
template<>
bool shapeIntersect (const Cone &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Cone - Halfspace collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Cone &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Cone collision. More...
 
template<>
bool shapeIntersect (const Cone &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Cone - Plane collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Cone &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Cone collision. More...
 
template<>
bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Halfspace collision. More...
 
template<>
bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Plane collision. More...
 
template<>
bool shapeIntersect (const Plane &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Plane - Halfspace collision. More...
 
template<>
HPP_FCL_DLLAPI bool shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance_lower_bound, bool enable_penetration, Vec3f *contact_points, Vec3f *normal) const
 Fast implementation for Halfspace - Plane collision. More...
 
Shape triangle interaction specializations
template<>
bool shapeTriangleInteraction (const Sphere &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Sphere -Triangle interaction. More...
 
template<>
bool shapeTriangleInteraction (const Halfspace &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Halfspace -Triangle interaction. More...
 
template<>
bool shapeTriangleInteraction (const Plane &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Plane -Triangle interaction. More...
 
Shape distance specializations
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Sphere - Box distance. More...
 
template<>
bool HPP_FCL_DLLAPI shapeDistance (const Box &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Box - Sphere distance. More...
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Sphere - Capsule distance. More...
 
template<>
bool HPP_FCL_DLLAPI shapeDistance (const Capsule &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Capsule - Sphere distance. More...
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Sphere - Cylinder distance. More...
 
template<>
bool HPP_FCL_DLLAPI shapeDistance (const Cylinder &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Cylinder - Sphere distance. More...
 
template<>
bool shapeDistance (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Sphere - Sphere distance. More...
 
template<>
bool shapeDistance (const Capsule &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for Capsule - Capsule distance. More...
 
template<>
bool shapeDistance (const TriangleP &s1, const Transform3f &tf1, const TriangleP &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal) const
 Fast implementation for TriangleP - TriangleP distance. More...
 

Public Attributes

unsigned int epa_max_face_num
 maximum number of simplex face used in EPA algorithm More...
 
unsigned int epa_max_vertex_num
 maximum number of simplex vertex used in EPA algorithm More...
 
unsigned int epa_max_iterations
 maximum number of iterations used for EPA iterations More...
 
FCL_REAL epa_tolerance
 the threshold used in EPA to stop iteration More...
 
FCL_REAL gjk_tolerance
 the threshold used in GJK to stop iteration More...
 
size_t gjk_max_iterations
 maximum number of iterations used for GJK iterations More...
 
bool enable_cached_guess
 Whether smart guess can be provided @Deprecated Use gjk_initial_guess instead. More...
 
Vec3f cached_guess
 smart guess More...
 
GJKInitialGuess gjk_initial_guess
 which warm start to use for GJK More...
 
GJKVariant gjk_variant
 Variant to use for the GJK algorithm. More...
 
GJKConvergenceCriterion gjk_convergence_criterion
 Criterion used to stop GJK. More...
 
GJKConvergenceCriterionType gjk_convergence_criterion_type
 Relative or absolute. More...
 
support_func_guess_t support_func_cached_guess
 smart guess for the support function More...
 
FCL_REAL distance_upper_bound
 Distance above which the GJK solver stoppes its computations and processes to an early stopping. The two witness points are incorrect, but with the guaranty that the two shapes have a distance greather than distance_upper_bound. More...
 

Detailed Description

collision and distance solver based on GJK algorithm implemented in fcl (rewritten the code from the GJK in bullet)

Member Typedef Documentation

◆ Array2d

typedef Eigen::Array<FCL_REAL, 1, 2> hpp::fcl::GJKSolver::Array2d

Constructor & Destructor Documentation

◆ GJKSolver() [1/4]

hpp::fcl::GJKSolver::GJKSolver ( )
inline

Default constructor for GJK algorithm.

◆ GJKSolver() [2/4]

hpp::fcl::GJKSolver::GJKSolver ( const DistanceRequest request)
inline

Constructor from a DistanceRequest.

Parameters
[in]requestDistanceRequest input

◆ GJKSolver() [3/4]

hpp::fcl::GJKSolver::GJKSolver ( const CollisionRequest request)
inline

Constructor from a CollisionRequest.

Parameters
[in]requestCollisionRequest input

◆ GJKSolver() [4/4]

hpp::fcl::GJKSolver::GJKSolver ( const GJKSolver other)
default

Copy constructor.

Member Function Documentation

◆ initialize_gjk()

template<typename S1 , typename S2 >
void hpp::fcl::GJKSolver::initialize_gjk ( details::GJK gjk,
const details::MinkowskiDiff shape,
const S1 &  s1,
const S2 &  s2,
Vec3f guess,
support_func_guess_t support_hint 
) const
inline

initialize GJK

◆ operator!=()

bool hpp::fcl::GJKSolver::operator!= ( const GJKSolver other) const
inline

◆ operator==()

bool hpp::fcl::GJKSolver::operator== ( const GJKSolver other) const
inline

◆ set() [1/2]

void hpp::fcl::GJKSolver::set ( const CollisionRequest request)
inline

setter from a CollisionRequest

Parameters
[in]requestCollisionRequest input

◆ set() [2/2]

void hpp::fcl::GJKSolver::set ( const DistanceRequest request)
inline

setter from a DistanceRequest

Parameters
[in]requestDistanceRequest input

◆ shapeDistance() [1/19]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeDistance ( const Box s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [2/19]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::GJKSolver::shapeDistance ( const Box s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Box - Sphere distance.

◆ shapeDistance() [3/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Capsule s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [4/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Capsule s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Capsule - Capsule distance.

Closest points are based on two line-segments.

◆ shapeDistance() [5/19]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeDistance ( const Capsule s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [6/19]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::GJKSolver::shapeDistance ( const Capsule s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Capsule - Sphere distance.

◆ shapeDistance() [7/19]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeDistance ( const Cylinder s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [8/19]

template<>
bool HPP_FCL_DLLAPI hpp::fcl::GJKSolver::shapeDistance ( const Cylinder s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Cylinder - Sphere distance.

◆ shapeDistance() [9/19]

template<typename S1 , typename S2 >
bool hpp::fcl::GJKSolver::shapeDistance ( const S1 &  s1,
const Transform3f tf1,
const S2 &  s2,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const
inline

distance computation between two shapes

◆ shapeDistance() [10/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [11/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Sphere - Box distance.

◆ shapeDistance() [12/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [13/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Sphere - Capsule distance.

◆ shapeDistance() [14/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Cylinder s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [15/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Cylinder s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Sphere - Cylinder distance.

◆ shapeDistance() [16/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [17/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const Sphere s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Sphere - Sphere distance.

◆ shapeDistance() [18/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const TriangleP s1,
const Transform3f tf1,
const TriangleP s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeDistance() [19/19]

template<>
bool hpp::fcl::GJKSolver::shapeDistance ( const TriangleP s1,
const Transform3f tf1,
const TriangleP s2,
const Transform3f tf2,
FCL_REAL dist,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for TriangleP - TriangleP distance.

Do not run EPA algorithm to compute penetration depth. Use a dedicated method.

◆ shapeIntersect() [1/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const
Todo:
currently disabled and to re-enable it, API of function obbDisjointAndLowerBoundDistance should be modified.

◆ shapeIntersect() [2/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Box - Halfspace collision.

◆ shapeIntersect() [3/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [4/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Box - Plane collision.

◆ shapeIntersect() [5/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [6/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [7/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Box s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [8/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Capsule s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Capsule - Halfspace collision.

◆ shapeIntersect() [9/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Capsule s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [10/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Capsule s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Capsule - Plane collision.

◆ shapeIntersect() [11/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Capsule s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [12/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Capsule s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Capsule - Sphere collision.

◆ shapeIntersect() [13/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Capsule s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [14/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Cone s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Cone - Halfspace collision.

◆ shapeIntersect() [15/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Cone s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [16/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Cone s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Cone - Plane collision.

◆ shapeIntersect() [17/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Cone s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [18/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Cylinder s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Cylinder - Halfspace collision.

◆ shapeIntersect() [19/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Cylinder s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [20/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Cylinder s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Cylinder - Plane collision.

◆ shapeIntersect() [21/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Cylinder s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [22/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Box collision.

◆ shapeIntersect() [23/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [24/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Capsule collision.

◆ shapeIntersect() [25/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [26/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Cone s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Cone collision.

◆ shapeIntersect() [27/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Cone s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [28/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Cylinder s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Cylinder collision.

◆ shapeIntersect() [29/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Cylinder s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [30/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Halfspace collision.

◆ shapeIntersect() [31/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Plane collision.

◆ shapeIntersect() [32/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [33/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Halfspace - Sphere collision.

◆ shapeIntersect() [34/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Halfspace s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [35/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Box collision.

◆ shapeIntersect() [36/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [37/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Capsule collision.

◆ shapeIntersect() [38/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [39/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Cone s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Cone collision.

◆ shapeIntersect() [40/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Cone s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [41/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Cylinder s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Cylinder collision.

◆ shapeIntersect() [42/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Cylinder s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [43/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Halfspace collision.

◆ shapeIntersect() [44/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [45/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Plane collision.

◆ shapeIntersect() [46/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Plane - Sphere collision.

◆ shapeIntersect() [47/57]

template<>
HPP_FCL_DLLAPI bool hpp::fcl::GJKSolver::shapeIntersect ( const Plane s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [48/57]

template<typename S1 , typename S2 >
bool hpp::fcl::GJKSolver::shapeIntersect ( const S1 &  s1,
const Transform3f tf1,
const S2 &  s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const
inline

intersection checking between two shapes

◆ shapeIntersect() [49/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Box s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [50/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Sphere - Capsule collision.

◆ shapeIntersect() [51/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Capsule s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [52/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Sphere - Halfspace collision.

◆ shapeIntersect() [53/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Halfspace s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [54/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Sphere - Plane collision.

◆ shapeIntersect() [55/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Plane s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeIntersect() [56/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  enable_penetration,
Vec3f contact_points,
Vec3f normal 
) const

Fast implementation for Sphere - Sphere collision.

◆ shapeIntersect() [57/57]

template<>
bool hpp::fcl::GJKSolver::shapeIntersect ( const Sphere s1,
const Transform3f tf1,
const Sphere s2,
const Transform3f tf2,
FCL_REAL distance_lower_bound,
bool  ,
Vec3f contact_points,
Vec3f normal 
) const

◆ shapeTriangleInteraction() [1/7]

template<>
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const Halfspace s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeTriangleInteraction() [2/7]

template<>
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const Halfspace s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Halfspace -Triangle interaction.

◆ shapeTriangleInteraction() [3/7]

template<>
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const Plane s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeTriangleInteraction() [4/7]

template<>
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const Plane s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Plane -Triangle interaction.

◆ shapeTriangleInteraction() [5/7]

template<typename S >
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const S &  s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const
inline

intersection checking between one shape and a triangle with transformation

Returns
true if the shape are colliding.

◆ shapeTriangleInteraction() [6/7]

template<>
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const Sphere s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

◆ shapeTriangleInteraction() [7/7]

template<>
bool hpp::fcl::GJKSolver::shapeTriangleInteraction ( const Sphere s,
const Transform3f tf1,
const Vec3f P1,
const Vec3f P2,
const Vec3f P3,
const Transform3f tf2,
FCL_REAL distance,
Vec3f p1,
Vec3f p2,
Vec3f normal 
) const

Fast implementation for Sphere -Triangle interaction.

Member Data Documentation

◆ cached_guess

Vec3f hpp::fcl::GJKSolver::cached_guess
mutable

smart guess

◆ distance_upper_bound

FCL_REAL hpp::fcl::GJKSolver::distance_upper_bound
mutable

Distance above which the GJK solver stoppes its computations and processes to an early stopping. The two witness points are incorrect, but with the guaranty that the two shapes have a distance greather than distance_upper_bound.

◆ enable_cached_guess

bool hpp::fcl::GJKSolver::enable_cached_guess
mutable

Whether smart guess can be provided @Deprecated Use gjk_initial_guess instead.

◆ epa_max_face_num

unsigned int hpp::fcl::GJKSolver::epa_max_face_num

maximum number of simplex face used in EPA algorithm

◆ epa_max_iterations

unsigned int hpp::fcl::GJKSolver::epa_max_iterations

maximum number of iterations used for EPA iterations

◆ epa_max_vertex_num

unsigned int hpp::fcl::GJKSolver::epa_max_vertex_num

maximum number of simplex vertex used in EPA algorithm

◆ epa_tolerance

FCL_REAL hpp::fcl::GJKSolver::epa_tolerance

the threshold used in EPA to stop iteration

◆ gjk_convergence_criterion

GJKConvergenceCriterion hpp::fcl::GJKSolver::gjk_convergence_criterion
mutable

Criterion used to stop GJK.

◆ gjk_convergence_criterion_type

GJKConvergenceCriterionType hpp::fcl::GJKSolver::gjk_convergence_criterion_type
mutable

Relative or absolute.

◆ gjk_initial_guess

GJKInitialGuess hpp::fcl::GJKSolver::gjk_initial_guess
mutable

which warm start to use for GJK

◆ gjk_max_iterations

size_t hpp::fcl::GJKSolver::gjk_max_iterations
mutable

maximum number of iterations used for GJK iterations

◆ gjk_tolerance

FCL_REAL hpp::fcl::GJKSolver::gjk_tolerance
mutable

the threshold used in GJK to stop iteration

◆ gjk_variant

GJKVariant hpp::fcl::GJKSolver::gjk_variant
mutable

Variant to use for the GJK algorithm.

◆ support_func_cached_guess

support_func_guess_t hpp::fcl::GJKSolver::support_func_cached_guess
mutable

smart guess for the support function


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