38 #ifndef FCL_NARROWPHASE_DETAIL_SPHERECAPSULE_INL_H
39 #define FCL_NARROWPHASE_DETAIL_SPHERECAPSULE_INL_H
52 const Vector3<double> &p,
53 const Vector3<double> &s1,
54 const Vector3<double> &s2,
61 std::vector<ContactPoint<double>>* contacts);
67 double* dist, Vector3<double>* p1, Vector3<double>* p2);
80 }
else if (c2 <= c1) {
97 const Vector3<S> s_c = tf2.inverse(Eigen::Isometry) * tf1.translation();
109 const Vector3<S> local_normal = -diff.normalized();
113 const Vector3<S> normal = tf2.linear() * local_normal;
115 const S penetration_depth = -
distance;
117 contacts->emplace_back(normal,
point, penetration_depth);
124 template <
typename S>
131 Vector3<S> s_c = tf2.inverse(Eigen::Isometry) * tf1.translation();
147 if (dist) *dist = -1;
153 if(p1 || p2) diff.normalize();
156 *p1 = s_c - diff * s1.
radius;
162 *p2 = segment_point + diff * s2.
radius;