hpp-fcl: hpp::fcl::details Namespace Reference

hpp-fcl 1.7.0 HPP fork of FCL -- The Flexible Collision Library

Classes | Functions
hpp::fcl::details Namespace Reference

## Classes
struct | MinkowskiDiff
| Minkowski difference class of two shapes. More...
struct | GJK
| class for GJK algorithm More...
struct | EPA
| class for EPA algorithm More...
struct | ContactPoint

## Functions
Vec3f | getSupport (const ShapeBase *shape, const Vec3f &dir, bool dirIsNormalized, int &hint)
| the support function for shape More...
bool | sphereCapsuleIntersect (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f *contact_points, Vec3f *normal_)
bool | sphereCapsuleDistance (const Sphere &s1, const Transform3f &tf1, const Capsule &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | sphereCylinderDistance (const Sphere &s1, const Transform3f &tf1, const Cylinder &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | sphereSphereIntersect (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f *contact_points, Vec3f *normal)
bool | sphereSphereDistance (const Sphere &s1, const Transform3f &tf1, const Sphere &s2, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal)
FCL_REAL | segmentSqrDistance (const Vec3f &from, const Vec3f &to, const Vec3f &p, Vec3f &nearest)
| the minimum distance from a point to a line More...
bool | projectInTriangle (const Vec3f &p1, const Vec3f &p2, const Vec3f &p3, const Vec3f &normal, const Vec3f &p)
| Whether a point's projection is in a triangle. More...
bool | sphereTriangleIntersect (const Sphere &s, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal_)
bool | sphereTriangleDistance (const Sphere &sp, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL *dist)
bool | sphereTriangleDistance (const Sphere &sp, const Transform3f &tf, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, FCL_REAL *dist, Vec3f *p1, Vec3f *p2)
bool | sphereTriangleDistance (const Sphere &sp, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL *dist, Vec3f *p1, Vec3f *p2)
int | boxBox2 (const Vec3f &halfSide1, const Matrix3f &R1, const Vec3f &T1, const Vec3f &halfSide2, const Matrix3f &R2, const Vec3f &T2, Vec3f &normal, FCL_REAL *depth, int *return_code, int maxc, std::vector< ContactPoint > &contacts)
bool | compareContactPoints (const ContactPoint &c1, const ContactPoint &c2)
bool | boxBoxIntersect (const Box &s1, const Transform3f &tf1, const Box &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth_, Vec3f *normal_)
template<typename T >
T | halfspaceIntersectTolerance ()
template<>
float | halfspaceIntersectTolerance ()
bool | sphereHalfspaceIntersect (const Sphere &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | boxHalfspaceIntersect (const Box &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2)
| box half space, a, b, c = +/- edge size n^T * (R(o + a v1 + b v2 + c v3) + T) <= d so (R^T n) (a v1 + b v2 + c v3) + n * T <= d check whether d - n * T - (R^T n) (a v1 + b v2 + c v3) >= 0 for some a, b, c the max value of left side is d - n * T + |(R^T n) (a v1 + b v2 + c v3)|, check that is enough More...
bool | boxHalfspaceIntersect (const Box &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | capsuleHalfspaceIntersect (const Capsule &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | cylinderHalfspaceIntersect (const Cylinder &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | coneHalfspaceIntersect (const Cone &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | convexHalfspaceIntersect (const ConvexBase &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal)
bool | halfspaceTriangleIntersect (const Halfspace &s1, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | planeHalfspaceIntersect (const Plane &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Plane &pl, Vec3f &p, Vec3f &d, FCL_REAL &penetration_depth, int &ret)
| return whether plane collides with halfspace if the separation plane of the halfspace is parallel with the plane return code 1, if the plane's normal is the same with halfspace's normal and plane is inside halfspace, also return plane in pl return code 2, if the plane's normal is oppositie to the halfspace's normal and plane is inside halfspace, also return plane in pl plane is outside halfspace, collision-free if not parallel return the intersection ray, return code 3. ray origin is p and direction is d More...
bool | halfspaceIntersect (const Halfspace &s1, const Transform3f &tf1, const Halfspace &s2, const Transform3f &tf2, Vec3f &p, Vec3f &d, Halfspace &s, FCL_REAL &penetration_depth, int &ret)
bool | halfspaceDistance (const Halfspace &h, const Transform3f &tf1, const ShapeBase &s, const Transform3f &tf2, FCL_REAL &dist, Vec3f &p1, Vec3f &p2, Vec3f &normal)
template<typename T >
T | planeIntersectTolerance ()
template<>
double | planeIntersectTolerance< double > ()
template<>
float | planeIntersectTolerance< float > ()
bool | spherePlaneIntersect (const Sphere &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | boxPlaneIntersect (const Box &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
| box half space, a, b, c = +/- edge size n^T * (R(o + a v1 + b v2 + c v3) + T) ~ d so (R^T n) (a v1 + b v2 + c v3) + n * T ~ d check whether d - n * T - (R^T n) (a v1 + b v2 + c v3) >= 0 for some a, b, c and <=0 for some a, b, c so need to check whether |d - n * T| <= |(R^T n)(a v1 + b v2 + c v3)|, the reason is as follows: (R^T n) (a v1 + b v2 + c v3) can get |(R^T n) (a v1 + b v2 + c v3)| for one a, b, c. if |d - n * T| <= |(R^T n)(a v1 + b v2 + c v3)| then can get both positive and negative value on the right side. More...
bool | boxSphereDistance (const Box &b, const Transform3f &tfb, const Sphere &s, const Transform3f &tfs, FCL_REAL &dist, Vec3f &pb, Vec3f &ps, Vec3f &normal)
bool | capsulePlaneIntersect (const Capsule &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | cylinderPlaneIntersect (const Cylinder &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
| cylinder-plane intersect n^T (R (r * cosa * v1 + r * sina * v2 + h * v3) + T) ~ d need one point to be positive and one to be negative (n^T * v3) * h + n * T -d + r * (cosa * (n^T * R * v1) + sina * (n^T * R * v2)) ~ 0 (n^T * v3) * h + r * (cosa * (n^T * R * v1) + sina * (n^T * R * v2)) + n * T - d ~ 0 More...
bool | conePlaneIntersect (const Cone &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | convexPlaneIntersect (const ConvexBase &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *contact_points, FCL_REAL *penetration_depth, Vec3f *normal)
bool | planeTriangleIntersect (const Plane &s1, const Transform3f &tf1, const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Transform3f &tf2, FCL_REAL &distance, Vec3f &p1, Vec3f &p2, Vec3f &normal)
bool | halfspacePlaneIntersect (const Halfspace &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Plane &pl, Vec3f &p, Vec3f &d, FCL_REAL &penetration_depth, int &ret)
bool | planeIntersect (const Plane &s1, const Transform3f &tf1, const Plane &s2, const Transform3f &tf2, Vec3f *, FCL_REAL *, Vec3f *)
FCL_REAL | computePenetration (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Vec3f &Q1, const Vec3f &Q2, const Vec3f &Q3, Vec3f &normal)
| See the prototype below. More...
FCL_REAL | computePenetration (const Vec3f &P1, const Vec3f &P2, const Vec3f &P3, const Vec3f &Q1, const Vec3f &Q2, const Vec3f &Q3, const Transform3f &tf1, const Transform3f &tf2, Vec3f &normal)

## Function Documentation

## ◆ boxBox2()

int hpp::fcl::details::boxBox2 | ( | const Vec3f & | halfSide1,
|  | const Matrix3f & | R1,
|  | const Vec3f & | T1,
|  | const Vec3f & | halfSide2,
|  | const Matrix3f & | R2,
|  | const Vec3f & | T2,
|  | Vec3f & | normal,
|  | FCL_REAL * | depth,
|  | int * | return_code,
|  | int | maxc,
|  | std::vector< ContactPoint > & | contacts
| ) |  |
| inline

## ◆ boxBoxIntersect()

bool hpp::fcl::details::boxBoxIntersect | ( | const Box & | s1,
|  | const Transform3f & | tf1,
|  | const Box & | s2,
|  | const Transform3f & | tf2,
|  | Vec3f * | contact_points,
|  | FCL_REAL * | penetration_depth_,
|  | Vec3f * | normal_
| ) |  |
| inline

## ◆ boxHalfspaceIntersect() [1/2]

bool hpp::fcl::details::boxHalfspaceIntersect | ( | const Box & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2
| ) |  |
| inline

box half space, a, b, c = +/- edge size n^T * (R(o + a v1 + b v2 + c v3) + T) <= d so (R^T n) (a v1 + b v2 + c v3) + n * T <= d check whether d - n * T - (R^T n) (a v1 + b v2 + c v3) >= 0 for some a, b, c the max value of left side is d - n * T + |(R^T n) (a v1 + b v2 + c v3)|, check that is enough

## ◆ boxHalfspaceIntersect() [2/2]

bool hpp::fcl::details::boxHalfspaceIntersect | ( | const Box & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

find deepest point

compute the contact point from the deepest point

## ◆ boxPlaneIntersect()

bool hpp::fcl::details::boxPlaneIntersect | ( | const Box & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

box half space, a, b, c = +/- edge size n^T * (R(o + a v1 + b v2 + c v3) + T) ~ d so (R^T n) (a v1 + b v2 + c v3) + n * T ~ d check whether d - n * T - (R^T n) (a v1 + b v2 + c v3) >= 0 for some a, b, c and <=0 for some a, b, c so need to check whether |d - n * T| <= |(R^T n)(a v1 + b v2 + c v3)|, the reason is as follows: (R^T n) (a v1 + b v2 + c v3) can get |(R^T n) (a v1 + b v2 + c v3)| for one a, b, c. if |d - n * T| <= |(R^T n)(a v1 + b v2 + c v3)| then can get both positive and negative value on the right side.

## ◆ boxSphereDistance()

bool hpp::fcl::details::boxSphereDistance | ( | const Box & | b,
|  | const Transform3f & | tfb,
|  | const Sphere & | s,
|  | const Transform3f & | tfs,
|  | FCL_REAL & | dist,
|  | Vec3f & | pb,
|  | Vec3f & | ps,
|  | Vec3f & | normal
| ) |  |
| inline

Taken from book Real Time Collision Detection, from Christer Ericson

Parameters

  pb | the closest point to the sphere center on the box surface
  ps | when colliding, matches pb, which is inside the sphere. when not colliding, the closest point on the sphere
  normal | direction of motion of the box

Returns
  true if the distance is negative (the shape overlaps).

## ◆ capsuleHalfspaceIntersect()

bool hpp::fcl::details::capsuleHalfspaceIntersect | ( | const Capsule & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ capsulePlaneIntersect()

bool hpp::fcl::details::capsulePlaneIntersect | ( | const Capsule & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ compareContactPoints()

bool hpp::fcl::details::compareContactPoints | ( | const ContactPoint & | c1,
|  | const ContactPoint & | c2
| ) |  |
| inline

## ◆ computePenetration() [1/2]

FCL_REAL hpp::fcl::details::computePenetration | ( | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | const Vec3f & | Q1,
|  | const Vec3f & | Q2,
|  | const Vec3f & | Q3,
|  | const Transform3f & | tf1,
|  | const Transform3f & | tf2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ computePenetration() [2/2]

FCL_REAL hpp::fcl::details::computePenetration | ( | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | const Vec3f & | Q1,
|  | const Vec3f & | Q2,
|  | const Vec3f & | Q3,
|  | Vec3f & | normal
| ) |  |
| inline

See the prototype below.

## ◆ coneHalfspaceIntersect()

bool hpp::fcl::details::coneHalfspaceIntersect | ( | const Cone & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ conePlaneIntersect()

bool hpp::fcl::details::conePlaneIntersect | ( | const Cone & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ convexHalfspaceIntersect()

bool hpp::fcl::details::convexHalfspaceIntersect | ( | const ConvexBase & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | Vec3f * | contact_points,
|  | FCL_REAL * | penetration_depth,
|  | Vec3f * | normal
| ) |  |
| inline

## ◆ convexPlaneIntersect()

bool hpp::fcl::details::convexPlaneIntersect | ( | const ConvexBase & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | Vec3f * | contact_points,
|  | FCL_REAL * | penetration_depth,
|  | Vec3f * | normal
| ) |  |
| inline

## ◆ cylinderHalfspaceIntersect()

bool hpp::fcl::details::cylinderHalfspaceIntersect | ( | const Cylinder & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ cylinderPlaneIntersect()

bool hpp::fcl::details::cylinderPlaneIntersect | ( | const Cylinder & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

cylinder-plane intersect n^T (R (r * cosa * v1 + r * sina * v2 + h * v3) + T) ~ d need one point to be positive and one to be negative (n^T * v3) * h + n * T -d + r * (cosa * (n^T * R * v1) + sina * (n^T * R * v2)) ~ 0 (n^T * v3) * h + r * (cosa * (n^T * R * v1) + sina * (n^T * R * v2)) + n * T - d ~ 0

## ◆ getSupport()

Vec3f hpp::fcl::details::getSupport | ( | const ShapeBase * | shape,
|  | const Vec3f & | dir,
|  | bool | dirIsNormalized,
|  | int & | hint
| ) |  |

the support function for shape

Parameters

  hint | use to initialize the search when shape is a ConvexBase object.

## ◆ halfspaceDistance()

bool hpp::fcl::details::halfspaceDistance | ( | const Halfspace & | h,
|  | const Transform3f & | tf1,
|  | const ShapeBase & | s,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | dist,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

Parameters

  p1 | closest (or most penetrating) point on the Halfspace,
  p2 | closest (or most penetrating) point on the shape,
  normal | the halfspace normal.

Returns
  true if the distance is negative (the shape overlaps).

## ◆ halfspaceIntersect()

bool hpp::fcl::details::halfspaceIntersect | ( | const Halfspace & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | Vec3f & | p,
|  | Vec3f & | d,
|  | Halfspace & | s,
|  | FCL_REAL & | penetration_depth,
|  | int & | ret
| ) |  |
| inline

@ brief return whether two halfspace intersect if the separation planes of the two halfspaces are parallel return code 1, if two halfspaces' normal are same and s1 is in s2, also return s1 in s; return code 2, if two halfspaces' normal are same and s2 is in s1, also return s2 in s; return code 3, if two halfspaces' normal are opposite and s1 and s2 are into each other; collision free, if two halfspaces' are separate; if the separation planes of the two halfspaces are not parallel, return intersection ray, return code 4. ray origin is p and direction is d collision free return code 0

## ◆ halfspaceIntersectTolerance() [1/2]

template<typename T >

T hpp::fcl::details::halfspaceIntersectTolerance | ( |  | ) |
| inline

## ◆ halfspaceIntersectTolerance() [2/2]

template<>

double hpp::fcl::details::halfspaceIntersectTolerance | ( |  | ) |
| inline

## ◆ halfspacePlaneIntersect()

bool hpp::fcl::details::halfspacePlaneIntersect | ( | const Halfspace & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | Plane & | pl,
|  | Vec3f & | p,
|  | Vec3f & | d,
|  | FCL_REAL & | penetration_depth,
|  | int & | ret
| ) |  |
| inline

## ◆ halfspaceTriangleIntersect()

bool hpp::fcl::details::halfspaceTriangleIntersect | ( | const Halfspace & | s1,
|  | const Transform3f & | tf1,
|  | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ planeHalfspaceIntersect()

bool hpp::fcl::details::planeHalfspaceIntersect | ( | const Plane & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | Plane & | pl,
|  | Vec3f & | p,
|  | Vec3f & | d,
|  | FCL_REAL & | penetration_depth,
|  | int & | ret
| ) |  |
| inline

return whether plane collides with halfspace if the separation plane of the halfspace is parallel with the plane return code 1, if the plane's normal is the same with halfspace's normal and plane is inside halfspace, also return plane in pl return code 2, if the plane's normal is oppositie to the halfspace's normal and plane is inside halfspace, also return plane in pl plane is outside halfspace, collision-free if not parallel return the intersection ray, return code 3. ray origin is p and direction is d

## ◆ planeIntersect()

bool hpp::fcl::details::planeIntersect | ( | const Plane & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | Vec3f * | ,
|  | FCL_REAL * | ,
|  | Vec3f * |
| ) |  |
| inline

## ◆ planeIntersectTolerance()

template<typename T >

T hpp::fcl::details::planeIntersectTolerance | ( |  | ) |
| inline

## ◆ planeIntersectTolerance< double >()

template<>

double hpp::fcl::details::planeIntersectTolerance< double > | ( |  | ) |
| inline

## ◆ planeIntersectTolerance< float >()

template<>

float hpp::fcl::details::planeIntersectTolerance< float > | ( |  | ) |
| inline

## ◆ planeTriangleIntersect()

bool hpp::fcl::details::planeTriangleIntersect | ( | const Plane & | s1,
|  | const Transform3f & | tf1,
|  | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ projectInTriangle()

bool hpp::fcl::details::projectInTriangle | ( | const Vec3f & | p1,
|  | const Vec3f & | p2,
|  | const Vec3f & | p3,
|  | const Vec3f & | normal,
|  | const Vec3f & | p
| ) |  |
| inline

Whether a point's projection is in a triangle.

## ◆ segmentSqrDistance()

FCL_REAL hpp::fcl::details::segmentSqrDistance | ( | const Vec3f & | from,
|  | const Vec3f & | to,
|  | const Vec3f & | p,
|  | Vec3f & | nearest
| ) |  |
| inline

the minimum distance from a point to a line

## ◆ sphereCapsuleDistance()

bool hpp::fcl::details::sphereCapsuleDistance | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Capsule & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | dist,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ sphereCapsuleIntersect()

bool hpp::fcl::details::sphereCapsuleIntersect | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Capsule & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f * | contact_points,
|  | Vec3f * | normal_
| ) |  |
| inline

## ◆ sphereCylinderDistance()

bool hpp::fcl::details::sphereCylinderDistance | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Cylinder & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | dist,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

Todo:
  a tiny performance improvement could be achieved using the abscissa with S as the origin

## ◆ sphereHalfspaceIntersect()

bool hpp::fcl::details::sphereHalfspaceIntersect | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Halfspace & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ spherePlaneIntersect()

bool hpp::fcl::details::spherePlaneIntersect | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Plane & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ sphereSphereDistance()

bool hpp::fcl::details::sphereSphereDistance | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Sphere & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | dist,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal
| ) |  |
| inline

## ◆ sphereSphereIntersect()

bool hpp::fcl::details::sphereSphereIntersect | ( | const Sphere & | s1,
|  | const Transform3f & | tf1,
|  | const Sphere & | s2,
|  | const Transform3f & | tf2,
|  | FCL_REAL & | distance,
|  | Vec3f * | contact_points,
|  | Vec3f * | normal
| ) |  |
| inline

## ◆ sphereTriangleDistance() [1/3]

bool hpp::fcl::details::sphereTriangleDistance | ( | const Sphere & | sp,
|  | const Transform3f & | tf,
|  | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | FCL_REAL * | dist
| ) |  |
| inline

## ◆ sphereTriangleDistance() [2/3]

bool hpp::fcl::details::sphereTriangleDistance | ( | const Sphere & | sp,
|  | const Transform3f & | tf,
|  | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | FCL_REAL * | dist,
|  | Vec3f * | p1,
|  | Vec3f * | p2
| ) |  |
| inline

## ◆ sphereTriangleDistance() [3/3]

bool hpp::fcl::details::sphereTriangleDistance | ( | const Sphere & | sp,
|  | const Transform3f & | tf1,
|  | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | const Transform3f & | tf2,
|  | FCL_REAL * | dist,
|  | Vec3f * | p1,
|  | Vec3f * | p2
| ) |  |
| inline

## ◆ sphereTriangleIntersect()

bool hpp::fcl::details::sphereTriangleIntersect | ( | const Sphere & | s,
|  | const Transform3f & | tf1,
|  | const Vec3f & | P1,
|  | const Vec3f & | P2,
|  | const Vec3f & | P3,
|  | FCL_REAL & | distance,
|  | Vec3f & | p1,
|  | Vec3f & | p2,
|  | Vec3f & | normal_
| ) |  |
| inline