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 Member Functions | |
template<typename S1 , typename S2 > | |
bool | shapeIntersect (const S1 &s1, const Transform3f &tf1, const S2 &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
intersection checking between two shapes | |
template<typename S > | |
bool | shapeTriangleIntersect (const S &s, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
intersection checking between one shape and a triangle | |
template<typename S > | |
bool | shapeTriangleIntersect (const S &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
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) const |
distance computation between two shapes | |
template<typename S1 , typename S2 > | |
bool | shapeDistance (const S1 &s1, const Transform3f &tf1, const S2 &s2, const Transform3f &tf2, FCL_REAL *distance) const |
template<typename S > | |
bool | shapeTriangleDistance (const S &s, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL *distance, Vec3f *p1, Vec3f *p2) const |
distance computation between one shape and a triangle | |
template<typename S > | |
bool | shapeTriangleDistance (const S &s, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL *distance) const |
template<typename S > | |
bool | shapeTriangleDistance (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) const |
distance computation between one shape and a triangle with transformation | |
template<typename S > | |
bool | shapeTriangleDistance (const S &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL *distance) const |
GJKSolver_indep () | |
default setting for GJK algorithm | |
void | enableCachedGuess (bool if_enable) const |
void | setCachedGuess (const Vec3f &guess) const |
Vec3f | getCachedGuess () const |
template<> | |
bool | shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
Fast implementation for sphere-capsule collision. | |
template<> | |
bool | shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
Fast implementation for sphere-sphere collision. | |
template<> | |
bool | shapeIntersect (const Box &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
Fast implementation for box-box collision. | |
template<> | |
bool | shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Box &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Cylinder &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Cone &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Cone &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Halfspace &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Sphere &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Box &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Capsule &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Cylinder &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Cone &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Cone &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeIntersect (const Plane &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeTriangleIntersect (const Sphere &s, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
Fast implementation for sphere-triangle collision. | |
template<> | |
bool | shapeTriangleIntersect (const Sphere &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
Fast implementation for sphere-triangle collision. | |
template<> | |
bool | shapeTriangleIntersect (const Halfspace &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal) const |
template<> | |
bool | shapeTriangleIntersect (const Plane &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, 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) const |
Fast implementation for sphere-capsule distance. | |
template<> | |
bool | shapeDistance (const Capsule &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL *dist, Vec3f *p1, Vec3f *p2) const |
template<> | |
bool | shapeDistance (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL *dist, Vec3f *p1, Vec3f *p2) const |
Fast implementation for sphere-sphere distance. | |
template<> | |
bool | shapeDistance (const Capsule &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL *dist, Vec3f *p1, Vec3f *p2) const |
template<> | |
bool | shapeTriangleDistance (const Sphere &s, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL *dist, Vec3f *p1, Vec3f *p2) const |
Fast implementation for sphere-triangle distance. | |
template<> | |
bool | shapeTriangleDistance (const Sphere &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL *dist, Vec3f *p1, Vec3f *p2) const |
Fast implementation for sphere-triangle distance. | |
Public Attributes | |
unsigned int | epa_max_face_num |
maximum number of simplex face used in EPA algorithm | |
unsigned int | epa_max_vertex_num |
maximum number of simplex vertex used in EPA algorithm | |
unsigned int | epa_max_iterations |
maximum number of iterations used for EPA iterations | |
FCL_REAL | epa_tolerance |
the threshold used in EPA to stop iteration | |
FCL_REAL | gjk_tolerance |
the threshold used in GJK to stop iteration | |
FCL_REAL | gjk_max_iterations |
maximum number of iterations used for GJK iterations | |
bool | enable_cached_guess |
Whether smart guess can be provided. | |
Vec3f | cached_guess |
smart guess |
collision and distance solver based on GJK algorithm implemented in fcl (rewritten the code from the GJK in bullet)
fcl::GJKSolver_indep::GJKSolver_indep | ( | ) | [inline] |
default setting for GJK algorithm
References cached_guess, enable_cached_guess, epa_max_face_num, epa_max_iterations, epa_max_vertex_num, epa_tolerance, gjk_max_iterations, and gjk_tolerance.
void fcl::GJKSolver_indep::enableCachedGuess | ( | bool | if_enable | ) | const [inline] |
References enable_cached_guess.
Vec3f fcl::GJKSolver_indep::getCachedGuess | ( | ) | const [inline] |
References cached_guess.
void fcl::GJKSolver_indep::setCachedGuess | ( | const Vec3f & | guess | ) | const [inline] |
References cached_guess.
bool fcl::GJKSolver_indep::shapeDistance | ( | const S1 & | s1, |
const Transform3f & | tf1, | ||
const S2 & | s2, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | distance, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const [inline] |
distance computation between two shapes
References cached_guess, enable_cached_guess, fcl::details::GJK::evaluate(), fcl::details::GJK::getGuessFromSimplex(), fcl::Transform3f::getRotation(), fcl::details::GJK::getSimplex(), gjk_max_iterations, gjk_tolerance, fcl::Transform3f::inverseTimes(), fcl::details::MinkowskiDiff::shapes, fcl::details::MinkowskiDiff::support(), fcl::details::MinkowskiDiff::toshape0, fcl::details::MinkowskiDiff::toshape1, fcl::Transform3f::transform(), and fcl::details::GJK::Valid.
Referenced by shapeDistance().
bool fcl::GJKSolver_indep::shapeDistance | ( | const S1 & | s1, |
const Transform3f & | tf1, | ||
const S2 & | s2, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | distance | ||
) | const [inline] |
References shapeDistance().
bool fcl::GJKSolver_indep::shapeDistance | ( | const Sphere & | s1, |
const Transform3f & | tf1, | ||
const Capsule & | s2, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | dist, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const |
Fast implementation for sphere-capsule distance.
bool fcl::GJKSolver_indep::shapeDistance | ( | const Capsule & | s1, |
const Transform3f & | tf1, | ||
const Sphere & | s2, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | dist, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const |
bool fcl::GJKSolver_indep::shapeDistance | ( | const Sphere & | s1, |
const Transform3f & | tf1, | ||
const Sphere & | s2, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | dist, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const |
Fast implementation for sphere-sphere distance.
bool fcl::GJKSolver_indep::shapeDistance | ( | const Capsule & | s1, |
const Transform3f & | tf1, | ||
const Capsule & | s2, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | dist, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const S1 & | s1, |
const Transform3f & | tf1, | ||
const S2 & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const [inline] |
intersection checking between two shapes
References cached_guess, fcl::details::EPA::depth, enable_cached_guess, epa_max_face_num, epa_max_iterations, epa_max_vertex_num, epa_tolerance, fcl::details::GJK::evaluate(), fcl::details::EPA::evaluate(), fcl::details::EPA::Failed, fcl::details::GJK::getGuessFromSimplex(), fcl::Transform3f::getRotation(), gjk_max_iterations, gjk_tolerance, fcl::details::GJK::Inside, fcl::Transform3f::inverseTimes(), fcl::details::EPA::normal, fcl::details::EPA::result, fcl::details::MinkowskiDiff::shapes, fcl::details::MinkowskiDiff::support(), fcl::details::MinkowskiDiff::toshape0, fcl::details::MinkowskiDiff::toshape1, and fcl::Transform3f::transform().
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Sphere & | s1, |
const Transform3f & | tf1, | ||
const Capsule & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
Fast implementation for sphere-capsule collision.
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Capsule & | s1, |
const Transform3f & | tf1, | ||
const Sphere & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Sphere & | s1, |
const Transform3f & | tf1, | ||
const Sphere & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
Fast implementation for sphere-sphere collision.
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Box & | s1, |
const Transform3f & | tf1, | ||
const Box & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
Fast implementation for box-box collision.
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Sphere & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Sphere & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Box & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Box & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Capsule & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Capsule & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Cylinder & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Cylinder & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Cone & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Cone & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Halfspace & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Halfspace & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Sphere & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Sphere & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Box & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Box & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Capsule & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Capsule & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Cylinder & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Cylinder & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Cone & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Cone & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeIntersect | ( | const Plane & | s1, |
const Transform3f & | tf1, | ||
const Plane & | s2, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeTriangleDistance | ( | const S & | s, |
const Transform3f & | tf, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
FCL_REAL * | distance, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const [inline] |
distance computation between one shape and a triangle
References cached_guess, enable_cached_guess, fcl::details::GJK::evaluate(), fcl::details::GJK::getGuessFromSimplex(), fcl::Transform3f::getRotation(), fcl::details::GJK::getSimplex(), gjk_max_iterations, gjk_tolerance, fcl::inverse(), fcl::details::MinkowskiDiff::shapes, fcl::details::MinkowskiDiff::support(), fcl::details::MinkowskiDiff::toshape0, fcl::details::MinkowskiDiff::toshape1, fcl::Transform3f::transform(), and fcl::details::GJK::Valid.
Referenced by shapeTriangleDistance().
bool fcl::GJKSolver_indep::shapeTriangleDistance | ( | const S & | s, |
const Transform3f & | tf, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
FCL_REAL * | distance | ||
) | const [inline] |
References shapeTriangleDistance().
bool fcl::GJKSolver_indep::shapeTriangleDistance | ( | 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 | ||
) | const [inline] |
distance computation between one shape and a triangle with transformation
References cached_guess, enable_cached_guess, fcl::details::GJK::evaluate(), fcl::details::GJK::getGuessFromSimplex(), fcl::Transform3f::getRotation(), fcl::details::GJK::getSimplex(), gjk_max_iterations, gjk_tolerance, fcl::Transform3f::inverseTimes(), fcl::details::MinkowskiDiff::shapes, fcl::details::MinkowskiDiff::support(), fcl::details::MinkowskiDiff::toshape0, fcl::details::MinkowskiDiff::toshape1, fcl::Transform3f::transform(), and fcl::details::GJK::Valid.
bool fcl::GJKSolver_indep::shapeTriangleDistance | ( | const S & | s, |
const Transform3f & | tf1, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | distance | ||
) | const [inline] |
References shapeTriangleDistance().
bool fcl::GJKSolver_indep::shapeTriangleDistance | ( | const Sphere & | s, |
const Transform3f & | tf, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
FCL_REAL * | dist, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const |
Fast implementation for sphere-triangle distance.
bool fcl::GJKSolver_indep::shapeTriangleDistance | ( | const Sphere & | s, |
const Transform3f & | tf1, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Transform3f & | tf2, | ||
FCL_REAL * | dist, | ||
Vec3f * | p1, | ||
Vec3f * | p2 | ||
) | const |
Fast implementation for sphere-triangle distance.
bool fcl::GJKSolver_indep::shapeTriangleIntersect | ( | const S & | s, |
const Transform3f & | tf, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const [inline] |
intersection checking between one shape and a triangle
References cached_guess, fcl::details::EPA::depth, enable_cached_guess, epa_max_face_num, epa_max_iterations, epa_max_vertex_num, epa_tolerance, fcl::details::GJK::evaluate(), fcl::details::EPA::evaluate(), fcl::details::EPA::Failed, fcl::details::GJK::getGuessFromSimplex(), fcl::Transform3f::getRotation(), gjk_max_iterations, gjk_tolerance, fcl::details::GJK::Inside, fcl::inverse(), fcl::details::EPA::normal, fcl::details::EPA::result, fcl::details::MinkowskiDiff::shapes, fcl::details::MinkowskiDiff::support(), fcl::details::MinkowskiDiff::toshape0, fcl::details::MinkowskiDiff::toshape1, and fcl::Transform3f::transform().
bool fcl::GJKSolver_indep::shapeTriangleIntersect | ( | const S & | s, |
const Transform3f & | tf1, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const [inline] |
References cached_guess, fcl::details::EPA::depth, enable_cached_guess, epa_max_face_num, epa_max_iterations, epa_max_vertex_num, epa_tolerance, fcl::details::GJK::evaluate(), fcl::details::EPA::evaluate(), fcl::details::EPA::Failed, fcl::details::GJK::getGuessFromSimplex(), fcl::Transform3f::getRotation(), gjk_max_iterations, gjk_tolerance, fcl::details::GJK::Inside, fcl::Transform3f::inverseTimes(), fcl::details::EPA::normal, fcl::details::EPA::result, fcl::details::MinkowskiDiff::shapes, fcl::details::MinkowskiDiff::support(), fcl::details::MinkowskiDiff::toshape0, fcl::details::MinkowskiDiff::toshape1, and fcl::Transform3f::transform().
bool fcl::GJKSolver_indep::shapeTriangleIntersect | ( | const Sphere & | s, |
const Transform3f & | tf, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
Fast implementation for sphere-triangle collision.
bool fcl::GJKSolver_indep::shapeTriangleIntersect | ( | const Sphere & | s, |
const Transform3f & | tf1, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
Fast implementation for sphere-triangle collision.
bool fcl::GJKSolver_indep::shapeTriangleIntersect | ( | const Halfspace & | s, |
const Transform3f & | tf1, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
bool fcl::GJKSolver_indep::shapeTriangleIntersect | ( | const Plane & | s, |
const Transform3f & | tf1, | ||
const Vec3f & | P1, | ||
const Vec3f & | P2, | ||
const Vec3f & | P3, | ||
const Transform3f & | tf2, | ||
Vec3f * | contact_points, | ||
FCL_REAL * | penetration_depth, | ||
Vec3f * | normal | ||
) | const |
Vec3f fcl::GJKSolver_indep::cached_guess [mutable] |
smart guess
Referenced by getCachedGuess(), GJKSolver_indep(), setCachedGuess(), shapeDistance(), shapeIntersect(), shapeTriangleDistance(), and shapeTriangleIntersect().
bool fcl::GJKSolver_indep::enable_cached_guess [mutable] |
Whether smart guess can be provided.
Referenced by enableCachedGuess(), GJKSolver_indep(), shapeDistance(), shapeIntersect(), shapeTriangleDistance(), and shapeTriangleIntersect().
unsigned int fcl::GJKSolver_indep::epa_max_face_num |
maximum number of simplex face used in EPA algorithm
Referenced by GJKSolver_indep(), shapeIntersect(), and shapeTriangleIntersect().
unsigned int fcl::GJKSolver_indep::epa_max_iterations |
maximum number of iterations used for EPA iterations
Referenced by GJKSolver_indep(), shapeIntersect(), and shapeTriangleIntersect().
unsigned int fcl::GJKSolver_indep::epa_max_vertex_num |
maximum number of simplex vertex used in EPA algorithm
Referenced by GJKSolver_indep(), shapeIntersect(), and shapeTriangleIntersect().
the threshold used in EPA to stop iteration
Referenced by GJKSolver_indep(), shapeIntersect(), and shapeTriangleIntersect().
maximum number of iterations used for GJK iterations
Referenced by GJKSolver_indep(), shapeDistance(), shapeIntersect(), shapeTriangleDistance(), and shapeTriangleIntersect().
the threshold used in GJK to stop iteration
Referenced by GJKSolver_indep(), shapeDistance(), shapeIntersect(), shapeTriangleDistance(), and shapeTriangleIntersect().