hpp-fcl  3.0.0
HPP fork of FCL -- The Flexible Collision Library
support_functions.h File Reference
Include dependency graph for support_functions.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  hpp::fcl::details::ShapeSupportData
 Stores temporary data for the computation of support points. More...
 
struct  hpp::fcl::details::LargeConvex
 Cast a ConvexBase to a LargeConvex to use the log version of getShapeSupport. This is much faster than the linear version of getShapeSupport when a ConvexBase has more than a few dozen of vertices. More...
 
struct  hpp::fcl::details::SmallConvex
 See LargeConvex. More...
 

Namespaces

 hpp
 Main namespace.
 
 hpp::fcl
 
 hpp::fcl::details
 

Enumerations

enum  hpp::fcl::details::SupportOptions { hpp::fcl::details::NoSweptSphere = 0 , hpp::fcl::details::WithSweptSphere = 0x1 }
 Options for the computation of support points. NoSweptSphere option is used when the support function is called by GJK or EPA. In this case, the swept sphere radius is not taken into account in the support function. It is used by GJK and EPA after they have converged to correct the solution. WithSweptSphere option is used when the support function is called directly by the user. In this case, the swept sphere radius is taken into account in the support function. More...
 

Functions

template<int _SupportOptions = SupportOptions::NoSweptSphere>
Vec3f hpp::fcl::details::getSupport (const ShapeBase *shape, const Vec3f &dir, int &hint)
 the support function for shape. The output support point is expressed in the local frame of the shape. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const TriangleP *triangle, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Triangle support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const Box *box, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Box support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const Sphere *sphere, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Sphere support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const Ellipsoid *ellipsoid, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Ellipsoid support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const Capsule *capsule, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Capsule support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const Cone *cone, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Cone support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const Cylinder *cylinder, const Vec3f &dir, Vec3f &support, int &, ShapeSupportData &)
 Cylinder support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const ConvexBase *convex, const Vec3f &dir, Vec3f &support, int &hint, ShapeSupportData &)
 ConvexBase support function. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const SmallConvex *convex, const Vec3f &dir, Vec3f &support, int &hint, ShapeSupportData &data)
 Support function for large ConvexBase (>32 vertices). More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupport (const LargeConvex *convex, const Vec3f &dir, Vec3f &support, int &hint, ShapeSupportData &support_data)
 Support function for small ConvexBase (<32 vertices). More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getSupportSet (const ShapeBase *shape, SupportSet &support_set, int &hint, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Computes the support set for shape. This function assumes the frame of the support set has already been computed and that this frame is expressed w.r.t the local frame of the shape (i.e. the local frame of the shape is the WORLD frame of the support set). The support direction used to compute the support set is the positive z-axis if the support set has the DEFAULT direction; negative z-axis if it has the INVERTED direction. (In short, a shape's support set is has the DEFAULT direction if the shape is the first shape in a collision pair. It has the INVERTED direction if the shape is the second one in the collision pair). More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getSupportSet (const ShapeBase *shape, const Vec3f &dir, SupportSet &support_set, int &hint, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Same as getSupportSet(const ShapeBase*, const FCL_REAL, SupportSet&, const int) but also constructs the support set frame from dir. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const TriangleP *triangle, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Triangle support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const Box *box, SupportSet &support_set, int &, ShapeSupportData &support_data, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Box support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const Sphere *sphere, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Sphere support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const Ellipsoid *ellipsoid, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Ellipsoid support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const Capsule *capsule, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Capsule support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const Cone *cone, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Cone support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const Cylinder *cylinder, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Cylinder support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const ConvexBase *convex, SupportSet &support_set, int &hint, ShapeSupportData &support_data, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 ConvexBase support set function. Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const SmallConvex *convex, SupportSet &support_set, int &, ShapeSupportData &, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Support set function for large ConvexBase (>32 vertices). Assumes the support set frame has already been computed. More...
 
template<int _SupportOptions = SupportOptions::NoSweptSphere>
void hpp::fcl::details::getShapeSupportSet (const LargeConvex *convex, SupportSet &support_set, int &hint, ShapeSupportData &support_data, size_t num_sampled_supports=6, FCL_REAL tol=1e-3)
 Support set function for small ConvexBase (<32 vertices). Assumes the support set frame has already been computed. More...
 
void hpp::fcl::details::computeSupportSetConvexHull (SupportSet::Polygon &cloud, SupportSet::Polygon &cvx_hull)
 Computes the convex-hull of support_set. For now, this function is only needed for Box and ConvexBase. More...