11 const fcl::DistanceRequest<FCL_PRECISION> &request = cdata->
request;
12 fcl::DistanceResult<FCL_PRECISION> &result = cdata->
result;
14 dist = result.min_distance;
17 if (o1->collisionGeometry() == o2->collisionGeometry()) {
23 dist = result.min_distance;
28 if (dist <= 0)
return true;
34 if (boxA.overlap(boxB)) {
35 for (std::size_t i = 0; i < 3; ++i) {
36 const S &amin = boxA.min_[i];
37 const S &amax = boxA.max_[i];
38 const S &bmin = boxB.min_[i];
39 const S &bmax = boxB.max_[i];
42 S delta = bmax - amin;
43 result += delta * delta;
44 }
else if (amax > bmin) {
45 S delta = amax - bmin;
46 result += delta * delta;
50 return std::sqrt(result);
57 const fcl::DistanceRequest<FCL_PRECISION> &request = cdata->
request;
59 fcl::DistanceResult<FCL_PRECISION> &result = cdata->
result;
61 dist = result.min_distance;
65 if (o1->collisionGeometry() == o2->collisionGeometry()) {
84 const fcl::DistanceRequest<FCL_PRECISION> &request = cdata->
request;
86 fcl::DistanceResult<FCL_PRECISION> &result = cdata->
result;
88 dist = result.min_distance;
92 if (o1->collisionGeometry() == o2->collisionGeometry()) {
97 dist = result.min_distance;
108 return std::numeric_limits<FCL_PRECISION>::max();
fcl::DistanceResult< FCL_PRECISION > result
double penetrationDepth(fcl::AABBd boxA, fcl::AABBd boxB)
ToleranceDistanceData(void)
fcl::DistanceRequest< FCL_PRECISION > request
bool toleranceDistanceFunction(fcl::CollisionObject< FCL_PRECISION > *o1, fcl::CollisionObject< FCL_PRECISION > *o2, void *cdata_, FCL_PRECISION &dist)
std::size_t distance(const CollisionObject &obj1, const CollisionObject &obj2, DistanceResult &res, const DistanceRequest &req)
FCL_PRECISION get_max_distance(void)
#define DEFAULT_DISTANCE_TOLERANCE
bool toleranceBBDistanceFunction(fcl::CollisionObject< FCL_PRECISION > *o1, fcl::CollisionObject< FCL_PRECISION > *o2, void *cdata_, FCL_PRECISION &dist)
bool defaultDistanceFunction(fcl::CollisionObject< FCL_PRECISION > *o1, fcl::CollisionObject< FCL_PRECISION > *o2, void *cdata_, FCL_PRECISION &dist)